c++ - Armadillo 'cor' 函数返回标量

标签 c++ statistics armadillo

我正在尝试使用 Armadillo 计算 double vector 的自相关,如下所示:

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;
}

但是,如第 2 行所述,cor(armadillo_samples) 返回一个 1x1 矩阵,而不是我所期望的另一个 vector 。 我已经从他们的网站 (5.100.1) 下载了 Armadillo 的最新稳定版本,并在启用了 MKL 的 Linux 和启用了预编译 BLAS/LAPACK 库的 Windows 上尝试了这段代码。
我是否误解了此功能的工作原理/使用错误?

相关链接:
- Armadillo documentation of cor
-Wikipedia 上的自相关( Armadillo 文档中有一个指向 Mathworld 的链接,这也很有用,但我无法链接到它)

最佳答案

要在 Armadillo 中将 1x1 矩阵转换为纯标量,请使用 as_scalar()功能。例如:

mat X(1,1, fill::ones);

double val = as_scalar(X);

关于c++ - Armadillo 'cor' 函数返回标量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30082085/

相关文章:

C++11 无锁自动更新 2 个变量

c++ - 字节内的字节顺序

math - 为什么斐波那契数列用于敏捷规划扑克?

r - R 中的 t 分布

c++ - Armadillo inplace_plus 明显慢于 "normal"plus 操作

c++ - 按索引 vector 对 Armadillo 矩阵的所有列进行排序的最佳方法

c++ - 在两个不同的输入数据集上运行同一个 C/C++ 程序的两个实例

嵌套模板类的 C++ 非成员函数

python - 使用 pandas GroupBy 获取每个组的统计数据(例如计数、平均值等)?

linker - Rcpp 错误 :/usr/bin/ld cannot find -lgfortran