欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

R語(yǔ)言技巧Rcpp與Eigen庫(kù)之間的相互轉(zhuǎn)換

 更新時(shí)間:2021年11月08日 16:20:32   作者:Kanny廣小隸  
這篇文章主要為大家介紹了R語(yǔ)言中Rcpp與Eigen庫(kù)之間的相互轉(zhuǎn)換的技巧操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

當(dāng)我們?cè)谑褂肦cpp時(shí),進(jìn)行矩陣運(yùn)算最簡(jiǎn)單的是使用Eigen庫(kù)進(jìn)行相關(guān)操作,可以很輕松地講R中向量化與矩陣化的思想應(yīng)用到C++代碼上,從而對(duì)代碼進(jìn)行加速。可參考前面的博客:利用RcppEigen進(jìn)行矩陣運(yùn)算。

但有時(shí),我們卻必須使用Rcpp進(jìn)行DataFrame,List等對(duì)象格式的處理?;蛘呷绻覀兩婕暗饺笔е档奶幚?,也需要使用Rcpp中的函數(shù)來(lái)做。

所以,如何在兩種矩陣或向量格式,NumericVector/Matrix與VectorXd/MatrixXd之間相互轉(zhuǎn)化就變得非常重要。

我們可以首先使用Eigen庫(kù)中的VectorXd/MatrixXd對(duì)矩陣進(jìn)行運(yùn)算,然后再轉(zhuǎn)化為Rcpp中的NumericVector/Matrix,繼而我們便可使用Rcpp中的函數(shù)了。

具體做法其實(shí)參考了下面的文章:

An Introduction to RcppEigen

Converting between NumericVector/Matrix and VectorXd/MatrixXd in Rcpp(Eigen) to perform Cholesky solve

具體解決方法

以一個(gè)最簡(jiǎn)單的NumericMatrix轉(zhuǎn)化為MatrixXd格式為例:

// [[Rcpp::depends(RcppEigen)]]
#include <Rcpp.h>
#include <RcppEigen.h>
using namespace Rcpp;
using Eigen::Map;
using Eigen::MatrixXd;
using Rcpp::as;

// [[Rcpp::export]]
MatrixXd Test(NumericMatrix AA) {

  Map<Eigen::MatrixXd> A(as<Map<Eigen::MatrixXd> >(AA));
  
  return(A);
}

我們將對(duì)象AA變?yōu)榱藢?duì)象A,如果之后需要進(jìn)行變換時(shí),需要將兩者進(jìn)行替換即可。

以上就是R語(yǔ)言技巧Rcpp與Eigen庫(kù)之間的相互轉(zhuǎn)換的詳細(xì)內(nèi)容,更多關(guān)于Rcpp與Eigen庫(kù)之間的轉(zhuǎn)換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論