2013-08-05 148 views
1

我有两个字符串A和B的单元格数组。所有B单元格都在A中。我想在A中找到B单元格的索引。谢谢。Matlab查找单元格元素

例子:

A= 
'aaaa' 
'bbbb' 
'cccc' 
'dddd' 
'ffff' 

B= 
'ffff' 
'aaaa' 

ans= 
    5 
    1 

ans= 
    1 
    5 
+2

'ismember':http://www.mathworks.com/help/matlab/ref/ismember.html – Dan

回答

5

兼用intersectismember

[~, idxInA] = intersect(A,B) 

LocInA = find(ismember(A,B)) 
+1

您需要'find(ismember(A,B))'来获得指定的答案。 – Dan

+0

我同意,我改变了它......因此相交更好:D – Nick

+0

+1好答案。我不知道交叉函数返回的索引。 – MZimmerman6

1

你可以做到这一点真的很简单,使用下面

indices = cell(size(B)); 
for i = 1:numel(B) 
    indices{i} = find(strcmpi(A,B(i))); 
end 

代码虽然我不建议使用ismemberintersect,这些解决方案不会处理不区分大小写的解决方案。此外,这些方法不会指示特定索引匹配的次数,我的解决方案将返回匹配每个比较的所有索引。

UPDATE

代码我正在测试这个。

A={'aaaa','bbbb','cccc','dddd','ffff','aaaa'}; 
B={'ffff','aaaa','cccc','qwerty'}; 
indices = cell(size(B)); 
for i = 1:numel(B) 
    indices{i} = find(strcmpi(A,B(i))); 
end 
indices 

它返回以下

indices = 

    [5] [1x2 double] [3] [1x0 double] 

我看不出你有问题

+0

如果您可以使用'ismember'或'intersect',这很容易吗? – Nick

+2

都很容易。这是一个没有任何研究的快速解决方案。但我同意'ismember'和'intersect'更适合这个,除非你想找到不区分大小写的匹配 – MZimmerman6

+0

@ MZimmerman6谢谢,但它不起作用。 – Fatime