使用公差来交叉两个数组

时间:2017-06-16 16:14:33

标签: arrays matlab

我有2个数据数组,我想从中提取常见元素。 Matlab的[c for c in curVal] 完成了这项工作。但它返回完全相同的元素。如果我想提取具有一定容差的元素怎么办?比如说

intersect

我想提取相同的元素,最多2个小数位。所以我希望答案是A = [1 2 3.0002 4.125 5.89]; B = [2 3.012 4.126] 。有没有内置函数来做到这一点?或者我如何实现这一目标?

2 个答案:

答案 0 :(得分:4)

您可以按如下方式手动执行此操作。这将从A中选择输出值;如果您想从B中选择,只需在代码中交换AB

A = [1 2 3.0002 4.125 5.89]; 
B = [2 3.012 4.126];
tol = .01;
result = A(any(abs(bsxfun(@minus, A(:).', B(:))) < tol, 1));

答案 1 :(得分:4)

我只想round输入:

C = intersect(round(A,2),round(B,2))

floorceil也是选项,具体取决于您真正想要实现的目标。