test_matrix_exp.cxx

来自「DTMK软件开发包,此为开源软件,是一款很好的医学图像开发资源.」· CXX 代码 · 共 34 行

CXX
34
字号
// @author fsm

#include <vcl_iostream.h>
#include <vcl_cmath.h> // for vcl_abs()

#include <vnl/vnl_double_3.h>
#include <vnl/vnl_double_3x3.h>
#include <vnl/vnl_matrix_exp.h>
#include <vnl/vnl_matlab_print.h>
#include <vnl/vnl_rotation_matrix.h>
#include <vnl/vnl_cross_product_matrix.h>
#include <testlib/testlib_test.h>

void test_matrix_exp()
{
  vnl_double_3 v(1.233,-0.572,0.777);

  vnl_double_3x3 X = vnl_cross_product_matrix(v);
  vnl_matlab_print(vcl_cout, X, "[v]");

  vnl_double_3x3 expX = vnl_matrix_exp(X);
  vnl_matlab_print(vcl_cout, expX, "matrix exp([v])");
  testlib_test_assert("expX(0,0)", vcl_abs(expX(0,0)-0.6221833130) < 1e-10);
  testlib_test_assert("expX(0,1)", vcl_abs(expX(0,1)+0.7825192869) < 1e-10);
  testlib_test_assert("expX(1,1)", vcl_abs(expX(1,1)-0.1379544126) < 1e-10);
  testlib_test_assert("expX(2,2)", vcl_abs(expX(2,2)-0.2501918781) < 1e-10);

  vnl_double_3x3 rotv = vnl_rotation_matrix(v);
  vnl_matlab_print(vcl_cout, rotv, "rotate exp([v])");
  testlib_test_assert("rotv == expX", (rotv-expX).fro_norm() < 1e-10);
}

TESTMAIN(test_matrix_exp);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?