【问题标题】:Finding values that aren't in an array in matlab/octave [duplicate]在matlab / octave中查找不在数组中的值[重复]
【发布时间】:2011-10-09 14:22:21
【问题描述】:

我在 matlab/octave 中有两个数组,计算 a1 并给出 a2。如何创建第三个数组 a3 将 a1 与 a2 进行比较并显示 a1 中缺少的值?

a1=[1,4,5,8,13]
a2=[1,2,3,4,5,6,7,8,9,10,11,12,13]
a3=[3,6,7,9,10,11,12]

这也适用于浮点数,比如 a1=[1,4,5,8.6,13] 或者我必须将 a1 转换为整数。

谢谢

【问题讨论】:

标签: matlab octave


【解决方案1】:

setdiff 返回一个数组中不在另一个数组中的元素。这适用于浮点值,但需要相等。

a3 = setdiff(a2, a1)

【讨论】:

  • 我误读了问题陈述,因此 OP 可以使用 intersect 忽略我之前的解决方案。这是正确的解决方案。
【解决方案2】:
function missing = comparray(a1, a2)
% array of numbers that are missing from input
missing = []
% for each element in a2, check if it's in a1
for ii=1:1:length(a2)
    num = a2(ii);
    deltas = abs(a1 - num);
    if min(deltas) ~= 0
        missing = [missing, num];
    end
end

浮点数可能很棘手。要使上述代码与它们一起使用,请检查min(deltas) > 0.001(或考虑到输入数字的精度,选择一个合适的非常小的值)。欲了解更多信息,请参阅here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2020-03-11
    • 2021-05-08
    • 1970-01-01
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多