簡體   English   中英

字符串的單元格數組 - 在Matlab中檢查元素

[英]Cell array of strings - check elements in Matlab

在Matlab中,如果我有一個字符串的單元格數組,我如何檢查例如第3行和第1列是否等於某個給定的字符串,例如'ABC'

例如, myArray(3,1) == 'ABC'給我一個錯誤:

未定義的運算符'=='表示'cell'類型的輸入參數。

cw14錯誤(第19行)
如果myArray(3,1)=='ABC'

那是因為您需要使用{花括號}才能訪問單元格數組的內容

使用(常規括號)索引實際單元格 ,在您的情況下包含一個字符串。 此外,為了檢查字符串的存在,我建議使用strcmpstrfind

因此使用此:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM