在另外一個單元陣列的指數我有兩個單元陣列,說:如何找到在MATLAB
a = {'ci' 'fox' 'a' 'd' 'fox' 'b' 'a'}
b = {'a' 'b' 'ci' 'd' 'e' 'fox'}
,我需要找到的元素b
指數在a
。
即我想要得到這樣的結果:
result = [3 6 1 4 6 2 1]
我試着使用INTERSECT
但沒有成功
注意,重複是可能的。
謝謝。
在另外一個單元陣列的指數我有兩個單元陣列,說:如何找到在MATLAB
a = {'ci' 'fox' 'a' 'd' 'fox' 'b' 'a'}
b = {'a' 'b' 'ci' 'd' 'e' 'fox'}
,我需要找到的元素b
指數在a
。
即我想要得到這樣的結果:
result = [3 6 1 4 6 2 1]
我試着使用INTERSECT
但沒有成功
注意,重複是可能的。
謝謝。
爲Dan說,這是重複的:
Find index of all (non-unique) elements in a cell array as they appear in a second (sorted and unique) cell array
的(好)答案有:
[~,loc]=ismember(a,b)
在你的result = [3 6 1 4 -1 2]
你做了一個錯誤,包括'a'和no'b'的發生? 假設你正在服用只有B成員的第一次出現在:
a = {'ci' 'fox' 'a' 'd' 'b' 'a'}
b = {'a' 'b' 'ci' 'd' 'e' 'fox'}
result = ones(1,length(a))*-1;
for ii=1:length(b)
tmp = find(strcmp(a,b(ii)));
if (tmp > 0)
result(ii) = tmp(1);
end
end
result
如果他們像你的例子一樣刺激,那麼你可以使用'ismember':http://stackoverflow.com/questions/11562196/find-index-of-all-non-unique-elements-in-a- cell-array-as-they-appear-in-secoco – Dan
總是單個字母作爲元素? – Divakar
它並不總是單個字符,我會編輯以清除它 – Elisha