I have a matrix W of size ExF, and I have a matrix D of size NxFxNxE where D(n,:,n,:) = W'
Is there a fast way to replicate W to form D without having to loop through N
Thanks!

 채택된 답변

Mohammad Abouali
Mohammad Abouali 2015년 4월 28일
편집: Mohammad Abouali 2015년 4월 28일

0 개 추천

w=[1 2; ...
3 4; ...
5 6];
N=5;
E=size(w,1);
F=size(w,2);
D=repmat(reshape(w',1,F,1,E),N,1,N,1);

추가 답변 (2개)

Jan
Jan 2015년 4월 28일

0 개 추천

You want to obtain W from D?
W = squeeze(D(k, :, k, :)).'

댓글 수: 1

Thang Bui
Thang Bui 2015년 4월 28일
편집: Thang Bui 2015년 4월 28일
Nope, obtain D from W, the loop version looks roughly like this
D = zeros(N,F,N,E);
for n = 1:N
D(n,:,n,:) = W'; % perhaps need permute here
end

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

Andrei Bobrov
Andrei Bobrov 2015년 4월 28일
편집: Andrei Bobrov 2015년 4월 28일

0 개 추천

i1 = bsxfun(@plus,[0;N]+1,(0:N-1)*(2*N+1));
i2 = bsxfun(@plus,i1,reshape((0:F)*i1(end),1,1,[]));
D = zeros(N,F,N,E);
D(i2) = permute(repmat(W,[1,1,N]),[2,3,1]);

카테고리

도움말 센터File Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

질문:

2015년 4월 28일

편집:

2015년 4월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by