从满足特定条件的向量中取出元素

时间:2015-10-12 04:00:21

标签: performance matlab vector vectorization

我有两个向量,A = [1,3,5]B = [1,2,3,4,5,6,7,8,9,10]。我希望从C=[2,4,6,7,8,9,10] B中提取A中的一些元素来获取A

我不想使用循环,因为这是来自真实数据模拟的简化问题。在实际情况中,BA很大,但B中包含<Employees> <Employee Name="Name1" Address="Address"> <Qualification Name="Degree"/> </Employee> </Employees>

2 个答案:

答案 0 :(得分:8)

以下是两种方法,

C=setdiff(B,A)

但如果在B中重复了这些值,则只会在C

中出现一次
C=B(~ismember(B,A))

将保留B中的重复值。

答案 1 :(得分:0)

使用uniquesortdiff -

的一种方法
C = [A B];

[~,~,idC] = unique(C);
[sidC,id_idC] = sort(idC);

start_id = id_idC(diff([0 sidC])==1);
out =  C(start_id(start_id>numel(A)))

样品运行 -

案例#1(问题样本):

A =
     1     3     5
B =
     1     2     3     4     5     6     7     8     9    10
out =
     2     4     6     7     8     9    10

案例#2(更通用的案例):

A =
    11    15    14
B =
    19    14     6     8     9    11    15
out =
     6     8     9    19