【发布时间】:2015-08-26 13:06:33
【问题描述】:
我正在尝试使用犰狳计算双精度向量的自相关,如下所示:
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 的最新稳定版本,并在启用了 MKL 的 Linux 和启用了预编译的 BLAS/LAPACK 库的 Windows 上尝试了此代码。
我是否误解了此功能的工作原理/使用错误?
相关链接:
-Armadillo documentation of cor
-Wikipedia 上的自相关(Armadillo 文档中有一个指向 Mathworld 的链接也很有用,但我无法链接到它)
【问题讨论】:
-
犰狳文档中提到的 cor(X) 是自相关,它们可能仅表示零滞后自相关(并非所有滞后)。 (文档没有提到各种函数的返回类型;这对于编程文档来说似乎不寻常,但是哦。)我没有看到列出的全滞后自相关函数。你必须使用犰狳吗?也许你可以找到另一个库,或者自己编写它——自相关函数很容易用离散傅里叶变换表示。
标签: c++ statistics armadillo