Cry*_*ius 1 matlab replace vector conditional-statements
我想使用条件或if函数替换向量的元素。
a = [10 20 60];
如果a <30 = 4否则a = 5
结果需要如下所示:
b = [4 4 5]
解决方案使用logical indexing-
cond1 = a < 30
cond2 = a > 30
b = 4.*cond1 + 5.*(cond2) + a.*(~(cond1 | cond2))
Run Code Online (Sandbox Code Playgroud)
简短说明: cond1并cond2根据IF-ELSE条件形成逻辑数组,用于索引并形成 的“缩放”值的数值数组4 or 5,同时保持30.
单线版:如果您喜欢单线版,这可能会引起您的兴趣-
b = 4.*(a < 30) + 5.*(a > 30) + a.*(~(a > 30 | a < 30))
Run Code Online (Sandbox Code Playgroud)
示例#1
a =
10 20 60 30
b =
4 4 5 30
Run Code Online (Sandbox Code Playgroud)
另一个相关的有趣问题 - Matlab:使用逻辑索引删除 IF-ELSE 条件语句
使用逻辑索引的另一个版本:
a = [10 20 60];
b = a;
b(b < 30) = 4;
b(b >= 30) = 5;
Run Code Online (Sandbox Code Playgroud)