我有,評估串細胞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