听起来你要做的就是有一个ismember函数用于实值数据.
也就是说,检查向量B中的每个值B(i)B(i)是否在向量A中至少一个值的容差阈值T内
这可以解决如下问题:
tf = false(1, length(b)); %//the result vector, true if that element of b is in a
t = 0.01; %// the tolerance threshold
for i = 1:length(b)
%// is the absolute difference between the
%//element of a and b less that the threshold?
matches = abs(a - b(i)) < t;
%// if b(i) matches any of the elements of a
tf(i) = any(matches);
end
或者,简而言之:
t = 0.01;
tf = arrayfun(@(bi) any(abs(a - bi) < t), b);
关于避免for循环:虽然这可能会受益于矢量化,但如果您的数据非常庞大,您可能还需要考虑并行化.在这种情况下,在我的第一个示例中使用for循环可以很方便,因为您可以通过将for更改为parfor来轻松地执行并行处理的基本版本.