我正在尝试在 Rcpp 中实现一个简单的代码来计算和填充距离矩阵的条目。问题是 Rcpp 代码(如下)返回一个矩阵 D ,其中所有元素的值都为零。这个问题似乎没有在论坛的任何地方得到解决 - 我很感激一些建议!
src_d_err_c <- '
using namespace Rcpp;
double d_err_c(NumericVector cx, NumericVector csx, NumericVector cy, NumericVector csy) {
using namespace Rcpp;
NumericVector d = (cx - cy)*(cx - cy) / csx;
double s = std::accumulate(d.begin(), d.end(), 0.0);
return s;
}'
src_d_mat = '
using namespace Rcpp;
// input
Rcpp::NumericMatrix cX(X);
Rcpp::NumericMatrix cY(Y);
Rcpp::NumericMatrix cSX(SX);
Rcpp::NumericMatrix cSY(SY);
int N1 = cX.nrow();
int N2 = cY.nrow();
NumericMatrix D(N1, N2);
NumericVector v(N1);
for (int x = 0; x++; x<N1){
v[x] = x;
for (int y = 0; y++; y<N2) {
D(x,y) = d_err_c(cX(x,_), cSX(x,_), cY(y,_), cSY(y,_));
};
};
return wrap(v);'
fun <- cxxfunction(signature(X = "numeric", SX = "numeric",
Y = "numeric", SY = "numeric"),
body = src_d_mat, includes = src_d_err_c,
plugin = "Rcpp")