Grüß euch
Ich benötige für eine Kurvenglättung eine Interpolationsmethode und habe
aus diesem Grund eine kurze Funktion geschrieben, die kubische Splines
erzeugt.
Die Ergebnisse der Funktion bestehen aus den drei Koeffizienten der
Splines und werden in eine Struktur gepackt.
1
structSpline
2
{
3
floata3;
4
floata2;
5
floata1;
6
};
Nun habe ich folgendes Problem. Aus irgendeinem Grund hängt das
Rechenergebnis der Interpolation von der Reihenfolge ab mit der ich die
Variablen vor dem Funktionsaufruf anlege.
Und zwar rechnen folgende Zeilen richtig:
Moin,
Initialisiere deine Deklarationen mal vernünftig.
Sieht mir danach aus, als wenn du nicht initialisierte Variablen
benutzt. Das würde auch dein Fehlerbild erklären.
Jim M. schrieb:> Außer Stack Overflow würde mir da ertmal nix zu einfallen.> Zeige mal den vollständigen Code, da ist zu 99.99% was anderes faul.
Achtung die Funktion nutzt "variable length" arrays. Ich mach mich grad
ran nochmal die leider recht komplexen Indizes zu prüfen...
Uninitialisierte Variablen seh ich keine.
Wenn i=n-2 ist, ist für n=4 also i=2. Somit ist i+1=3, und spline[i+1]
ist ein Buffer Overflow, da spline nur 3 Elemente groß ist.
Und wieder einmal ist der Programmierer, und nicht der Compiler, schuld
:P
>> Wenn i=n-2 ist, ist für n=4 also i=2. Somit ist i+1=3, und spline[i+1]> ist ein Buffer Overflow, da spline nur 3 Elemente groß ist.>> Und wieder einmal ist der Programmierer, und nicht der Compiler, schuld> :P
Ah Gott sei Dank!!!
Ja dass der Programmierer Schuld ist war eh klar :)
Ich hab den Algorithmus zuerst in MATLAB runtergeschrieben, dass ja bei
Indizes 1 zu zählen beginnt. Und als ob das nicht mühsam genug wär
kommen einige temporäre Variablen dann halt auch noch entweder N-1 oder
N-2 mal vor... was die Sache mit den Indizes nicht unbedingt
vereinfacht. :)
Danke!
Eine eigene Frage?
Dieser Thread ist über 10 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.