2014-09-22 125 views
0

我的系統會給出我的A/M錯誤,當我輸入少於3個字符錯誤使用==矩陣尺寸必須同意

a = input('Please type f0 or f1: ' , 's'); 

if a == 'f0'; 
    Run_f0 
elseif a == 'f1'; 
    Run_f1 
else 
    disp('Please enter f0 or f1 only'); 
end 

更多我應該怎麼做才能解決這個問題? 在此先感謝

回答

5

Matlab將比較兩個字符串的每個字符。如果一個字符串比另一個字符串長,那麼就沒有什麼可比較的,它會引發錯誤。

valid = {'f0', 'f1'} 
a = input('Please type f0 or f1: ' , 's'); 
while not(ismember(a, valid)) %// or: while not(any(strcmp(a, valid))) 
    a = input('Please really type f0 or f1: ' , 's'); 
end 

用戶將被要求輸入真「F0」或「F1」:直到他給出了一個有效的輸入您可以通過強制用戶重複輸入繞過這一點。

作爲替代方案,可以考慮到琴絃與strcmp()比較:

if strcmp(a, 'f0') 
    %// something 
elseif strmpc(a, 'f1') 
    %// something else 
else 
    disp('Please enter f0 or f1 only'); 
end 
+0

爲什麼你更喜歡在strcmp上使用ismember?或者這些答案的順序是任意的? – sobek 2014-09-22 07:19:39

+0

@sobek先生,你是對的。 ''while not(ismember(a,valid))''部分可以被重寫爲''而不是(任何(strcmp(a,valid))''兩種解決方案,因爲您必須確保輸入有效爲了與TO使用它進行比較,或者你必須使用無效輸入並確保比較有效。我儘量改變代碼以儘量減少原代碼的工作。 – Nras 2014-09-22 07:24:18

+0

Rgr,我只是在幾乎任何方式,可讀性,性能(我的身材)等方面找到了第二個解決方案。 – sobek 2014-09-22 07:31:02

1

比較字符串,你應該使用功能STRCMP

a='12345' 
strcmp('f01',a) 

返回:0(假)

a='f01' 
strcmp('f01',a) 

Retu rns:1(True)