Matlab:如何检查长度超过一定数量的字符串

时间:2014-02-28 06:20:11

标签: matlab matlab-figure matlab-deployment matlab-compiler

我想检查字符串长度超过20个字符,如果超过20则返回1,否则以矩阵形式返回0 [n x 1]。但是现在,我得到了[1x1]的答案。如何修改if-else语句中的代码以获取ans?

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 个答案:

答案 0 :(得分:3)

在Matlab中,您可以简单地使用(不需要if语句):

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

这会给你:

a =

   68   57   83

ans =

   1
   1
   1

答案 1 :(得分:3)

由于matlab中没有等效的三元运算符(?:),您可以使用以下两个语句来替换if then else语句,并实现您的要求:

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

第一行初始化结果数组,其中所有值b默认为else分支的值,即'0', 第二行将条件> 20所持有的元素更改为then分支中的值,即'1'

如果输出值是布尔值,您只需执行:

(a>20)

正如@herohuyongtao建议或使用@Dan的答案。

答案 2 :(得分:2)

正如@herohuyongtao所提到的,你实际上并不需要ifif只会考虑它返回的矩阵的第一个元素,因此只给你一个值。

但是你可以通过使用匿名函数在cellfun中实现这一切:

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

一次性获得结果。