2015-02-02 8 views
5

Jestem nowy dla Rcpp. Próbuję użyć pakietu R RpppEigen, aby uzyskać wyznacznik macierzy. Poniższy kod jest zapisany w pliku i używam sourceCpp, aby go użyć. Nie ma błędu kompilacji podczas korzystania z sourceCpp. Podczas korzystania z getDeterminant(A) w R, A jest macierz. Zawsze narzeka na następujący błąd.jak uzyskać wyznacznik macierzy za pomocą RcppEigen

"Error: could not find function "getDeterminant"" 

Jednak getEigenValues działa dobrze.

Bardzo doceniam, jeśli ktoś z przyjemnością mi w tym pomoże. Wielkie dzięki!

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

Odpowiedz

4

tracisz : w drugim RCPP Atrybuty znacznika: Rcpp::export jest formą wyrażenie regularne szuka.

Jeśli go dodać funkcje staje się dostępny:

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

widzę! Dziękuję bardzo! ! :) – Crystal