元件在Matlab中,如果我有字符串的單元陣列,如何可以檢查是否例如第三行和第一列等於某個給定的字符串,例如'ABC'
?細胞字符串數組 - 檢查在Matlab
例如,myArray(3,1) == 'ABC'
給我一個錯誤:
Undefined operator '==' for input arguments of type 'cell'.
Error in cw14 (line 19)
if myArray(3,1) == 'ABC'
元件在Matlab中,如果我有字符串的單元陣列,如何可以檢查是否例如第三行和第一列等於某個給定的字符串,例如'ABC'
?細胞字符串數組 - 檢查在Matlab
例如,myArray(3,1) == 'ABC'
給我一個錯誤:
Undefined operator '==' for input arguments of type 'cell'.
Error in cw14 (line 19)
if myArray(3,1) == 'ABC'
那是因爲你需要使用{大括號}爲了訪問單元陣列的內容。
使用(正方括號)索引實際的單元格,在您的情況下,它包含一個字符串。此外,爲了檢查是否存在字符串,我推薦使用strcmp或strfind。
因此使用此:
strcmp(myArray{3,1},'ABC')
檢查here的相關信息有關索引爲單元格陣列。
編輯(以下評論)
爲了使用邏輯==
找到字符串成一個單元陣列是不是安全的,因爲使用此運算拆分字符串,每個字母形成它進行比較,而不是strcmp
和類似的東西,檢查整個字符串。如果我們的字符串這個單元陣列上應用==
myArray = {'A' 'B' 'ABC' 'CBA' 'ABC'}.'
myArray =
'A'
'B'
'ABC'
'CBA'
'ABC'
如下:
考慮以下代碼,在這裏我把一些字符串到myArray
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}確實存在。
希望這是更清晰!
myArray的{3,1} ==「ABC」工作正常,但如果我做一個循環,例如myArray的{1,1} ==「ABC」(遍歷我)沒有。它說矩陣尺寸必須一致。爲什麼它不起作用,爲什麼我們必須在這裏使用strcmp? – user107986
strcmp(myArray {i,1},'ABC')呢? – JaBe
用==測試字符數組{i,1}的每個元素與右側字符數組'ABC'的所有元素。比較'XYZ'=='ABC'給出[0 0 0]但'XY'=='ABC'給出錯誤,因爲尺寸不一致(2與3不同)。 – JaBe