У меня есть некоторый скрипт matlab для перевода на C++, поэтому я решил использовать библиотеку Armadillo для частей линейной алгебры. Но я заблокирован функцией conv()
. Я попытался это:Нет подходящей функции для вызова conv (библиотека armadillo)
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");
Когда я пытаюсь скомпилировать я получаю следующее сообщение об ошибке: «нет подходящей функции для вызова„ко (арма :: uvec &, арма :: VEC &, целые)“» ,
hist2
был определен ранее как uvec
с использованием функции hist()
. X2
- vec
и nbins
a int
.
Я не уверен, чтобы понять ошибку: Это кажется, что conv()
не принимает vec
или uvec
в качестве параметров, но после проверки веб-сайта Armadillo он должен.
Я попытался преобразовать uvec
в vec
, но это ничего не изменило.
Благодарим за помощь!
«тот же» не является инт. –
Я был настолько сосредоточен на своих векторах, что не заметил часть «int». Я не понимаю, почему «тот же» будет int. Я пытаюсь ввести «тот же самый», что и в документации, описанной в этом примере, но он все еще не работает. Ошибка: «нет соответствующей функции для вызова« conv »(arma :: uvec &, arma :: vec &, const char [5]) ' –
@RomainMartin - Возможно, вы используете старую версию Armadillo, которая не имеет последнюю функцию 'conv()'. Удалите предыдущую версию и установите версию [latest] (http://arma.sourceforge.net/download.html). – mtall