我是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

10-07 19:24
查看更多