用于在Matlab中循环到矢量形成的性能

问题描述 投票:-1回答:1

在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)。

matlab loops for-loop vector
1个回答
1
投票

您需要使用逻辑索引:

I = A<=25;

是一个逻辑数组,它是true,其中A小于或等于25.您可以使用此数组索引到A:

A(I) = 0;

A的元素设置为0I为真。

这可以全部写成一个语句:

A(A<=25) = 0;

[我确定此前已经问过这个问题,但我发现没有重复。]

© www.soinside.com 2019 - 2024. All rights reserved.