2014-04-23 48 views
2

我是CPPUNIT的新手。我使用armadillo库生成了一个类型为cx_mat(complex double)的矩阵A,并且我有一个相同类型的参考(期望)矩阵B.请建议一种使用矩阵A和B进行捕获的方法,以及一次性使用0.0001的三角形(公差),而无需遍历整个矩阵。使用CPPUNIT断言两个犰狳cx_mat矩阵相等

如果以上是不可能的,并且唯一的选择是在for循环中使用CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE方法,那么请为我提供正确的语法和使用相同的头文件。

回答

2

它可以与

bool Arma_test::Is_close(arma::cx_mat& X, arma::cx_mat& Y, double tol) 
{ 
    // abs returns a mat type then max checks columns and returns a row_vec 
    // max used again will return the biggest element in the row_vec 
    bool close(false); 
    if(arma::max(arma::max(arma::abs(X-Y))) < tol) 
    { 
     close = true; 
    } 
    return close; 
} 

做见Armadillo Docs

+1

以下是更紧凑的'arma :: accu(abs(X-Y))'。请参阅[accu()](http://arma.sourceforge.net/docs.html#accu) – mtall

+0

的文档'arma :: accu'也可以完成这项工作,但不是等价的代码,它将所有元素。 –

+1

我认为'arma :: norm(X-Y,“inf”)