Arrays Matlab中字符串校验元素的单元数组
在Matlab中,如果我有一个字符串单元格数组,如何检查例如第3行和第1列是否等于某个给定字符串,例如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
'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