How to avoid linear indexing in operations involving matrices of different sizes
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
deathtime
el 5 de Mayo de 2023
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 comentarios
Respuesta aceptada
Stephen23
el 5 de Mayo de 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 comentarios
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!