matlab有三元运算符吗?

时间:2014-01-20 14:57:40

标签: matlab

我想使用c风格的三元运算符,但在Matlab中,如何才能完成?

例如:

a = (test == 'yes') c : d

其中a,c和d是数字但是在Matlab中?

2 个答案:

答案 0 :(得分:10)

有两种选择:

内联if语句

a = (test == 'yes') * c;

内联if else声明

a = (test == 'yes') * c + (test ~= 'yes') * d;

或更整洁:

t = test == 'yes'; a = t * c + ~t * d;

这适用于数字情况,因为test == 'yes'被转换为0或1,具体取决于它是否为真 - 然后可以乘以期望的结果(如果它们是数字)。

答案 1 :(得分:4)

提供替代方案:

t = xor([false true], isequal(test, 'yes')) * [c; d]

或者如果你想要

ternary = @(condition, trueValue, falseValue)...
    xor([false true], condition) * [trueValue; falseValue];

...

t = ternary(isequal(test, 'yes'), c, d);