![](/img/trans.png)
[英]Locating rows which share same strings and other elements in a cell array in MATLAB
[英]Cell array of strings - check elements in Matlab
在Matlab中,如果我有一個字符串的單元格數組,我如何檢查例如第3行和第1列是否等於某個給定的字符串,例如'ABC'
?
例如, myArray(3,1) == 'ABC'
給我一個錯誤:
未定義的運算符'=='表示'cell'類型的輸入參數。
cw14錯誤(第19行)
如果myArray(3,1)=='ABC'
那是因為您需要使用{花括號}才能訪問單元格數組的內容 。
使用(常規括號)索引實際單元格 ,在您的情況下包含一個字符串。 此外,為了檢查字符串的存在,我建議使用strcmp或strfind 。
因此使用此:
strcmp(myArray{3,1},'ABC')
請在此處查看有關索引到單元格數組的信息。
編輯 (以下評論)
使用logical ==
來查找字符串到單元格數組是不安全的,因為使用此運算符會拆分字符串並比較形成它的每個字母,而不是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返回這2個邏輯向量:
Check_31 =
1 1 1
Check_41 =
1 1 0
如您所見,字符“_”不是單元格{4,1}中存在的字符串的最后一個元素。
現在,如果我們使用strcmp
(在整個單元陣列上;我們不需要索引特定的單元格來檢查是否存在某些字符串):
Check_ABC = strcmp(myArray,'ABC')
我們也得到一個邏輯向量,但這次不是指在單元格內形成字符串的3個字母,而是指單元格數組本身以及是否存在“ABC”。 結果是這樣的:
Check_ABC =
0
0
1
0
1
這是有道理的,因為'ABC'確實存在於單元格{3,1}和{5,1}中。
希望更清楚!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.