2014-01-20 369 views

回答

6

幾個選項:

內嵌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 - 然後可以將其乘以所需結果(如果它們是數字)。

+0

雖然這是不太一樣的東西,它是足夠接近,應該把工作做好。你是否在一分鐘內回答你自己的問題? – MZimmerman6

+1

@ MZimmerman6是的,它爲我完成了工作。我只是想分享它,因爲我認爲這是相當不錯的:) – James

3

爲了提供一種替代方案:

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);