我有,评估串细胞MATLAB
result
是1000*1
焦炭,
我想比较的labels
与results
并获得逻辑阵列。
我终于发现,
n = cellstr(results);
m = 'A';
strcmp(n,m)
的作品,但我想这样做在一个循环中,所以我不能有m = 'A';
,它应该是m = labels(1);
,这是行不通的。
我有,评估串细胞MATLAB
result
是1000*1
焦炭,
我想比较的labels
与results
并获得逻辑阵列。
我终于发现,
n = cellstr(results);
m = 'A';
strcmp(n,m)
的作品,但我想这样做在一个循环中,所以我不能有m = 'A';
,它应该是m = labels(1);
,这是行不通的。
尝试是这样的:
n = cellstr(results);
for k=1:3
m = labels(k);
strcmp(n,m);
end
使用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
中存在的字符也存在于labels
和locb(lia)
中,这些元素的索引号为labels
。
为什么不使用'ismember'函数? – NKN 2014-10-19 19:30:54
@NKN,我试过,但我无法弄清楚。你可以举一个例子来说明上面的数组吗? – Rashid 2014-10-19 19:32:41