2014-03-19 23 views
0

在另外一個單元陣列的指數我有兩個單元陣列,說:如何找到在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但沒有成功
注意,重複是可能的。

謝謝。

+0

如果他們像你的例子一樣刺激,那麼你可以使用'ismember':http://stackoverflow.com/questions/11562196/find-index-of-all-non-unique-elements-in-a- cell-array-as-they-appear-in-secoco – Dan

+0

總是單個字母作爲元素? – Divakar

+0

它並不總是單個字符,我會編輯以清除它 – Elisha

回答

0

在你的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 
+0

'ismember'是更乾淨:http://stackoverflow.com/questions/11562196/find-index-of-all-non-unique-elements-in-a-cell-array -as-they-in-se-seco – Dan

+0

是的,的確,你是對的 – pezetem