2015-02-02 32 views
5

Ich bin neu bei Rcpp. Ich versuche, das R-Paket RcppEigen zu verwenden, um die Determinante einer Matrix zu erhalten. Der folgende Code wird in einer Datei gespeichert und ich benutze SourceCpp, um es zu verwenden. Es gibt keinen Kompilierungsfehler, wenn ich sourceCpp verwende. Bei Verwendung von getDeterminant(A) in R ist A eine Matrix. Es beklagt immer den folgenden Fehler.Wie bekomme ich die Determinante einer Matrix mit RcppEigen

"Error: could not find function "getDeterminant"" 

Allerdings funktioniert die getEigenValues gut.

Ich schätze sehr, wenn jemand glücklich ist, mir dabei zu helfen. Vielen Dank!

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

Antwort

4

Dir ein : im zweiten RCPP fehlenden Tag Attribute: Rcpp::export die Form ist der reguläre Ausdruck für aussieht.

Wenn Sie es hinzufügen, wird die Funktionen zugänglich:

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

ich sehen! Ich danke dir sehr! ! :) – Crystal

Verwandte Themen