我正在尝试使用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;
}
但是,正如第二行所述,cor(armadillo_samples)返回一个1x1矩阵,而不是我期望的另一个 vector 。
我从他们的网站(5.100.1)下载了Armadillo的最新稳定版本,并在启用MKL的Linux和启用预编译BLAS / LAPACK库的Windows上尝试了此代码。
我是否误解了此功能的工作方式/使用错误?
相关链接:
-Armadillo documentation of cor
-Wikipedia上的自相关(在 Armadillo 文件中也有到Mathworld的链接,这也很有用,但我无法链接到它)
最佳答案
要将1x1矩阵转换为Armadillo中的纯标量,请使用as_scalar()函数。例如:
mat X(1,1, fill::ones);
double val = as_scalar(X);
关于c++ - Armadillo 'cor'函数返回标量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30082085/