我有一个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