在matlab / octave中查找不在数组中的值

时间:2011-10-09 14:22:21

标签: matlab octave

我在matlab / octave中有两个数组a1被计算并且给出了a2。如何创建第3个数组 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转换为整数。

谢谢

2 个答案:

答案 0 :(得分:4)

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

a3 = setdiff(a2, a1)

答案 1 :(得分:1)

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