相关疑难解决方法(0)

Rcpp中的矩阵乘法

首先,我是一个新手用户,所以忘记我一般的无知.我正在寻找更快的替代R中的%*%运算符.虽然较旧的帖子建议使用RcppArmadillo,但我已经尝试了2个小时让RcppArmadillo工作没有成功.我总是遇到会产生'意外......'错误的词汇问题.我在Rcpp中找到了以下功能,我可以做的工作:

library(Rcpp)
func <- '
NumericMatrix mmult( NumericMatrix m , NumericMatrix v, bool  byrow=true )
{
  if( ! m.nrow() == v.nrow() ) stop("Non-conformable arrays") ;
  if( ! m.ncol() == v.ncol() ) stop("Non-conformable arrays") ;

  NumericMatrix out(m) ;

  for (int i = 0; i < m.nrow(); i++) 
  {
  for (int j = 0; j < m.ncol(); j++) 
  {
  out(i,j)=m(i,j) * v(i,j) ;
  }
  }
  return out ;
}
'
Run Code Online (Sandbox Code Playgroud)

但是,此函数执行逐元素乘法,并且不表现为%*%.有没有一种简单的方法来修改上面的代码来实现预期的结果?

编辑:

我已经提出了一个使用RcppEigen的函数,似乎超过%*%:

etest <- cxxfunction(signature(tm="NumericMatrix",
                           tm2="NumericMatrix"),
                 plugin="RcppEigen",
                 body="
NumericMatrix tm22(tm2);
NumericMatrix …
Run Code Online (Sandbox Code Playgroud)

c++ r rcpp

11
推荐指数
2
解决办法
4717
查看次数

标签 统计

c++ ×1

r ×1

rcpp ×1