我想使用c风格的三元运算符,但在Matlab中,如何才能完成?
例如:
a = (test == 'yes') c : d
其中a,c和d是数字但是在Matlab中?
答案 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);