我必须比较两个矩阵的元素如下:
Result1是2 * 2矩阵,即
Result1 = 1.1 1.2
3.1 3.2
Result2也是一个2 * 2矩阵,即
Result2 = 1.11 1.99
3.0 9.0
如果我使用if语句来比较这些矩阵,那么答案将是不同的矩阵。但实际上,矩阵的三个元素result1和result2各自彼此紧密相等,精度约为98%,并且一个元素即result1 [3]与元素result2完全不同[3]。
我正在使用大小高达1000 * 1000的矩阵,我想在C中编写一个函数,它比较两个矩阵的每个元素,精度为99%,容差水平为+ 1%或-1%。< / p>
我的功能应该报告这样的事情:
98%的元素具有99%的准确度,因此测试通过!!
or
75%的元素具有99%的准确度,因此测试失败!!
我们是否有内置功能来实现这一目标? 我正在使用ubuntu 12.04。
答案 0 :(得分:1)
如果您有预期值a
和测试值x
,那么测试值与预期值的相对距离为:
rel_diff = (x-a)/a = x/a - 1
如果您想在a
和x
中找到对称的内容,那么您可以使用:
rel_diff = abs(a-x)/(a+x)
因此,您可以使用if
声明来检查所需的容差(因为差异的符号可能不是您感兴趣的,您只需要考虑这些的绝对值)。