2014-10-19 105 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