A = {'A'; 'E'; 'A'; 'F'};
B = {'A';'B';'C';'D';'E'; 'F'};
我试图获得在单元阵列的每个串A
,在单元阵列字符串匹配索引B
。 A
将有反复值, B
不会。
find(ismember(B, A) == 1)
输出
1
5
6
但我想
1
5
1
6
优选在一个衬里。 我不能代替使用STRCMP ismember的无论是作为载体的大小不同。
载体实际上将包含日期字符串,我需要索引不是一个逻辑索引矩阵,我感兴趣的是使用它的索引数。
我该怎么做?
你翻转的论点ismember
,并使用第二个输出参数:
[~,loc]=ismember(A,B)
loc =
1
5
1
6
第二输出告诉您的元素A
是在B
。
如果你是非常严格的限制合作,你可以有多少线在你的代码,并且在没有位置上发射谁强加这些限制的经理,你可能想要访问的第二输出ismember
直接。 为了做到这一点,您可以创建以下的辅助功能,可以直接访问功能的第i个输出
function out = accessIthOutput(fun,ii)
%ACCESSITHOUTPUT returns the i-th output variable of the function call fun
%
% define fun as anonymous function with no input, e.g.
% @()ismember(A,B)
% where A and B are defined in your workspace
%
% Using the above example, you'd access the second output argument
% of ismember by calling
% loc = accessIthOutput(@()ismember(A,B),2)
%# get the output
[output{1:ii}] = fun();
%# return the i-th element
out = output{ii};
文章来源: Find index of all (non-unique) elements in a cell array as they appear in a second (sorted and unique) cell array