如何比较两个不同大小的数组并获得匹配值位置的单独数组,以及匹配值的单独数组。
我有两个不同大小的数组
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的空矩阵。
任何快速简便的方法都可以在不使用循环的情况下执行此操作,如果可能的话,可以加快进程,因为我有很多值。
答案 0 :(得分:1)
此处您需要的是intersect
stable
标记。
[Yposlocknew, Yposloc] = intersect(Ylocknew,Ypos,'stable');
find(intersect(Ylocknew,Ypos))
肯定会给您[1 2 3 4]
,因为intersect(Ylocknew,Ypos)
的所有元素都不为零。