Vectorization of multiple embedded for loops
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Keith
il 24 Ott 2013
Commentato: Andrei Bobrov
il 25 Ott 2013
I have the following code that includes 3 iterated for loops in order to create an upper diagonal matrix, I plan on performing on large data set many times and want to make as computationally efficient as possible.
data = magic(3);
n = size(data,1);
W = zeros(n,n);
for i = 1:n
for j = i:n
if i==j
www(i,j)=0;
else
for k = 1:n
temp(1,k) = (data(i,k)-data(j,k))^2;
sumTemp = sumTemp + temp(1,k);
end
W(i,j)=sqrt(sumTemp);
end
temp = 0;
sumTemp = 0;
end
end
Answer should look like:
[0 6.4807 9.7980
0 0 6.4807
0 0 0]
I am working it hard right now, but figure I would throw it out there in case anyone has any suggestions that would save me hours of fiddling around. Thanks in advance.
Keith
0 Commenti
Risposta accettata
Andrei Bobrov
il 24 Ott 2013
W = triu(squeeze(sqrt(sum(bsxfun(@minus,data,permute(data,[3 2 1])).^2,2))));
2 Commenti
Andrei Bobrov
il 25 Ott 2013
Hi Keith! Full vectoring is not always the best solution. About efficient training: I think, this site and documentation for MATLAB.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Annotations in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!