Einmal C-Programm prüfen

OP #2403446
Lesenswert?

Hallo,

ich habe im Netz beiliegendes Programm für den Kalman-Filter gefunden 
und für mich in eine andere Sprache umgeschrieben.

Zur Überprüfung suche ich jemand, der das C-Programm mal laufen lässt 
und mir die ersten 20 ausgegebenen Werte zukommen lässt, so dass ich 
diese zur Kontrolle mit den Ausgaben meines Programmes vergleichen kann.

Danke.

W.
Angehängte Dateien:
Gast #2403468
Lesenswert?

Mini Float schrieb:
> Da war wohl argh schneller.
:D

Ich hab immer ein Code::Blocks-Projekt auf dem Desktop für genau solche 
Fälle. Vorher war da ein Sudokusolver drin, jetzt halt irgendein 
Filterzeugs (zu hoch für mich)...

Und die Anzahl Dezimalstellen zu erhöhen ist ja wahrlich keine Kunst, 
ebenso die Ausgabe in eine Datei zu bekommen.

Ist übrigens sauber geschrieben, nur 2 Warnungen unused argc, argv.
OP #2403481
Lesenswert?

Erst mal vielen Dank für die Hilfe.

Ihr dürft mich schlagen, aber ich habe den Code in BASCOM umgeschrieben.

Nach dem Vergleich mit euren Ergebnissen kann ich sagen, dass ich genau 
die gleichen Werte erhalte (trotz BASCOM).

Verwundert bin ich nur über die Ergebniswerte. Die passen so garnicht zu 
den Eingaben. Kalman-Ergebnisse erwarte ich als geglättete Werte in der 
Größenordnung der Einganswerte.

Hier enthalten die Ergebnisse richtige Ausreiser, so dass vermutlich im 
Ausgangscode ein Fehler enthalten ist.
Zum Schluss sehen die Ergebnisse jedoch ganz gut aus.


Kann von euch jemand die Kalman-Ergebnisse beurteilen ?

Danke

W.
OP #2403520
Lesenswert?

Wo gibt es denn eine Aussage über die Geschwindigkeit des gleichen Codes 
in BASCOM und C auf dem gleichen Atmega ?

Wer kann den einmal die Laufzeit messen ?
z.B. mit einem Atmega 8 oder 32 und bitte Quarzfrequenz angeben

Vorschlag:

Nur die Rechnungen durchführen und nach dem Abschluss ein "fertig" 
ausgeben.

Ich werde das in den nächsten Tagen dann auch mal machen.

Oder hat jemand einen Simulator der die Takte für einen Aufruf der 
Funktion ausgeben kann ?

W.
#2403563
Lesenswert?

Wolfgang Schmidt schrieb:
> Ich habe gerade 13247 Zyklen für einen Aufruf der Kalman-Funktion
> gemessen.

Weil in dieser Funktion in float gerechnet wird, wird es kaum einen 
Unterschied zwischen C und Bascom geben.

Wolfgang Schmidt schrieb:
> Ich habe gerade 13247 Zyklen [...] gemessen.

Das kann man pauschal nicht sagen, da für float z.B. mal mehr, mal 
weniger geshiftet werden muss, bis eine normalisierte Zahl rauskommt(bei 
Multiplikationen). Die Multiplikationen können nur zum Teil in Hardware 
ausgeführt werden, da der in der Hardware vorhandene Multiplier keine 
24bit-Zahlen verarbeiten kann(23 bit Mantisse mit wegnormalisierter 
"leading one").

Außerdem wird in der Funktion auch dividiert. Weil die kleinen Megas 
keinen Divider in Hardware haben, lassen sich auch hier keine absoluten 
Zykluscounts angeben.

mfg mf
OP #2403674
Lesenswert?

Mini Float schrieb:
> Weil in dieser Funktion in float gerechnet wird, wird es kaum einen
> Unterschied zwischen C und Bascom geben.

Genau diesen Satz wollte ich von einem C-Programmierer hören.
Damit dürfte die Überheblichkeit der C-Programmierer einen Dämpfer 
bekommen haben.

Dass die im Simulator angegebene Zyklenzahl von Randbedingungen abhängt, 
ist doch klar.

Normalerweise gewinnt der bessere Programmierer. Ob C++ oder BASCOM oder 
auch PASCAL ist fast egal.
Nur Assembler nimmt eine Sonderstellung ein.

W.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren