我正在使用Armadillo C ++库来执行大小为49x49的Hermitian矩阵R
的特征分解。得到的特征向量有时具有NaN列。当我在matlab中执行相同的分解时,没有这样的问题。
我的犰狳代码是这样的:
cx_mat R = (S_n_centered * S_n_centered.t()) / S_n.n_cols;
cx_mat E;
vec d;
bool success = eig_sym(d,E,R);
例如,当R是this时,对应于三个最大特征值的特征向量是these。成功标志为真,特征值正确(与Matlab几乎相同)。
我正在使用Armadillo版本7.960.0并使用blas_win64_MT.dll和lapack_win64_MT.dll这两个都包含在示例文件夹中。
在Matlab中分解相同的矩阵并不会导致任何问题,但特征向量都是不同的。
这可能是Armadillo或Lapack库中的错误吗?