How to copy a 2d matrix along higher dims e.g. 3rd up to 6th without using for loop?

조회 수: 3 (최근 30일)
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
nima
nima 2019년 9월 23일
So sorry. I think this question is more general that previous one to solve my problem.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2019년 9월 23일
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
Matt J
Matt J 2019년 9월 23일
편집: Matt J 2019년 9월 23일
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).

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by