将所有负值更改为相同幅度的正值(MATLAB)

Hik*_*kul 1 matlab

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

if A(A<0)
    A = A.*(-1);
end
Run Code Online (Sandbox Code Playgroud)

但它似乎没有做任何事情,做什么?

m.s*_*.s. 9

只需使用abs:

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

A =

    -1     2    -3     4    -5

>> abs(A)

ans =

     1     2     3     4     5
Run Code Online (Sandbox Code Playgroud)


Edr*_*ric 5

使用abs是正确的做法,但是如果你遇到类似(但不完全相同)的问题,你要找的模式是这样的:

A(A < 0) = -A(A < 0);
Run Code Online (Sandbox Code Playgroud)

这将使用逻辑索引A,选择消极因素和否定他们.

  • 也许`ind = A <0; A(ind)= -A(ind);`保存一些操作 (2认同)