Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab:如何检查长度字符串是否超过某个数字_Matlab_Matlab Figure_Matlab Deployment_Matlab Compiler - Fatal编程技术网

Matlab:如何检查长度字符串是否超过某个数字

Matlab:如何检查长度字符串是否超过某个数字,matlab,matlab-figure,matlab-deployment,matlab-compiler,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://ww

我想检查超过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=

比如说,我想要

ans = 

1
1
1

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

这将为您提供:

a =

   68   57   83

ans =

   1
   1
   1

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

这将为您提供:

a =

   68   57   83

ans =

   1
   1
   1

< @ Huruun-TunTo提到,如果不需要一个<代码>,<代码>如果只考虑它返回的矩阵的第一个元素,因此只给你一个值。

但实际上,您可以通过使用匿名函数在您的
cellfun
中完成这一切:

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

P< >

> @ Haluun-TunTo提到,如果不需要一个<代码>,<代码>如果只考虑它返回的矩阵的第一个元素,因此只给你一个值。

但实际上,您可以通过使用匿名函数在您的
cellfun
中完成这一切:

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

并一次性得到结果。

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

b(a==a)='0'  
b(a>20)='1'
第一行初始化结果数组,其中所有值
b
默认为
else
分支的值,即
'0'
, 第二行将条件
>20
保存的元素更改为
然后
分支中的值,即
'1'

如果输出值为布尔值,则只需执行以下操作:

(a>20)

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

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

b(a==a)='0'  
b(a>20)='1'
第一行初始化结果数组,其中所有值
b
默认为
else
分支的值,即
'0'
, 第二行将条件
>20
保存的元素更改为
然后
分支中的值,即
'1'

如果输出值为布尔值,则只需执行以下操作:

(a>20)
按照@herohuyongtao的建议或使用@Dan的答案