2015-05-11 10 views
5

Matlab'da, dizilerden oluşan bir hücre dizilim varsa, örneğin 3. sıra ve 1. sütunun belirli bir dizgeye eşit olup olmadığını nasıl kontrol edebilirim, örneğin 'ABC'? Eğer hücre dizisinin içeriğine erişmek için {süslü parantez} kullanmak gerekir, çünkü varDizelerin hücre dizisi - Matlab öğesindeki kontrol öğeleri

Undefined operator '==' for input arguments of type 'cell'.

Error in cw14 (line 19)
if myArray(3,1) == 'ABC'

cevap

9

:

Örneğin, myArray(3,1) == 'ABC' bana bir hata verir.

(Düzenli parantezler), durumunuzda bir dizgi içeren geçerli hücresini dizinlerine ekler. Ayrıca, dizelerin varlığını kontrol etmek için strcmp veya belki strfind kullanmanızı öneririz.

Dolayısıyla bu kullanın: diğer bilgiler için

strcmp(myArray{3,1},'ABC') 

kontrol here hücre diziler içine indeksleme hakkında. Bu operatörü kullanarak dizeleri böler ve bunu oluşturan her harfi karşılaştırdığı için strcmp aksine amacıyla

bir hücre diziye dizeleri bulmak için mantıklı == Kullanma (yorumların ardından)

DÜZENLEME, güvenli değil ve tüm bu dizgiyi kontrol eder. Biz dizeleri bu hücre dizisinde == uygularsanız aşağıdaki şekilde

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 bu 2 mantıksal vektörleri döndürür

ben myArray bazı dizeleri koymak bu kodu göz önünde bulundurun:

Check_31 = 

    1  1  1 


Check_41 = 

    1  1  0 

Gördüğünüz gibi, karakter "_", {4,1} hücresinde bulunan dizenin son öğesi değil.

Check_ABC = strcmp(myArray,'ABC') 

Biz de mantıklı bir vektör olsun, ama bu:; (bazı dize mevcut olup olmadığını biz kontrol etmek dizine belirli hücreleri gerekmez bütün hücre dizisinde)

Şimdi strcmp kullanırsanız hücrenin içindeki dizeyi oluşturan 3 harfe değinmeyen, ancak hücre dizisinin kendisine atıfta bulunan ve 'ABC' bulunup bulunmadığı. 'ABC' hücrelerine {3,1} ve {5,1} gerçekten de mevcut olduğu için, mantıklı

Check_ABC = 

    0 
    0 
    1 
    0 
    1 

: Sonuç şudur.

Umut daha açık!

+0

myArray {3,1} == 'ABC' iyi çalışıyor, ancak bunu bir döngüde yaparsam, örneğin myArray {i, 1} == 'ABC' (i) 'nin üzerinde döngü yapmaz. Matris boyutlarının kabul etmesi gerektiğini söylüyor. Neden çalışmıyor ve neden strcmp'i kullanmak zorundayız? – user107986

+0

Peki ya strcmp (myArray {i, 1}, 'ABC')? – JaBe

+3

== ile karakter dizisinin her bir öğesini {i, 1}, sağ taraftaki karakter dizisi 'ABC' ile test edin. 'XYZ' ile karşılaştırmak için == 'ABC' [0 0 0] verir ancak 'XY' == 'ABC' hata verir, çünkü boyutlar kabul etmez (2 ile aynı değil). – JaBe