【发布时间】:2011-11-01 21:34:24
【问题描述】:
我是 matlab 新手,所以我不知道 matlab 使代码更高效、更快的所有快捷方式。我一直在 matlab 中为家庭作业拼凑一些东西,同时专注于完成作业而不是效率。现在我发现我花在等待程序上的时间比实际编写它的时间还要多。下面是一个令人头疼的嵌套 for 循环,它需要永远完成。没有这么多的for循环,有没有更快或更有效的编码方式?
for i = 1:ysize
for j = 1:xsize
MArr = zeros(windowSize^2, 2, 2);
for i2 = i - floor(windowSize/2): i + floor(windowSize/2)
if i2 > 0 && i2 < ysize + 1
for j2 = j - floor(windowSize/2): j + floor(windowSize/2)
if j2 > 0 && j2 < xsize + 1
mat = weight*[mappedGX(i2,j2)^2, mappedGX(i2,j2)*mappedGY(i2,j2); mappedGX(i2,j2)*mappedGY(i2,j2), mappedGY(i2,j2)^2];
for i3 = 1:2
for j3 = 1:2
MArr(windowSize*(j2-(j - floor(windowSize/2))+1) + (i2-(i - floor(windowSize/2)) + 1),i3,j3) = mat(i3,j3);
end
end
end
end
end
end
Msum = zeros(2,2);
for k = size(MArr)
for i2 = 1:2
for j2 = 1:2
Msum = Msum + MArr(k,i2,j2);
end
end
end
R(i,j) = det(Msum) - alpha*(trace(Msum)^2);
R = -1 * R;
end
end
【问题讨论】:
-
请告诉我们它在做什么的要点,以便我们了解您的代码在做什么。看到名为“i、i2、i3”的变量绝不是一个好兆头......
标签: performance matlab