在matlab中使用condition / if替换向量元素

时间:2014-08-28 10:53:10

标签: matlab vector replace conditional-statements

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

a = [10 20 60];

如果< 30 = 4其他a = 5

结果需要如下所示:

b = [4 4 5]

2 个答案:

答案 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))

简短说明: cond1cond2根据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