How to map one array elements to another array elements?

조회 수: 22(최근 30일)
I have an output array which shows to which feeder the animal goes in each trial for 6 trials. There could be only 4 feeders(1,2,3,4)
feederNum = [1 2 2 4 3 1]
The corresponding concentration of reward at the feeders are
feeder1 : 40, feeder2 : 30, feeder3: 20, feeder4: 10
I want to get the corresponding concentraions for the feederNum array. So my desired output is
conc = [40 30 30 10 20 40]
I am wondering if there is any key-value like feature to achieve this?

채택된 답변

Stephen23 2022년 7월 29일
편집: Stephen23 2022년 7월 29일
Method one: indexing:
num = [1,2,2,4,3,1];
val = [40,30,20,10];
out = val(num)
out = 1×6
40 30 30 10 20 40
Method two: interpolation:
out = interp1(val,num)
out = 1×6
40 30 30 10 20 40

추가 답변(1개)

dpb 2022년 7월 29일
편집: dpb 2022년 7월 29일
>> awardCoef=[-10,50];
>> conc=polyval(awardCoef,feederNum)
conc =
40 30 30 10 20 40
More generically if isn't a polynomial (linear in this case) relationship, use lookup tables...
Here award can be anything for each; just has to have a 1:1 entry to the number of values in feederNum -- and, of course the values of feederNum are from 1:numel(feederNum) since MATLAB arrays are one-based indexing.
If must change the numbering system to not be 1:N, then interp1 with the 'nearest' option can be used as the lookup table; same identical idea but not a direct array indexing operation.



Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by