我有一個for循環在matlab程序中嵌套三次。你們能幫助我優化嗎?如何在matlab中優化嵌套for循環
w=5;
a = rand(m*n,10); b=rand(m,n);
for i = 1 : m
for j = 1 : n
for k = 1 : l
if (i-w >= 1 && i+w <= m)
featureL = a(((i-1)*n)+j,:); featureR = a(((i-1)*n)+j-d,:);
D1(i,j,k) = sqrt(sum((featureL - featureR) .* (featureL - featureR)));
D2(i,j,k) = mean2(b(i-w:i+w, j-w:j+w));
end
end
end
end
我知道使用meshgrid可以大大提高性能,但我不知道該怎麼做。
感謝您的期待。
能不能做到這樣的事情..
[X Y Z] = meshgrid(1:m,1:n,1:l);
D1(something containing X,Y,Z) = sqrt(sum((a(something cont. X,Y) - a(something cont. X,Y)).*(a(something cont. X,Y) - a(something cont. X,Y))));
% similarly D2
非常感謝!
不是一個完整的答案,但快速提示開始:通過修改最outter環這樣避免if語句:'對於i = 1 + W:MW '。 – Bentoy13 2012-07-19 11:44:17
您可以指定您正在使用的'm','n','l'和'd'的值嗎? – 2012-07-19 12:30:37
@ Bentoy13這當然是第一次改進。另外,我在計算中看不到'k'的任何影響。據我可以看到所有的頁面是相同的 - >使用'repmat'。 – denahiro 2012-07-19 12:49:11