考虑行向量A和行向量B.例如:
A = [1 2 3 7 8 10 12];
B = [1 1 2 2 2 3 5 6 6 7 7 7 8 8 10 10 10 11 12 12 12 13 15 16 18 19];
A先前已被检查为B的子集。通过子集,我特别指的是A中的所有元素都可以在B中找到。我知道A中的元素不会重复。但是,B中的元素可以随意重复多次或多次。我使用以下方法检查了这个条件:
is_subset = all(ismember(A,B));
完成所有这些后,我需要知道B中A元素的索引,包括这些元素在B中重复的时间。对于上面的示例A和B,输出将是:
C = [1 2 3 4 5 6 10 11 12 13 14 15 16 17 19 20 21];
答案 0 :(得分:5)
答案 1 :(得分:0)
您可以找到A与B的每个元素的差异,并获得所需的索引。如下所示:
A = [1 2 3 7 8 10 12];
B = [1 1 2 2 2 3 5 6 6 7 7 7 8 8 10 10 10 11 12 12 12 13 15 16 18 19];
C = [1 2 3 4 5 6 10 11 12 13 14 15 16 17 19 20 21];
tol = 10^-3 ;
N = length(A) ;
iwant = cell(N,1) ;
for i = 1:N
idx = abs(A(i)-B)<=tol ;
iwant{i} = find(idx) ;
end
iwant = [iwant{:}] ;