typedef macro & MatrixXcf of eigen

typedef macro & MatrixXcf of eigen

今天我在玩eigen,然后它的文档里有一个snippet ComplexEigenSolver_compute.cpp, 第一行有一个类型 MatrixXcf, 样例中使用了MatrixXcf::Random(4,4)这种方式生成矩阵,我想生成另一个指定的,于是想要查看源码的构造函数定义,然后就用了之前学会的方法

grep -R MatrixXcf *

结果搜出来的结果都是在test,bench,doc文件夹中,显然没有我需要的定义,但是我却可以正常编译,这让人有点不知所措,然后我删掉了.git上层文件夹中除了.gitEIGEN文件夹之外的所有文件,但是编译依然成功,于是我把它放到VSCode 中,用了查看定义这个功能结果真的出来了.在这里

EIGEN_MAKE_TYPEDEFS_ALL_SIZES(std::complex<float>,  cf)

真是让人大跌眼镜,之后

#define EIGEN_MAKE_TYPEDEFS_ALL_SIZES(Type, TypeSuffix) \
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 2, 2) \
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 3, 3) \
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, 4, 4) \
EIGEN_MAKE_TYPEDEFS(Type, TypeSuffix, Dynamic, X) \
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 2) \
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 3) \
EIGEN_MAKE_FIXED_TYPEDEFS(Type, TypeSuffix, 4)
#define EIGEN_MAKE_TYPEDEFS(Size, SizeSuffix)                     \
/** \ingroup matrixtypedefs */                                    \
/** \brief \cpp11 */                                              \
template <typename Type>                                          \
using Matrix##SizeSuffix = Matrix<Type, Size, Size>;              \
/** \ingroup matrixtypedefs */                                    \
/** \brief \cpp11 */                                              \
template <typename Type>                                          \
using Vector##SizeSuffix = Matrix<Type, Size, 1>;                 \
/** \ingroup matrixtypedefs */                                    \
/** \brief \cpp11 */                                              \
template <typename Type>                                          \
using RowVector##SizeSuffix = Matrix<Type, 1, Size>;

看来下一次要搜索Matrix##了!

Guess you like

Origin blog.csdn.net/agctXY/article/details/116017458