2014-10-19 109 views
2

我有,評估串細胞MATLAB

result1000*1焦炭

我想比較的labelsresults並獲得邏輯陣列。

我終於發現,

n = cellstr(results); 
m = 'A'; 
strcmp(n,m) 

的作品,但我想這樣做在一個循環中,所以我不能有m = 'A';,它應該是m = labels(1);,這是行不通的。

+0

爲什麼不使用'ismember'函數? – NKN 2014-10-19 19:30:54

+0

@NKN,我試過,但我無法弄清楚。你可以舉一個例子來說明上面的數組嗎? – Rashid 2014-10-19 19:32:41

回答

0

嘗試是這樣的:

n = cellstr(results); 

for k=1:3 
    m = labels(k); 
    strcmp(n,m); 
end 
2

使用ismember像這樣(v就像cellstr(result)你的情況):

>> labels = {'A' , 'B' , 'C'}; 
>> v = cellstr(char(randi(15,20,1)+64)).' %' uni. random sample of letters from A to O 

v = 

    Columns 1 through 10 

    'M' 'D' 'I' 'J' 'A' 'J' 'F' 'A' 'H' 'C' 

    Columns 11 through 20 

    'B' 'D' 'C' 'C' 'A' 'J' 'E' 'I' 'K' 'H' 

>> [lia,locb] = ismember(v,labels) 

lia = 

    Columns 1 through 12 

    0  0  0  0  1  0  0  1  0  1  1  0 

    Columns 13 through 20 

    1  1  1  0  0  0  0  0 


locb = 

    Columns 1 through 12 

    0  0  0  0  1  0  0  1  0  3  2  0 

    Columns 13 through 20 

    3  3  1  0  0  0  0  0 

這可能有助於澄清輸出:

>> v(lia) 

ans = 

    'A' 'A' 'C' 'B' 'C' 'C' 'A' 

>> labels(locb(lia)) 

ans = 

    'A' 'A' 'C' 'B' 'C' 'C' 'A' 

在其他作品中,find(lia)是ind在v中存在的字符也存在於labelslocb(lia)中,這些元素的索引號爲labels