Help me vectorize this code
    6 vues (au cours des 30 derniers jours)
  
       Afficher commentaires plus anciens
    
for x=1:1:rows
for y=1:1:cols
    RE_p(y,x) = RE(y,x,bestori_map(y,x));
    RO_p(y,x) = RO(y,x,bestori_map(y,x));
end
end
- RE, RO: arrays of size cols*rows*8;
- bestori_map: array of size cols*rows;
what is the best way (and/or fastest) to vectorize this piece of code withouth the need of for cycles ?
Thank you
2 commentaires
Réponse acceptée
  Andrei Bobrov
      
      
 le 8 Nov 2013
        s = size(RE);
[ii,jj] = ndgrid(1:s(1),1:s(2));
ij = sub2ind(s,ii(:),jj(:),bestori_map(:));
RE_p = reshape(RE(ij),s(1:2));
RO_p = reshape(RO(ij),s(1:2));
Plus de réponses (1)
  Walter Roberson
      
      
 le 7 Nov 2013
        
      Modifié(e) : Andrei Bobrov
      
      
 le 8 Nov 2013
  
      [X, Y] = ndgrid(1:rows, 1:cols);
X = X(:);
Y = Y(:);
Z = reshape( bestori_map(1:rows,1:cols), [], 1);
linidx = sub2ind(size(RE), X,Y,  Z);
RE_p(1:rows,1:cols ) = reshape(RE(linidx),rows, cols );
linidx = sub2ind(size(RO), X, Y, Z);
RO_p(1:rows,1:cols) = reshape(RO(linidx),rows, cols, );
Note: if RE and RO are the same size then you can re-use linidx instead of re-calculating it.
4 commentaires
Voir également
Catégories
				En savoir plus sur Software Development Tools 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!




