Übertragungsfunktion diskretisieren -> Koeffizienten (symbolisch) gesucht

OP #5240816
Lesenswert?
• ▲
▼
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?
OP #5241112
Lesenswert?
• ▲
▼
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.
#5241386
Lesenswert?
• ▲
▼
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
Gast #5241705
Lesenswert?
• ▲
▼
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
Gast #5241711
Lesenswert?
• ▲
▼
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.
OP #5241932
Lesenswert?
• ▲
▼
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.
Gast #5241937
Lesenswert?
• ▲
▼
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
OP #5241976
Lesenswert?
• ▲
▼
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.
Gast #5242173
Lesenswert?
• ▲
▼
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)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.