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

时间:2017-10-13 19:58:21

标签: arrays matlab signal-processing

如何比较两个不同大小的数组并获得匹配值位置的单独数组,以及匹配值的单独数组。

我有两个不同大小的数组

 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]

对于Indicies(我试过):

  RST_intersection = find(intersect(Ylocknew,Ypos))

结果是(这是错误的)

 RST_intersection =[  1     2     3     4]

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

任何快速简便的方法都可以在不使用循环的情况下执行此操作,如果可能的话,可以加快进程,因为我有很多值。

1 个答案:

答案 0 :(得分:1)

此处您需要的是intersect stable标记。

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

find(intersect(Ylocknew,Ypos))肯定会给您[1 2 3 4],因为intersect(Ylocknew,Ypos)的所有元素都不为零。