2

我需要通过 Rcpp 从犰狳进行 qr 分解。以下 R 代码(带有经济 QR)确实运行:

# test matrix:
m<-5; n<-4
set.seed(123)
X <- replicate(n, runif(m))

sourceCpp(code='
#include <iostream>
#include <RcppArmadillo.h>

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

using namespace Rcpp;

//[[Rcpp::export]]
List QRdec_econ(arma::mat X) {
  int n = X.n_cols;
  int m = X.n_rows;
  arma::mat Q(m, n);
  Q.fill(0);
  arma::mat R(n, n);
  R.fill(0);

  arma::qr_econ(Q,R,X);

  return List::create(_["Q"] = Q,
                      _["R"] = R
  );
}'
)

QRdec_econ(as.matrix(X))

在此处输入图像描述

相反,以下代码(非常相似,只是使用 qr 而不是 qr_econ)在编译时失败:

sourceCpp(code='
#include <iostream>
#include <RcppArmadillo.h>

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

using namespace Rcpp;

//[[Rcpp::export]]
List CPHHQR_arma(arma::mat X) {
  int n = X.n_cols;
  int m = X.n_rows;
  arma::mat Q(m, m);
  Q.fill(0);
  arma::mat R(m, n);
  R.fill(0);
  arma::umat P(n, n);
  P.fill(0);

  arma::qr(Q,R,P,X,"matrix");

return List::create(_["Q"] = Q,
                    _["R"] = R,
                    _["P"] = P
);
}'
)

在此处输入图像描述

对于这种奇怪的代码行为有什么建议吗?提前谢谢了。

4

0 回答 0