我有两个字符串A和B的单元格数组。所有B单元格都在A中。我想在A中找到B单元格的索引。谢谢。Matlab查找单元格元素
例子:
A=
'aaaa'
'bbbb'
'cccc'
'dddd'
'ffff'
B=
'ffff'
'aaaa'
ans=
5
1
或
ans=
1
5
我有两个字符串A和B的单元格数组。所有B单元格都在A中。我想在A中找到B单元格的索引。谢谢。Matlab查找单元格元素
例子:
A=
'aaaa'
'bbbb'
'cccc'
'dddd'
'ffff'
B=
'ffff'
'aaaa'
ans=
5
1
或
ans=
1
5
兼用intersect
或ismember
[~, idxInA] = intersect(A,B)
或
LocInA = find(ismember(A,B))
您需要'find(ismember(A,B))'来获得指定的答案。 – Dan
我同意,我改变了它......因此相交更好:D – Nick
+1好答案。我不知道交叉函数返回的索引。 – MZimmerman6
你可以做到这一点真的很简单,使用下面
indices = cell(size(B));
for i = 1:numel(B)
indices{i} = find(strcmpi(A,B(i)));
end
代码虽然我不建议使用ismember
或intersect
,这些解决方案不会处理不区分大小写的解决方案。此外,这些方法不会指示特定索引匹配的次数,我的解决方案将返回匹配每个比较的所有索引。
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]
我看不出你有问题
如果您可以使用'ismember'或'intersect',这很容易吗? – Nick
都很容易。这是一个没有任何研究的快速解决方案。但我同意'ismember'和'intersect'更适合这个,除非你想找到不区分大小写的匹配 – MZimmerman6
@ MZimmerman6谢谢,但它不起作用。 – Fatime
'ismember':http://www.mathworks.com/help/matlab/ref/ismember.html – Dan