我有两个数组在matlab/octave a1中计算并给出a2。我如何创建第三个数组 a3比较a1和a2并显示a1中缺少的值?查找不在matlab/octave中的数组中的值
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 a1中计算并给出a2。我如何创建第三个数组 a3比较a1和a2并显示a1中缺少的值?查找不在matlab/octave中的数组中的值
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仅整数。
感谢
setdiff
返回不在另一个阵列中的元素。这将适用于浮点值,但需要相等。
a3 = setdiff(a2, a1)
我误解了问题陈述,所以OP可以使用'intersect'来忽略我以前的解决方案。这是正确的解决方案。 –
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
始终比较浮点数时要小心:为什么24.0000不等于在MATLAB 24.0000?(http://stackoverflow.com/questions/686439/why-is-24-0000-not-等于24-0000-in-matlab),[如何比较MATLAB中两个数组的所有元素?](http://stackoverflow.com/questions/2202641/how-do-i-compare-all-两个数组在matlab中的元素) – Amro