2015-02-02 19 views
5

Sono nuovo di zecca per Rcpp. Sto cercando di utilizzare il pacchetto R RcppEigen per ottenere il determinante di una matrice. Il seguente codice è salvato in un file e io uso sourceCpp per usarlo. Non c'è errore di compilazione quando uso sourceCpp. Quando si utilizza getDeterminant(A) in R, A è una matrice. Si lamenta sempre del seguente errore.come ottenere il determinante di una matrice usando RcppEigen

"Error: could not find function "getDeterminant"" 

Tuttavia, il getEigenValues funziona bene.

Apprezzo molto se qualcuno è felice di aiutarmi con questo. Grazie mille!

#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(); 
} 

risposta

4

ti manca un : nella seconda Rcpp Attributi tag: Rcpp::export è la forma l'espressione regolare cerca.

Se si aggiunge che, le funzioni diventa accessibile:

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

vedo! Grazie mille! ! :) – Crystal

Problemi correlati