我想使用条件或函数替换向量的元素。
a = [10 20 60];
如果< 30 = 4其他a = 5
结果需要如下所示:
b = [4 4 5]
答案 0 :(得分:5)
使用logical indexing的另一个版本:
a = [10 20 60];
b = a;
b(b < 30) = 4;
b(b >= 30) = 5;
答案 1 :(得分:4)
使用logical indexing
-
cond1 = a < 30
cond2 = a > 30
b = 4.*cond1 + 5.*(cond2) + a.*(~(cond1 | cond2))
简短说明: cond1
和cond2
根据IF-ELSE
条件构成逻辑数组,这些条件用于索引并形成&的数字数组#34;缩放&#34;值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: Remove IF-ELSE Conditional statements using Logical Indexing