我有,
labels = {'A' , 'B' , 'C'};
results =
A
A
C
.
.
B
result
是1000*1
字符,
我希望将labels
与results
进行比较,然后获取逻辑数组。
我终于找到了,
n = cellstr(results);
m = 'A';
strcmp(n,m)
有效,但我想循环播放,所以我不能m = 'A';
,它应该是m = labels(1);
,这将无效。
答案 0 :(得分: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)
是v
中labels
中存在的字符中的索引,locb(lia)
将索引转换为labels
那些元素。
答案 1 :(得分:0)
尝试这样的事情:
n = cellstr(results);
for k=1:3
m = labels(k);
strcmp(n,m);
end