How to copy a 2d matrix along higher dims e.g. 3rd up to 6th without using for loop?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
Matt J
le 23 Sep 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 commentaires
Matt J
le 23 Sep 2019
Modifié(e) : Matt J
le 23 Sep 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).
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Matrices and Arrays dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!