使用matlab中的condition/if替换矢量元素



我想用条件或if函数替换向量的元素。

a=[10 20 60];

如果<30=4其他a=5

结果需要看起来像这样:

b=[4 4 5]

使用logical indexing-的解决方案

cond1 = a < 30
cond2 = a > 30
b = 4.*cond1 + 5.*(cond2) + a.*(~(cond1 | cond2))

简短解释:cond1cond2基于IF-ELSE条件形成逻辑数组,用于索引并形成4 or 5的"缩放"值的数字数组,同时保留30

单行版本:如果你喜欢单行,这可能会激发你的兴趣-

b = 4.*(a < 30) + 5.*(a > 30) + a.*(~(a > 30 | a < 30))

示例#1

a =
    10    20    60    30
b =
     4     4     5    30

另一个相关的有趣问题-Matlab:使用逻辑索引删除IF-ELSE条件语句

另一个使用逻辑索引的版本:

a = [10 20 60];
b = a;
b(b < 30) = 4;
b(b >= 30) = 5;

最新更新