我的会员只取第一个数字

  • 本文关键字:第一个 数字 matlab
  • 更新时间 :
  • 英文 :


如果我有两个数组

A=[5 5 7 8]
B=[5 7 7]

我想要B在A中的所有位置,除非它们在A中被复制,那么我只想要第一个。这意味着我想要作为输出:

C=[1 3 3]; %indexes

因为5在A中的位置1,而我只想要第一个。数字7在阵列A中的位置3,并且在阵列B中出现两次。这样:A(C(=B

我尝试了下面的代码,但它只处理在A中出现可复制品的情况下获取第一个。不幸的是,它还删除了可复制品在B中的位置。

[ifM,posfM]=ismember(A,B);%find position where B is in A
nuls=find(posfM==0);%positions where this is not the case
[Ci,iafM,ic] = unique(posfM);% make sure the same number is only selected once (A=[1 1 2 3],B=[1 3] creates three numbers if ismember(A,B) and we only need two) 
posnuls=ismember(iafM,nuls);
iafM(posnuls)=[];
fBM=fMag(iafM);

只需在B上循环,就可以为B中的每个元素找到其第一次出现的索引:

>> C = arrayfun(@(x) find(A==x,1),B);

相关内容

  • 没有找到相关文章