2014-02-28 49 views
1

我想檢查字符串長度超過20個字符,如果大於20則返回1,否則以矩陣形式返回0 [n x 1]。但是現在,我得到了[1x1]的答案。如何在if-else語句中修改我的代碼以獲取答案?Matlab:如何檢查長度超過某個數字的字符串

str = {'http://www.mathworks.com/matlabcentral/newsreader/view_thread/324182', 
    'http://jitkomut.lecturer.eng.chula.ac.th/matlab/text.html', 
    'http://www.ee.ic.ac.uk/pcheung/teaching/ee2_signals/Introduction%20to%20Matlab2.pdf'}; 

a = cellfun(@length,str) 

if a > 20 
'1' 
else 
'0' 
end 

輸出: A =

68 
57 
83 


ans = 

1 

我想要的輸出,可以說

ans = 

1 
1 
1 

回答

3

在Matlab中,你可以簡單地使用(不需要if發言):

a = cellfun(@length,str) 
(a>20)' 

這會給你:

a = 

    68 57 83 

ans = 

    1 
    1 
    1 
2

由於@herohuyongtao提到,你實際上並不需要一個if,該if將只考慮它返回的矩陣的第一要素,因此給你只有一個值。

但你實際上可以通過使用匿名函數做這一切在你的cellfun

cellfun(@(x)(length(x) > 20), str) 

而在一杆得到的結果。 ?

3

,因爲在沒有MATLAB的C三元運算符的當量(:),你可以使用下面的兩個語句來代替你的if then else聲明,並達到你要求什麼:

b(a==a)='0' 
b(a>20)='1' 

第一行初始化結果數組,其中所有值b默認爲else分支的值,即'0', 第二行將條件爲> 20的元素更改爲then分支中的值,即'1'

如果輸出值是布爾值,你可以簡單地做:

(a>20) 

爲@herohuyongtao建議或使用@丹的答案。

相關問題