小编Mik*_*own的帖子

RCPP:我的距离矩阵程序比包中的函数慢

我想计算成对的欧式距离矩阵。我根据Dirk Eddelbuettel的建议编写了Rcpp程序,如下所示

NumericMatrix calcPWD1 (NumericMatrix x){
  int outrows = x.nrow();
  double d;
  NumericMatrix out(outrows,outrows);

  for (int i = 0 ; i < outrows - 1; i++){
    for (int j = i + 1  ; j < outrows ; j ++){
      NumericVector v1= x.row(i);
      NumericVector v2= x.row(j);
      NumericVector v3=v1-v2;
      d = sqrt(sum(pow(v3,2)));
      out(j,i)=d;
      out(i,j)=d;
    }
  }
  return (out) ;
}
Run Code Online (Sandbox Code Playgroud)

但是我发现我的程序比dist功能慢。

> benchmark(as.matrix(dist(b)),calcPWD1(b))
                test replications elapsed relative user.self sys.self user.child sys.child
1 as.matrix(dist(b))          100  24.831    1.000    24.679 …
Run Code Online (Sandbox Code Playgroud)

c++ r rcpp

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

标签 统计

c++ ×1

r ×1

rcpp ×1