How to copy a 2d matrix along higher dims e.g. 3rd up to 6th without using for loop?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
nima
el 23 de Sept. de 2019
Comentada: nima
el 24 de Sept. de 2019
In general how we can copy an N-dim matrix along higher dims (N+1, N+2, ..) without for loop?
I'm sure we can use repmat to copy a 2D matrix a 3 times along the 3rd dim e.g. (a,[1 1 3]) but I don't know can it work for higher dims.
2 comentarios
Respuesta aceptada
Matt J
el 23 de Sept. de 2019
repmat can be used to copy along more than one dimension, e.g.,
>> repmat(3,4,5)
ans =
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
3 3 3 3 3
The real question is why you would want to do that. You would be consuming more memory without storing any new information. For most purposes, repmat can be avoided.
3 comentarios
Matt J
el 23 de Sept. de 2019
Editada: Matt J
el 23 de Sept. de 2019
repmat is not necessary for that. It is far more efficient to reshape this into a matrix-vector multiplication:
[L,M,N,P]=size(b);
B=reshape(b,L*M,N*P);
C=a(:).'*B;
c=reshape(C,L,M);
Note that this involves neither for-loops nor data copying (reshape does not copy any data).
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrices and Arrays 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!