Vectorization of multiple embedded for loops
1 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Andrei Bobrov
2013-10-24
W = triu(squeeze(sqrt(sum(bsxfun(@minus,data,permute(data,[3 2 1])).^2,2))));
2 个评论
Andrei Bobrov
2013-10-25
Hi Keith! Full vectoring is not always the best solution. About efficient training: I think, this site and documentation for MATLAB.
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!