在Matlab中处理循环到矢量形成时遇到了一些麻烦。这是图像处理部分。(关于控制光线)我的orignal soruce代码如下。
for i=1:1:p1
for j=1:q1
if A(i,j) <=25
A(i,j) =0;
end
end
end
如何将此代码更改为vector以提高性能?我已经检查了这个网址(https://mathworks.com/help/matlab/matlab_prog/vectorization.html)。
您需要使用逻辑索引:
I = A<=25;
是一个逻辑数组,它是true
,其中A
小于或等于25.您可以使用此数组索引到A:
A(I) = 0;
将A
的元素设置为0
,I
为真。
这可以全部写成一个语句:
A(A<=25) = 0;
[我确定此前已经问过这个问题,但我发现没有重复。]