gpt4 book ai didi

c++ - 没有用于调用 conv 的匹配函数( Armadillo 库)

转载 作者:行者123 更新时间:2023-11-30 02:27:30 25 4
gpt4 key购买 nike

我有一些要用 C++ 翻译的 matlab 脚本,所以我决定使用库 Armadillo 来处理线性代数部分。但是我被 conv() 函数阻止了。我试过这个:

hist2=arma::hist(X2,nbins);
arma::vec g (smoothingWindowWidth, 0.0);
int halfWidth = smoothingWindowWidth/2;
for (int i=0; i<smoothingWindowWidth; i++)
{
int n=i - halfWidth;
g[i]= exp(-0.5 *((n/((double)halfWidth))*(n/((double) halfWidth))));
}
g=g/(arma::sum(g));
arma::vec hist3= arma::conv(hist2,g,"same");

当我尝试编译时,出现以下错误:“没有匹配的函数用于调用‘conv(arma::uvec&,arma::vec&,int)’”。

hist2 之前已使用 hist() 函数定义为 uvecX2 是一个 vecnbins 是一个 int

我不确定是否理解错误:似乎 conv() 没有将 vecuvec 作为参数但是在查看 Armadillo 网站后,它必须这样做。

我尝试将 uvec 转换为 vec 但它没有改变任何东西。

感谢您的帮助!

最佳答案

好吧,最后答案很简单:conv()不允许混合类型所以我不得不使用两个 vec而不是一个 vec和一个uvec .

我很确定已经尝试过了,但此时我的安装可能有问题。

所以我正确地重新安装了 Armadillo,确保 Lapack 和 BLAS 都能被 Armadillo 找到。

然后我添加:#define ARMA_DONT_USE_WRAPPER就在#include<armadillo>之前

这样做之后,conv()的例子文档中给出的工作。

所以我通过转换 hist3 修改了我的代码进入vec :

arma::vec hist3=arma::conv_to<arma::vec>::from(arma::hist(X2,nbbins));

然后成功了!

关于c++ - 没有用于调用 conv 的匹配函数( Armadillo 库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41597640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com