用77替换数组的负数的函数

时间:2019-02-26 13:18:44

标签: matlab indexing

function Z=replacez(A)
    [M,N]=size(A);
    for i=1:M
        for j=1:N
           if A(i,j)<0
              Z(i,j)=77;
           else
              Z(i,j)=A(i,j);
           end
      end
end

这是MATLAB中的一个简单函数,用数字77替换了数组A的负数。可以不使用for循环但使用find函数来实现?

到目前为止,我知道find(A<0)返回的数组的位置为数组A的负数。例如,A=[1 , 0 , -3; -4 , 1 , -2]find(A<0)将返回{{1} }

1 个答案:

答案 0 :(得分:4)

如果出于某些原因您确实需要使用find,我建议您使用该功能

function Z = replacez(A)
  Z = A;
  Z(find(Z<0)) = 77;
end

但是您应该避免它。确实,根据Matlab的find

  

要直接在X中找到满足条件X<5的元素,请使用X(X<5)避免使用诸如X(find(X<5))之类的函数调用,而不必要在逻辑矩阵上使用find。

find在这里是多余的,您可以这样做

function Z = replacez(A)
  Z = A;
  Z(Z<0) = 77;
end