将2个数组中的元素与百分比容差进行比较

时间:2014-11-12 09:55:53

标签: matlab

我试图将包含一些结果的四元素数组与另外五个四元素数组进行比较,看它们是否相等。为此,我可以使用isequal。我遇到的问题是我想允许一点点错误(~2%)并且仍然为每个匹配元素获得逻辑yes输出。

我可以运行大量的IF循环bur我觉得应该有一个简单的方法来实现它但我无法弄明白。

对此我提出的任何帮助都会非常感激,因为我对这个看似简单的问题感到难过。

感谢。

以下是一个例子。 y在x1的1%范围内,但我仍然不匹配。我想看看它是否匹配所有4个元素,或者只是一个或者其他什么的原因是我以后可以使用这些信息。

x1= [0.012 1.323 0.1423 3.458];
x2= [0.341 2.973 0.234 1.234];
x3= [3.093 2.324 4.321 3.234];
x4= [0.987 2.345 2.543 3.243];

y= [0.0121    1.3362    0.1437    3.4926];

y1 =(x1==y)
y2 =(x2==y)
y3 =(x3==y)
y4 =(x4==y)

if sum (y1) == 4
    display ('y equals x1')
elseif sum(y2) == 4
    display ('y equals x2')
elseif sum(y3) == 4
    display ('y equals x3')
elseif sum(y4)== 4
display ('y equals x4')
else 
    display ('Unknown')
end

1 个答案:

答案 0 :(得分:1)

这是一个建议。创建一个错误矩阵,例如

err1=abs((x1-y)./y);

这将为您提供x中的百分比误差。请记住使用./进行元素划分。对于某些情况,您可能希望除以x或不取绝对值。

然后您可以将错误与容忍度进行比较。

y1=(err1<0.02);

这应该可以根据需要为您提供二进制数组。