indexing multiple values in two arrays with different size
5 views (last 30 days)
Show older comments
I have a simple problem that unfortunately I am failiing so solve (and to find solutions in internet).
Assuming I have 2 matrixes
a = [1 1 1 1 2 2 2 2 2 5 5 5; 0 0 0 0 0 0 0 0 0 0 0 0]';
b = [1 2 5; 11 12 15]';
I would like (without a for loop, that is my current, very slow implementation) to assign in a the corresponding values in the second column of b, when a(x, 1) == b(x,1). Basically the final result should be
a = [1 1 1 1 2 2 2 2 2 5 5 5; 11 11 11 11 12 12 12 12 12 15 15 15]
Thanks a lot for any help
0 Comments
Accepted Answer
madhan ravi
on 13 Feb 2019
A=sum(a(:,1)==b(:,1).');
a(:,2)=repelem(b(:,2),A).'
1 Comment
madhan ravi
on 13 Feb 2019
For version prior to 2016b:
A=sum(bsxfun(@eq,a(:,1),b(:,1).'));
a(:,2)=repelem(b(:,2),A).'
More Answers (1)
Pietro
on 14 Feb 2019
4 Comments
madhan ravi
on 15 Feb 2019
So instead of creating variable A in workspace why not directly implement it ?
a(:,2)=repelem(b(:,2),sum(a(:,1)==b(:,1).')).';
See Also
Categories
Find more on Matrix Indexing 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!