【问题标题】:Change all negative values to positive values of the same magnitude (MATLAB)将所有负值更改为相同幅度的正值(MATLAB)
【发布时间】:2015-07-15 22:14:54
【问题描述】:

我有一个负值和正值矩阵,我尝试使用 if 循环将负值更改为正值:

if A(A<0)
    A = A.*(-1);
end

但它似乎什么也没做,怎么办?

【问题讨论】:

  • 路易斯忘记了=, ind = A &lt; 0; A(ind) = -A(ind);
  • @user1543042 谢谢!我意识到并删除了评论(我不能再编辑它了)

标签: matlab


【解决方案1】:

只需使用abs:

>> A = [-1,2,-3,4,-5]

A =

    -1     2    -3     4    -5

>> abs(A)

ans =

     1     2     3     4     5

【讨论】:

    【解决方案2】:

    在这里使用abs 是正确的做法,但以防万一您遇到类似(但不相同)的问题,您正在寻找的模式是这样的:

    A(A < 0) = -A(A < 0);
    

    这使用A上的logical indexing来选择否定元素并将它们取反。

    【讨论】:

    • 也许ind = A&lt;0; A(ind) = -A(ind);可以省一些操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    相关资源
    最近更新 更多