Grüß euch Hat jemand eine Tabelle oder ein Tool zur Hand, mit dem ohne große Rechnerei die symbolischen Koeffizienten einer diskretisierten Übertragungsfunktion herausbekommt? Sprich s-Bereich -> 0.001572 s^3 + 1.22 s^2 + 28.69 s + 1.872 --------------------------------------------------------------- 1.603e-07 s^4 + 0.0003833 s^3 + 0.07381 s^2 + 0.3465 s + 0.0104 nach z -> 84.94 z^3 - 79.75 z^2 + 0.1227 z - 1.224e-19 --------------------------------------------------------- z^4 - 0.9786 z^3 + 0.008116 z^2 + 5.065e-20 z + 8.743e-39 Aber halt nicht irgendein numerischer Wert, sondern das entsprechende Symbol dafür bei Diskretisierungs-Methode XYZ... Gibts da was?
Die Funktion liefert Koeffizienten als Symbolnamen? Kann ich mir nicht vorstellen... Liest sich wie das Äquvalent von c2d aus Matlab, von dem ich obige Ausgabe kopiert hab.
Moin, Suchst du das da? https://de.wikipedia.org/wiki/Bilineare_Transformation_(Signalverarbeitung) Gruss WK
Lediglich bis 3. Ordnung?
Dergute W. schrieb: > Moin, > > Suchst du das da? > > https://de.wikipedia.org/wiki/Bilineare_Transformation_(Signalverarbeitung) > > Gruss > WK Nein. Ich kenne die Methoden zum Diskretisieren und könnte sie theoretisch anwenden. Bei komplexeren Ausdrücken ist das aber recht unlustig. Ich bin auch mit Matlab und Co vertraut, aber von denen bekomm ich nur numetische Werte. Mein (recht simples) mathematisches Verständnis lässt mich aber vermuten, dass es zw. s- und z-Bereich einen direkten Zusammenhang gebeb müsste...? Ohne das man extra einsetzen und ausmultiplizieren muss.
Moin, Vincent H. schrieb: > Mein (recht simples) mathematisches Verständnis lässt mich aber > vermuten, dass es zw. s- und z-Bereich einen direkten Zusammenhang gebeb > müsste...? Ohne das man extra einsetzen und ausmultiplizieren muss. Hmmm - ich weiss nicht was du da vorhast... z = exp(s * T_abtast) waere ein Zusammenhang zwischen s und z. Aber ohne "einsetzen" und "ausmultiplizieren" wirst du nicht so recht weiterkommen... Gruss WK
Vielleicht solltest du beschreiben wozu du das vorhast und was du dann mit diesen symbolischen Koeffizienten machst. Und ob es dann nicht sinnvoller wäre, Pol- und Nullstellen, statt dieser Koeffizienten zu überführen
Vincent H. schrieb: > Mein (recht simples) mathematisches Verständnis lässt mich aber > vermuten, dass es zw. s- und z-Bereich einen direkten Zusammenhang gebeb > müsste...? Gibt es nicht. Dein mathematisches Verständnis sollte dir sagen, dass alleine die Tatsache, dass in z-Bereich die Sache zyklisch mit der Abtastfrequenz wird, s aber nicht, dir da einen Strich durch die Rechnung macht.
So, habs jetzt ausmultipliziert... Geht man von folgender Form im Bildbereich aus: b0 * s^4 + b1 * s^3 + b2 * s^2 + b3 * s + b4 -------------------------------------------- a0 * s^4 + a1 * s^3 + a2 * s^2 + a3 * s + a4 Dann ergeben sich beim Diskretisieren nach Tustin folgende Koeffizienten im Z-Bereich (T ^= Abtastzeit): b0z = (b4*T^4 + 2*b3*T^3 + 4*b2*T^2 + 8*b1*T + 16*b0); b1z = (4*b4*T^4 + 4*b3*T^3 - 16*b1*T - 64*b0); b2z = (6*b4*T^4 - 8*b2*T^2 + 96*b0); b3z = (4*b4*T^4 - 4*b3*T^3 + 16*b1*T - 64*b0); b4z = (b4*T^4 - 2*b3*T^3 + 4*b2*T^2 - 8*b1*T + 16*b0); a0z = (a4*T^4 + 2*a3*T^3 + 4*a2*T^2 + 8*a1*T + 16*a0); a1z = (4*a4*T^4 + 4*a3*T^3 - 16*a1*T - 64*a0); a2z = (6*a4*T^4 - 8*a2*T^2 + 96*a0); a3z = (4*a4*T^4 - 4*a3*T^3 + 16*a1*T - 64*a0); a4z = (a4*T^4 - 2*a3*T^3 + 4*a2*T^2 - 8*a1*T + 16*a0); Wozu ich das gebraucht hab? Ganz einfach. Ich finds ziemlich grauslich ein physikalisches Modell im Code zu haben, dass durch externe Tools mit irgendeiner "Magic"-Number gefüttert wird. Statt sinnvolle Konstante ala R1 = 10R C1 = 0.1uF T = 100us irgendwo abgelegt zu haben, steht dann nur mehr a0 = 0.0018241; Im schlimmsten Fall kommt dann ein Kollege daher und meint ein 100us Timer frisst ja viel zu viel Rechenleistung. Wir stellen den Timer auf 200us um... Und a0? Keine Ahnung was das macht. Oder vielleicht weiß ers doch, aber MATLAB und Python sind Fremdwörter, usw. usf.
Und was machst du jetzt, wenn dein Kollege ein System höherer Ordnung betrachten will? Natürlich kannst du die Diskretisierung auch selbst programmieren. Aber dann doch lieber allgemeingültig und nicht auf bestimmte Systeme begrenzt? Wie das in python gemacht wird ist offen für jeden den es interessiert
Dann hoff ich für erm, dass a a) mit Bleistift und Papier oder b) mit Matlab oder Python umgehn kann. Die obige Lösung ist für alle System bis 4.Ordnung gültig. Wie das gemacht wird ist auch offen für jeden... Wers nicht schafft s zu substituieren, der soll bitte ein Mathematik-Buch der Unterstufe organisieren.
Ok, etwas spaet. Hier ist eine Loesung in maxima. http://maxima.sourceforge.net/
1 | (%i505) Hs; |
2 | 4 3 2 |
3 | b0 s + b1 s + b2 s + b3 s + b4 |
4 | (%o505) --------------------------------- |
5 | 4 3 2 |
6 | a0 s + a1 s + a2 s + a3 s + a4 |
7 | (%i506) sz; |
8 | 2 (z - 1) |
9 | (%o506) --------- |
10 | (z + 1) T |
11 | (%i507) Hs, s=sz; |
12 | 2 3 4 |
13 | 2 b3 (z - 1) 4 b2 (z - 1) 8 b1 (z - 1) 16 b0 (z - 1) |
14 | ------------ + ------------- + ------------- + -------------- + b4 |
15 | (z + 1) T 2 2 3 3 4 4 |
16 | (z + 1) T (z + 1) T (z + 1) T |
17 | (%o507) ------------------------------------------------------------------ |
18 | 2 3 4 |
19 | 2 a3 (z - 1) 4 a2 (z - 1) 8 a1 (z - 1) 16 a0 (z - 1) |
20 | ------------ + ------------- + ------------- + -------------- + a4 |
21 | (z + 1) T 2 2 3 3 4 4 |
22 | (z + 1) T (z + 1) T (z + 1) T |
23 | (%i508) ratsimp(%,z); |
24 | 2 4 2 |
25 | (%o508) (z (6 b4 T - 8 b2 T + 96 b0) |
26 | 3 4 3 |
27 | + z (4 b4 T + 4 b3 T - 16 b1 T - 64 b0) |
28 | 4 3 |
29 | + z (4 b4 T - 4 b3 T + 16 b1 T - 64 b0) |
30 | 4 4 3 2 4 3 2 |
31 | + z (b4 T + 2 b3 T + 4 b2 T + 8 b1 T + 16 b0) + b4 T - 2 b3 T + 4 b2 T |
32 | 2 4 2 |
33 | - 8 b1 T + 16 b0)/(z (6 a4 T - 8 a2 T + 96 a0) |
34 | 3 4 3 |
35 | + z (4 a4 T + 4 a3 T - 16 a1 T - 64 a0) |
36 | 4 3 |
37 | + z (4 a4 T - 4 a3 T + 16 a1 T - 64 a0) |
38 | 4 4 3 2 4 3 2 |
39 | + z (a4 T + 2 a3 T + 4 a2 T + 8 a1 T + 16 a0) + a4 T - 2 a3 T + 4 a2 T |
40 | - 8 a1 T + 16 a0) |
41 | (%i509) string(%); |
42 | (%o509) (z^2*(6*b4*T^4-8*b2*T^2+96*b0)+z^3*(4*b4*T^4+4*b3*T^3-16*b1*T-64*b0)+z\ |
43 | *(4*b4*T^4-4*b3*T^3+16*b1*T-64*b0)+z^4*(b4*T^4+2*b3*T^3+4*b2*T^2+8*b1*T+16*b0)\ |
44 | +b4*T^4-2*b3*T^3+4*b2*T^2-8*b1*T+16*b0)/(z^2*(6*a4*T^4-8*a2*T^2+96*a0)+z^3*(4*\ |
45 | a4*T^4+4*a3*T^3-16*a1*T-64*a0)+z*(4*a4*T^4-4*a3*T^3+16*a1*T-64*a0)+z^4*(a4*T^4\ |
46 | +2*a3*T^3+4*a2*T^2+8*a1*T+16*a0)+a4*T^4-2*a3*T^3+4*a2*T^2-8*a1*T+16*a0) |
47 | (%i510) |
Trotzdem Danke für die Mühe und die Erwähnung dieses schönen Tools!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.