我目前在使用Rcpp计算特征值时遇到问题。尽管在Armadillo的网页上指出,使用Rcpp的app.js
不会得到与R的login.js
相同的结果(例如,http://gallery.rcpp.org/articles/armadillo-eigenvalues/ )。
我将使用以下Rcpp函数(与在线提供的功能相同):
eig_sym
并使用以下代码行:
eigen
我得到:
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::vec getEigenValues(arma::mat M) {
return arma::eig_sym(M);
}
这种不一致来自何处? Rcpp命令中的虚部也完全缺失,这不会打扰我,因为我只对实部感兴趣。我希望有人能启发我!
最诚挚的问候!
答案 0 :(得分:4)
您的矩阵不对称,因此eig_sym
是不正确的。您可以将以下C ++代码与eig_gen
一起使用。
#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::export]]
arma::cx_vec getEigenValues(arma::mat M) {
return arma::eig_gen(M);
}