调用conv(犰狳库)时没有匹配的函数 我在C++中有一些MATLAB脚本,所以我决定使用图书馆的ARMADILO作为线性代数部分。 但是我被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"); hist2=arma::hist(X2,nbins); arma::vec g(平滑窗宽,0.0); int halfWidth=平滑窗口宽度/2; 对于(int i=0;i

调用conv(犰狳库)时没有匹配的函数 我在C++中有一些MATLAB脚本,所以我决定使用图书馆的ARMADILO作为线性代数部分。 但是我被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"); hist2=arma::hist(X2,nbins); arma::vec g(平滑窗宽,0.0); int halfWidth=平滑窗口宽度/2; 对于(int i=0;i,c++,armadillo,C++,Armadillo,Ok),最后的答案非常简单:conv()不允许混合类型,因此我不得不使用两个vec而不是一个vec和一个uvec 我很确定我已经试过了,但现在我的安装可能有问题 所以我正确地重新安装了犰狳,确保拉帕克和布拉斯都在犰狳发现的地方 然后我添加:#定义ARMA\u不使用包装器,就在#包含 完成此操作后,文档中给出的conv()示例开始工作 因此,我修改了代码,将hist3转换为vec: arma::vec hist3=arma::conv_to<arma::vec>::from(arma:

Ok),最后的答案非常简单:
conv()
不允许混合类型,因此我不得不使用两个
vec
而不是一个
vec
和一个
uvec

我很确定我已经试过了,但现在我的安装可能有问题

所以我正确地重新安装了犰狳,确保拉帕克和布拉斯都在犰狳发现的地方

然后我添加:
#定义ARMA\u不使用包装器
,就在
#包含

完成此操作后,文档中给出的
conv()
示例开始工作

因此,我修改了代码,将
hist3
转换为
vec

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

然后它成功了!

“same”不是int。我太专注于向量,以至于没有注意到int部分。我不明白为什么“same”会是int。我尝试键入“same”,就像示例中的文档一样,但仍然不起作用。错误是“调用”conv没有匹配函数(arma::uvec&,arma::vec&,const char[5])“@RomainMartin-您可能使用的是旧版本的犰狳,它没有最新的
conv()
function。删除以前的版本并安装该版本。@mtall-事实是我已经有了最新版本7.600.2:/有可能它没有正确安装吗?这会很奇怪,因为我可以毫无问题地使用其他功能。可能是因为我没有使用C++11标准?事实上,我尝试了该网站的例如,我遇到另一个错误:“未定义对“wrapper\u ddot\u”的引用。我认为Armadillo所需的一些软件包尚未正确安装或链接。我将这样看。