【问题标题】:Intersect between two vectors but should have the same index在两个向量之间相交但应该具有相同的索引
【发布时间】:2015-04-15 11:22:57
【问题描述】:

我正在尝试获取两个向量之间的交集,但两个向量中的索引应该相同。例如: x = [1 2 3 4 5 6 7 80 9 100 11 12 103 14 150 16 170 18 20 19] y = [22 1 3 40 5 4 70 8 90 10 110 12 13 140 15 160 17 18 19 20] 交集应仅为 [3 5 12 18]。

我的代码:

x = [1  2 3  4  5 6 7  80 9  100 11  12 103 14  150 16  170 18 20 19];
y = [22 1 3  40 5 4 70 8  90 10  110 12 13  140 15  160 17  18 19 20];
inter = intersect(x,y);

【问题讨论】:

    标签: matlab


    【解决方案1】:

    逻辑索引很简单:

    >> x = [1  2 3  4  5 6 7  80 9  100 11  12 103 14  150 16  170 18 20 19];
    >> y = [22 1 3  40 5 4 70 8  90 10  110 12 13  140 15  160 17  18 19 20];
    >> x(x==y)
    ans =
         3     5    12    18
    >> x(abs(x-y)<=3) %// or y(abs(x-y)<=3) for the y values instead of the x values
    ans =
         2     3     5     6    12    18    20    19
    

    【讨论】:

    • 谢谢@David,我想知道我是否可以比较数字,但使用 + 和 - 范围 .. 所以如果范围是 3,这意味着我们认为数字相等,即使它更大或更小由 3. 示例 10 和 7 相同,范围为 3
    • 非常感谢,如果 x 和 y 的长度不同,它会起作用吗?
    • 否,但问题会更棘手,因为您必须决定要比较哪些元素。如果您需要这方面的帮助,最好提出一个新问题,而不是不断改变这个问题。
    猜你喜欢
    • 2018-03-10
    • 1970-01-01
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-27
    • 2020-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多