犰狳'cor'函数返回标量



我正在尝试使用Armadillo计算双打向量的自相关,如下:

QVector<double> calculateAutocorrelation(QVector<double> samples){
  arma::Row<double> armadillo_samples(samples.toStdVector());//Convert samples to armadillo vector
  arma::Row<double> armadillo_autocorrelation = cor(armadillo_samples); //compute the autocorrelation, returns a 1x1 matrix!
  QVector<double> ret(samples.size());
  for(int i = 0; i <samples.size();i++)
      ret[i] = armadillo_autocorrelation(i);//copy back into a QVector
  return ret;
}

但是,正如我期望的那样,正如在第二行上评论的Cor(armadillo_samples)返回1x1矩阵,而不是另一个向量。 我已经从他们的网站(5.100.1)下载了最新的Armadillo稳定版本,并在Linux上使用了MKL启用了此代码,并在Windows上使用了启用了预编译Blas/Lapack库。
我是否误解了此功能如何工作/使用它?

相关链接:
-armadillo Cor
的文档 - Wikipedia上的自动相关(在Armadillo文档中有一个与数学世界的链接,也很有用,但我无法链接到它)

将1x1矩阵转换为Armadillo中的纯标量,使用as_scalar()函数。例如:

mat X(1,1, fill::ones);
double val = as_scalar(X);

最新更新