How to map one array elements to another array elements?
57 views (last 30 days)
Show older comments
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 on 29 Jul 2022
Edited: Stephen23 on 29 Jul 2022
Method one: indexing:
num = [1,2,2,4,3,1];
val = [40,30,20,10];
out = val(num)
Method two: interpolation:
out = interp1(val,num)
More Answers (1)
dpb on 29 Jul 2022
Edited: dpb on 29 Jul 2022
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.
Find more on Parallel Link Design in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!