我是CPPUNIT的新手。我已经使用 Armadillo 库生成了类型为cx_mat(double double)的矩阵A,并且我有一个相同类型的reference(expected)矩阵B。请提出一种使用矩阵A和B以及一次说出0.0001的增量(容差)的逮捕方法,而无需遍历整个矩阵。
如果上述方法不可行,并且唯一的选择是在for循环中使用CPPUNIT_ASSERT_DOUBLES_EQUAL_MESSAGE方法,请提供正确的语法和头文件以供使用。
最佳答案
可以用
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。