2014-04-23 71 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」)