Forum: Digitale Signalverarbeitung / DSP / Machine Learning Filter 2-ter Ordnung


von Walter L. (Gast)


Lesenswert?

Hallo,

ich möchte die Erg. der Implementierung in C eines "Filters" 2-ter 
Ordnung vergleichen (realisiert über den Zustandsraum und über die 
Z-Transformation).

Ausgangspunkt ist die Dgl. eines Reihenschwingkreises mit L=1H, C=1F, 
R=0,2Ohm. y ist die Spg. über C, u die Spg. über der Reihenschaltung von 
L,C,R.

y(zwei_punkt)+0,2*y(punkt)+y=u;

"punkt" ist die Ableitung nach der Zeit,
y die Ausgangsgröße, u die Eingangsgröße.
Die Eingangsgröße springt von 400 auf 600 alle Sek. hin und her.
y gebe ich auf einen DAC und zeige das Erg auf einem Osz.

Die Zustandsraumrealisierung funktioniert und liegt als C-Code vor.

Hat jemand eine Realisierung über die Z-Transformation in C?
Wichtig ist, dass die Abtastzeit „Tab“ im C-Code eingebbar ist, und in 
der Initphase entsprechend mit den Koeffizienten verrechnet wird.

Ein Austausch des Quellcodes ist selbstverständlich.

VG Walter

von Rezy (Gast)


Lesenswert?

Moin,

du kannst bspw. die Übertragungsfunktion H(s) des zeitkontinuierlichen 
Systems bestimmen und dieses dann mithilfe der bilinearen Transformation 
in ein zeitdiskretes Filter wandeln.

von Rezy (Gast)


Lesenswert?

Das Filter ist dann auch schnell in C geschrieben. Das habe ich 
übersehen..

von Walter L. (Gast)


Lesenswert?

Rezy. Ich brauche den C-Code!
Im Tausch....

von Rezy (Gast)


Lesenswert?

Walter L. schrieb:
> Rezy. Ich brauche den C-Code!
> Im Tausch....

Code für Filter 2. Ordnung findest du quasi überall.....

Aber deine Koeffizienten musst du schon selbst bestimmen.

von Walter L. (Gast)


Lesenswert?

Rezy->Leeeesen!!!!
L,C,R sind gegeben.
Zeige den den rekursiven c-code.

von Rezy (Gast)


Lesenswert?

Walter L. schrieb:
> Rezy->Leeeesen!!!!
> L,C,R sind gegeben.
> Zeige den den rekursiven c-code.

Du verlangst von mir (in unfreundlichem Ton), den Code zu zeigen und die 
Koeffizienten des Filters (mittels einer geeigneten Transformation) 
überhaupt erst einmal korrekt zu bestimmen? Und das auch noch 
unentgeltlich?

Nein, danke. Ich habe schon genügend Hinweise gegeben. Niemand kann dir 
hier den fertigen Code geben, OHNE das Filter zuvor zu digitalisieren 
(mit welcher Methode auch immer).

Und damit bin ich hier raus ;)

von Walter L. (Gast)


Lesenswert?

Das ist gut so.
Als Gegenleistung, wie schon geschrieben, biete ich allen Interessierten 
den C-code rekursiv im Zustandsraum an.

von Walter L. (Gast)


Lesenswert?

Zu dem Gast: Es ist das Gleiche, als wenn ich sage, Zustandsraumlösung 
ist doch ganz einfach, schau ins Internet, brauchst nur die die 
Transitionsmatrix über das C.-H-Theorem lösen, musst nur aufpassen, wenn 
der Wert unter der Wurzel neg. wird, dann A hoch minus 1 und den 
Steuervektor noch für die parti. Lösung einbinden, und schon ist alles 
zusammen.

Über die Differenzen-Methode

y(zwei punkt) ~=(y(kT)-2*y(k(T-1))+y(k(T-2)))/(Tab*Tab) und

y(punkt) ~=(y(kT)-y(k(T-1)))/Tab

mit Tab = 0,1 funktioniert dies rekursiv jetzt auch. Auch hier gerne im 
Tausch gegen den rekursiven C-code gelöst über die Z-Transformation.

VG Walter

von Walter L. (Gast)


Lesenswert?

Hallo,

die Sache ist geklärt.
Habe eine Veröffentlichung aus 1981 gefunden...

Für mich ist damit die Z-Transformation durch den Zustandsraum abgelöst.

VG Walter

von Bienzle (Gast)


Lesenswert?

Walter L. schrieb:
> Als Gegenleistung, wie schon geschrieben, biete ich allen Interessierten
> den C-code rekursiv im Zustandsraum an.

Da melde ich mich schon mal an.

von MATLAB-user (Gast)


Lesenswert?

Walter L. schrieb:
> y(zwei_punkt)+0,2*y(punkt)+y=u;
> "punkt" ist die Ableitung nach der Zeit,
Wir haben das irgendwann in grauer Vorzeit mal so gelernt:

Y'' + 0,2 Y' + Y = u

ist das so nicht mehr aktuell?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.