2015-02-02 3 views
5

Я новичок в Rcpp. Я пытаюсь использовать R-пакет RcppEigen для получения определителя матрицы. Следующий код сохраняется в файле, и я использую sourceCpp для его использования. Ошибка компиляции при использовании sourceCpp. При использовании getDeterminant(A) в R, A является матрицей. Он всегда жалуется на следующую ошибку.Как получить определитель матрицы с помощью RcppEigen

"Error: could not find function "getDeterminant"" 

Однако getEigenValues хорошо работает.

Я ценю много, если кто-то рад помочь мне с этим. Спасибо большое!

#include <RcppEigen.h> 

// [[Rcpp::depends(RcppEigen)]] 

using Eigen::Map;     // 'maps' rather than copies 
using Eigen::MatrixXd;     // variable size matrix, double precision 
using Eigen::VectorXd;     // variable size vector, double precision 
using Eigen::SelfAdjointEigenSolver; // one of the eigenvalue solvers 
using Eigen::MatrixXi; 
using Eigen::MatrixBase; 
// [[Rcpp::export]] 
VectorXd getEigenValues(Map<MatrixXd> M) { 
    SelfAdjointEigenSolver<MatrixXd> es(M); 
    return es.eigenvalues(); 
} 

// [[Rcpp:export]] 
double getDeterminant(Map<MatrixXd> AA){ 
    return AA.determinant(); 
} 

ответ

4

Вы отсутствуете во втором Rcpp в : Атрибуты тега: Rcpp::export является формой регулярного выражения ищет.

Если вы добавляете его функции становятся доступными:

R> Rcpp::sourceCpp("/tmp/crystal.cpp") 
R> M <- matrix(1:9,3,3)*1.0 
R> getEigenValues(M) 
[1] 2.80689e-16 6.99265e-01 1.43007e+01 
R> getDeterminant(M) 
[1] 0 
R> 
+0

Я вижу! Спасибо огромное! ! :) – Crystal

Смежные вопросы