matlab中的元素ifs - 它们是否存在?

Ann*_*naR 3 matlab if-statement elementwise-operations

假设我有以下基本if语句:

if (A ~= 0)
   % do something like divide your favorite number by A
else
   % do something like return NaN or infinity
end
Run Code Online (Sandbox Code Playgroud)

问题是A不是简单的数字而是矢量.如果A中没有元素为0,则Matlab返回true.我要找的是向量化的吗?对A中每个元素执行上述if语句的方法

实际上,我只想尽快做到这一点.

Jas*_*n S 6

矢量化ifs不存在,但有一些选项.如果要测试所有或任何元素为true,请使用all或any函数.

以下是有条件地修改矩阵值的一个示例:

b = A ~= 0;      % b is a boolean matrix pointing to nonzero indices
                 % (b could be derived from some other condition,
                 %  like b = sin(A)>0
A(b) = f(A(b))   % do something with the indices that pass
A(~b) = g(A(~b)) % do something else with the indices that fail
Run Code Online (Sandbox Code Playgroud)