Effacer les filtres
Effacer les filtres

Fast way to replicate array

3 vues (au cours des 30 derniers jours)
Thang Bui
Thang Bui le 28 Avr 2015
Modifié(e) : Andrei Bobrov le 28 Avr 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!

Réponse acceptée

Mohammad Abouali
Mohammad Abouali le 28 Avr 2015
Modifié(e) : Mohammad Abouali le 28 Avr 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);

Plus de réponses (2)

Jan
Jan le 28 Avr 2015
You want to obtain W from D?
W = squeeze(D(k, :, k, :)).'
  1 commentaire
Thang Bui
Thang Bui le 28 Avr 2015
Modifié(e) : Thang Bui le 28 Avr 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

Connectez-vous pour commenter.


Andrei Bobrov
Andrei Bobrov le 28 Avr 2015
Modifié(e) : Andrei Bobrov le 28 Avr 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]);

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!

Translated by