我在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
非常感谢!
for i=1+w:m-w
。 - Bentoy13m
、n
、l
和d
的值吗? - Eitan Tk
对计算有任何影响。就我所看到的,所有页面都是相同的->使用“repmat”。 - denahiromlint your_file_name
的输出。它会提供许多警告,告诉你应该预分配D1和D2。 - bdecafd
的值是多少?它和w
一样吗?另外,公式如何取决于k
?请仔细检查你的代码。 - Amro