www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Filterimplementierung in Simulink


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: leon (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hallo,

ich möchte in Simulink einen Bandpass realisieren. Hierfür habe ich ein 
Tool gefunden, womit man die Koeffizienten sowie die Pole und die 
Nullstellen berechnen kann. Das Tool generiert ebenfalls ein C-Code.
Siehe Dateianhang.

Z domain Zeros
z = -1.000000 + j 0.000000
z = 1.000000 + j 0.000000

Z domain Poles
z = 0.999509 + j -0.024535
z = 0.999509 + j 0.024535

Wie kann ich nun laut diesen Angaben eine diskrete Übertragungsfunktion 
erstellen ? Wie müsste die Übertragungsfunktion aussehen ?

Autor: leon (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ich habe mal die Übertragungsfunktion aufgestellt:
G(z) = \frac{-1}{0.999509 -0.024535 \cdot z^{-1}} \cdot \frac{1}{0.999509 + 0.024535 \cdot z^{-1}}

Bin mir nicht sicher, ob die Übertragungsfunktion so stimmt.

Autor: russenbaer (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Wenn Du simulink hast hast auch MATLAB:

doc zp2tf

Frü die Faulen :)

lg
russenbaer

Autor: leon (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke für die Info. Die Funktion kenne ich bereits. Ich bin mir halt 
nicht sicher, ob die Übertragungsfunktion korrekt ist. Nur das wollte 
ich eigentlich wissen.

Autor: :-) (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Wie hast du denn die Übertragungsfunktion erstellt? Hast du theoretische 
Grundlagen, oder wo kommt die her?

MMn ist sie jedenfalls nicht richtig, denn rechne mal die 
Nullstellen/Polstellen nach, (Polstellen = Nennerpolynom nullsetzen, 
Nullstellen = Zählerpolynom nullsetzen). Da kommen andere Werte heraus, 
also kann das gar nicht die Übertragungsfunktion sein.

Schöne Grüße

Autor: leon (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Ok die Übertragungsfunktion die ich aufgestellt habe ist falsch.
Wo bringe ich diesen Pol: 0.999509 + j -0.024535 = z im Nenner von der 
Übertragungsfunktion unter?
z=e^{j \cdot w \cdot t}

Autor: :-) (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Hi!
z=e^{j\omega T}

Das große T ist wichtig, wir befinden uns im diskreten Bereich ;)

Was auch immer, diese Angabe benötigst du nur, wenn du den Frequenzgang 
deiner diskreten Übertragungsfunktion bestimmen möchtest. Willst du hier 
aber gar nicht ;)

Ganz allgemein gilt:
H(z)=K\frac{b_0+z\cdot b_1+\cdot z^2 + b_2\cdot z^3 ...}{a_0+z\cdot a_1+\cdot z^2 + a_2\cdot z^3 ...}
Das K verändert sich je nachdem, wie man den Spaß normiert (also ob man 
z.B. die höchste Potenz von z auf 1 normiert, oder konstanten 
Koeffizienten etc).

Das ist die Polynomialdarstellung. Da man jedes Polynom vollständig 
faktorisieren kann (ggf. unter Verwendung von komplexen Zahlen) gilt 
auch:
H(z)=K'\frac{(z-z_0)(z-z_1)(z-z_2)...}{(z-p_0)(z-p_1)(z-p_2)...}
Das ist die faktorisierte oder Pol-Nullstellen Darstellung.

Beachte: das K' ist ein anderes als das K oben. z_0, z_1... steht für 
zeros. Also die Nullstellen (hast du gegeben), p_0, p_1,... steht für 
Poles also Polstellen, die wiederrum die Nullstellen des Nennerpolynoms 
sind.

Da du Pol- & Nullstellen gegeben hast, kannst du sie einsetzen und bist 
entweder fertig, oder multiplizierst das ganze noch aus (unten 3. 
binomische Formel, gilt auch mit komplexen Zahlen, wobei j*j=-1 ist), um 
wieder auf die Polynomdarstellung zu kommen. Wenn du möchtest kannst 
dann auch noch die höchste Potenz von z ausklammern und kürzen, sodass 
du negative Expontenten in deinen z erhälst, das ist manchmal praktisch, 
weil man unter Umständen besser die Ursprungsfolge bestimmen kannst, 
aber keine Ahnung ob du das machen willst ;)

Wenn was unklar ist, frag nach.

Schöne Grüße

Autor: leon (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Vielen Dank für deine Ausführung!

In Simulink gibt es da noch ein weiteres Problem. Ich benutze das 
Element "Discrete Transfer FCN" um die beiden Übertragungsfunktionen in 
Simulink abzubilden. Wie kann ich nun den komplexen Pol in diesen Block 
unter Denominator coefficients integrieren ? Komplexe Größen wie das j 
bzw. i werden nicht akzeptiert.

Autor: :-) (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Wieso zwei Übertragungsfunktionen?

Was hast du denn jetzt raus?

Und Simulink akzeptiert garantiert i bzw j, es aktzeptiert quasi alles, 
was in matlab syntax eingegeben wird.

Gib doch mal "doc zpk" oder "doc tf" ein, dann siehst du, wie du die 
Nenner/Zähler Koeffizienten angeben musst.

Autor: leon (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Leider habe ich keine entsprechende Toolboxen für Matlab und Simulink.

Autor: Jan K. (jan_k)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net