2015-02-02 21 views
5

Tôi là thương hiệu mới của Rcpp. Tôi đang cố gắng sử dụng R gói RcppEigen để có được yếu tố quyết định của một ma trận. Đoạn mã sau được lưu trong một tập tin và tôi sử dụng sourceCpp để sử dụng nó. Không có lỗi biên dịch khi tôi sử dụng sourceCpp. Khi sử dụng getDeterminant(A) trong R, A là một ma trận. Nó luôn luôn phàn nàn lỗi sau.cách nhận định thức của ma trận sử dụng RcppEigen

"Error: could not find function "getDeterminant"" 

Tuy nhiên, getEigenValues hoạt động tốt.

Tôi đánh giá cao rất nhiều nếu có ai vui lòng giúp tôi với điều này. Cảm ơn rất nhiều!

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

Trả lời

4

Bạn đang thiếu một : trong Rcpp thứ hai thuộc tính tag: Rcpp::export là hình thức biểu hiện thường xuyên tìm kiếm.

Nếu bạn thêm nó, các chức năng trở nên dễ tiếp cận:

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

tôi xem! Cảm ơn bạn rất nhiều! ! :) – Crystal

Các vấn đề liên quan