arma::mat 除以 const 整数会导致问题

问题描述 投票:0回答:1

我有一个使用

Rcpp
从 R 调用的函数。我向该函数传递一个参数,该参数是一个常量无符号整数。该整数用于缩放由随机抽取组成的矩阵。 MWE:

Rcpp::cppFunction('

auto testfun(const arma::uword n = 10)
{  
  arma::dmat W = floor(arma::randu(35, 35, arma::distr_param(0, 2)));
  return W / n;
}
', depends = "RcppArmadillo", plugins = "cpp17")

这个 MWE 让我的 R 崩溃了。另一方面,我的实际代码可以工作但返回垃圾。我在这里缺少什么?

看来是

auto
声明导致了问题。我不明白为什么。

c++11 rcpp rcpparmadillo
1个回答
0
投票

使用

RcppArmadillo
包含模板转换器的已记录接口和类型,将失败的函数转变为工作函数。

(这里我还将亮度从 35 缩放到 5,以实现更紧凑的显示。无论哪种方式都可以。我还为显示添加了两个换行符。)

> Rcpp::cppFunction("arma::mat f(const int n = 10) { 
          arma::mat W = floor(arma::randu(5,5,arma::distr_param(0,2))); 
          return W / n; }", depends="RcppArmadillo") 
> f() 
     [,1] [,2] [,3] [,4] [,5]
[1,]  0.0  0.0  0.1  0.1  0.0
[2,]  0.1  0.1  0.1  0.0  0.0
[3,]  0.1  0.1  0.0  0.1  0.0
[4,]  0.0  0.1  0.1  0.0  0.0
[5,]  0.0  0.0  0.0  0.0  0.1
> f(2) 
     [,1] [,2] [,3] [,4] [,5]
[1,]  0.0  0.0  0.5  0.0  0.0
[2,]  0.0  0.5  0.5  0.0  0.5
[3,]  0.5  0.5  0.0  0.5  0.0
[4,]  0.0  0.0  0.5  0.0  0.0
[5,]  0.0  0.5  0.0  0.5  0.5
>  
© www.soinside.com 2019 - 2024. All rights reserved.