我想用条件或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))
简短解释:cond1
和cond2
基于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;