How to avoid linear indexing in operations involving matrices of different sizes
1 view (last 30 days)
Show older comments
If I carry out an operation of matrices with different sizes using indexing, the end result tends to be a column matrix with linear indexing. For example:
A = rand(3,3);
B = rand(3,2);
idx = logical([0 1 1; 0 1 1; 0 1 1]);
If I want to add A with idx indices to B, the only way I can seem to make this work is if I do:
C = A(idx) + B(:)
Is there any way to carry out the above operation and end up with a matrix the same shape as B? My initial attempt was to simply do C = A(idx) + B.
0 Comments
Accepted Answer
Stephen23
on 5 May 2023
RESHAPE is very efficient, because no data gets moved in memory:
A = rand(3,3);
B = rand(3,2);
idx = logical([0,1,1;0,1,1;0,1,1]);
C = reshape(A(idx),size(B)) + B
0 Comments
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!