Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
Arrays Matlab中字符串校验元素的单元数组_Arrays_Matlab_Cell - Fatal编程技术网

Arrays Matlab中字符串校验元素的单元数组

Arrays Matlab中字符串校验元素的单元数组,arrays,matlab,cell,Arrays,Matlab,Cell,在Matlab中,如果我有一个字符串单元格数组,如何检查例如第3行和第1列是否等于某个给定字符串,例如'ABC' 例如,myArray(3,1)='ABC'给了我一个错误: 类型为“cell”的输入参数的未定义运算符“==” cw14中的错误(第19行) 如果myArray(3,1)='ABC' 这是因为您需要使用{大括号}来访问单元格数组的内容 使用(常规括号)索引实际单元格,在本例中,实际单元格包含字符串。此外,为了检查字符串的存在,我建议使用or 因此,请使用: strcmp(myArra

在Matlab中,如果我有一个字符串单元格数组,如何检查例如第3行和第1列是否等于某个给定字符串,例如
'ABC'

例如,
myArray(3,1)='ABC'
给了我一个错误:

类型为“cell”的输入参数的未定义运算符“==”

cw14中的错误(第19行)
如果myArray(3,1)='ABC'


这是因为您需要使用{大括号}来访问单元格数组的内容

使用(常规括号)索引实际单元格,在本例中,实际单元格包含字符串。此外,为了检查字符串的存在,我建议使用or

因此,请使用:

strcmp(myArray{3,1},'ABC')
检查有关索引到单元格数组的信息

编辑(以下评论)

使用逻辑
==
在单元格数组中查找for字符串是不安全的,因为使用此运算符会拆分字符串并比较构成字符串的每个字母,而不是检查整个字符串的
strcmp

考虑这段代码,我将一些字符串放入
myArray

myArray = {'A' 'B' 'ABC' 'CBA' 'ABC'}.'

myArray = 

    'A'
    'B'
    'ABC'
    'CBA'
    'ABC'
如果我们在此字符串单元格数组上应用
==
,如下所示:

Check_31 = myArray{3,1} == 'ABC'

Check_41 = myArray{4,1} == 'CB_'
Matlab返回这两个逻辑向量:

Check_31 =

     1     1     1


Check_41 =

     1     1     0
因此,正如您所看到的,字符“\u1”不是单元格{4,1}中字符串的最后一个元素

现在,如果我们使用strcmp(在整个单元格数组上;我们不需要索引特定单元格来检查是否存在字符串):

我们还得到了一个逻辑向量,但这次不是指构成单元格内字符串的3个字母,而是指单元格数组本身以及是否存在“ABC”。结果是:

Check_ABC =

     0
     0
     1
     0
     1
这是有道理的,因为“ABC”确实存在于细胞{3,1}和{5,1}中


希望这更清楚

myArray{3,1}=='ABC'工作正常,但如果我在循环中执行此操作,例如myArray{I,1}=='ABC'(在I上循环),则不会。它说矩阵尺寸必须一致。为什么它不起作用,为什么我们必须在这里使用strcmp?strcmp(myArray{i,1},'ABC')怎么样?With==您使用右侧字符数组'ABC'的所有元素测试字符数组{i,1}的每个元素。要比较'XYZ'=='ABC'给出[0],但是'XY'=='ABC'给出了错误,因为维度不一致(2与3不同)。请查看我编辑的答案。谢谢@JaBe哈哈,就是这样:)太棒了!很乐意帮忙:)
Check_ABC =

     0
     0
     1
     0
     1