C函数用于查找两个矩阵是否等于给定容差

时间:2014-01-07 05:48:48

标签: c

我必须比较两个矩阵的元素如下:

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。

1 个答案:

答案 0 :(得分:1)

如果您有预期值a和测试值x,那么测试值与预期值的相对距离为:

rel_diff = (x-a)/a = x/a - 1

如果您想在ax中找到对称的内容,那么您可以使用:

rel_diff = abs(a-x)/(a+x)

因此,您可以使用if声明来检查所需的容差(因为差异的符号可能不是您感兴趣的,您只需要考虑这些的绝对值)。