【问题标题】:function that replaces the negative numbers of an array with 77将数组的负数替换为 77 的函数
【发布时间】:2019-02-26 13:18:43
【问题描述】:
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 中的一个简单函数,它将数组 A 的负数替换为数字 77。是否可以不使用 for 循环而使用 find 函数来实现它?

到目前为止,我知道find(A&lt;0) 返回一个数组,其中包含数组A 的负数位置。例如A=[1 , 0 , -3; -4 , 1 , -2]find(A&lt;0) 将返回ans=[3 ,4 , 6]

【问题讨论】:

  • 诸如 A(A
  • 必须使用find?在这种情况下,A(find(A&lt;0)) = 77

标签: matlab indexing


【解决方案1】:

如果由于某种原因你真的需要使用find,我会建议你的函数是

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

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

要直接查找X 中满足条件X&lt;5 的元素,请使用X(X&lt;5)避免像 X(find(X&lt;5)) 这样不必要地在逻辑矩阵上使用 find 的函数调用。

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

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

【讨论】:

    猜你喜欢
    • 2015-12-31
    • 1970-01-01
    • 2011-12-13
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    相关资源
    最近更新 更多