Filter löschen
Filter löschen

Fast way to replicate array

3 Ansichten (letzte 30 Tage)
Thang Bui
Thang Bui am 28 Apr. 2015
Bearbeitet: Andrei Bobrov am 28 Apr. 2015
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!

Akzeptierte Antwort

Mohammad Abouali
Mohammad Abouali am 28 Apr. 2015
Bearbeitet: Mohammad Abouali am 28 Apr. 2015
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);

Weitere Antworten (2)

Jan
Jan am 28 Apr. 2015
You want to obtain W from D?
W = squeeze(D(k, :, k, :)).'
  1 Kommentar
Thang Bui
Thang Bui am 28 Apr. 2015
Bearbeitet: Thang Bui am 28 Apr. 2015
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

Melden Sie sich an, um zu kommentieren.


Andrei Bobrov
Andrei Bobrov am 28 Apr. 2015
Bearbeitet: Andrei Bobrov am 28 Apr. 2015
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]);

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by