Ich habe einige Matlab-Skript in C++ zu übersetzen, also entschied ich mich, die Bibliothek Armadillo für die lineare Algebra Teile zu verwenden. Aber ich bin mit der conv()
Funktion blockiert. Ich versuchte dies:Keine passende Funktion für Call to Conv (Armadillo-Bibliothek)
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");
Wenn ich versuche ich folgende Fehlermeldung zu kompilieren: "keine passende Funktion für Aufruf von 'Conv (arma :: UVEC &, arma :: vec &, int)'" .
hist2
wurde zuvor als uvec
unter Verwendung der hist()
-Funktion definiert. X2
ist ein vec
und nbins
ein int
.
Ich bin mir nicht sicher, den Fehler zu verstehen: Es scheint, dass conv()
nicht vec
oder uvec
als Parameter aber nach Überprüfung der Armadillo-Website muss es zu nehmen.
Ich habe versucht, die uvec
in vec
zu konvertieren, aber es hat nichts geändert.
Vielen Dank für Ihre Hilfe!
"same" ist kein int. –
Ich war so auf meine Vektoren konzentriert, dass ich den 'int' Teil nicht bemerkte. Ich verstehe nicht, warum 'same' ein int wäre. Ich versuche, "selbe" wie die Dokumentation in das Beispiel zu schreiben, aber es funktioniert immer noch nicht. Der Fehler ist 'keine passende Funktion für den Aufruf von' conv (arma :: uvec &, arma :: vec &, const char [5]) ' –
@RomainMartin - Sie verwenden wahrscheinlich eine alte Version von Armadillo, die nicht hat die letzte 'conv()' -Funktion. Entfernen Sie die vorherige Version und installieren Sie die Version [next] (http://arma.sourceforge.net/download.html). – mtall