比较两个不同大小的数组并获得 1 个单独的匹配值数组和 1 个位置

compare two different sized arrays and get a 1 separate array of matched values and 1 of locations

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

我有两个不同大小的数组

 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 的空矩阵。

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

这里你只需要 intersectstable 标志。

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

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