【发布时间】:2017-10-13 19:58:20
【问题描述】:
如何比较两个不同大小的数组并获得一个单独的匹配值位置数组和单独的匹配值数组。
我有两个不同大小的数组
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 的空矩阵。
如果可能的话,不使用循环的任何快速简便的方法都可以加快处理速度,因为我有很多价值。
【问题讨论】:
-
这是我使用 ismember 得到的结果,但它的错误 ismember 正在复制值,我也尝试过此命令。为什么不这是最后 1 不匹配的原因我必须将 Ypos 与 Ylocknew 匹配并获得不重复的矩阵意味着 Ypos 具有值,我需要这些值以相同顺序可用的位置
标签: arrays matlab signal-processing