代码之家  ›  专栏  ›  技术社区  ›  Peter

比较两个不同大小的数组,得到一个单独的匹配值数组和一个位置数组

  •  -1
  • Peter  · 技术社区  · 7 年前

    我有两个不同大小的数组

     Ylocknew = [0    1.0000   -4.3000    5.0000   -4.2000 7.0000   -7.4000    8.0000    1.0000    4.0000]
    
     Ypos         = [1     5     7     8   4]
    

    我想比较两个数组,得到另一个数组,其中包含类似的Ypos和Ylocknew值,还有另一个数组,其中包含匹配点的索引值。

    代码:

     Ypos(end:numel(Ylocknew))=inf
     R_common =Ylocknew(Ylocknew==Ypos);
     I = find(Ylocknew==Ypos);
    

    预期输出值:

    我需要2个新阵列

    Yposlocknew = [1 5 7 8 4]
    Yposloc = [2 4 6 8 10]
    

    使用的方法:

    RST_intersection = (intersect(Ylocknew,Ypos))
    
    Output for similar values :
    
    RST_intersection = [   1     5     7     8]
    

    对于指标(我已经试过):

      RST_intersection = find(intersect(Ylocknew,Ypos))
    

    结果是(这是错误的)

     RST_intersection =[  1     2     3     4]
    

    我试图这样做,但它给了我一个大小为1*0的空矩阵。

    如果可能的话,任何不使用循环的快速简单方法都可以加快这个过程,因为我有很多价值观。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Sardar Usama    7 年前

    你需要的是 intersect stable 旗帜

    [Yposlocknew, Yposloc] = intersect(Ylocknew,Ypos,'stable');
    

    find(intersect(Ylocknew,Ypos)) 一定会给你 [1 2 3 4] intersect(Ylocknew,Ypos) 为非零。