Gnuplot Phaseng. Filter < Anwendungsprogramme < Praxis < Informatik < Vorhilfe
|
Aufgabe | Plotten der Phasengänge des Butterworth Filters mit Gnuplot. Der Filter ist hierbei normiert mit einer Grenzfrequenz = 1 rad/s. |
Hallo Zusammen!
Ich habe ein Problem mit Gnuplot den Phasengang eines normierten Butterworth Filters der 2. Ord. (Grenzfrequenz=1) zu plotten. Ich denke es dürfte ein Fehler in der Funktion sein hier H(w)(siehe Script unten). Ich komme aber leider nicht drauf. Vielleicht kann mir ja jemand helfen, ich würde mich sehr freuen. Gruß Thilo
#Begin Script
set samples 2001
set encoding [mm] iso_8859_1
[/mm]
set terminal postscript enhanced landscape color lw 2 "Arial" 18
set output "butterwortTP-Phase.ps"
# Butterworth amplitude response and decibel calculation. n is the order, which is just 1 in this image.
G(w) = -atan(w)*180/pi
H(w) = -atan((sqrt(2.0)*(w))/(1.0-(w**2.0)))*180/pi
# Gridlines
set grid
# Set x axis to logarithmic scale
set logscale x 10
# Set range of x and y axes
set xrange [0.001:1000]
set yrange [-365:35]
# Create y-axis tic marks every 15 degrees
set ytics 30
# Create x-axis tic marks once per decade (every multiple of 10)
set xtics 10
# Use 10 x-axis minor divisions per major division
set mxtics 10
# Axis labels
set xlabel "Kreisfrequenz ({/Symbol w}) [rad/s]"
set ylabel "Phase [Grad]"
# No need for a key
set nokey #0.1,-25
# Frequency response's line plotting style
set style line 1 lt 1 lw 2 lc 6
set style line 5 lt 1 lw 2 lc 1
# Label coordinates are relative to the graph window, not to the function, centered at the 1/4 and 3/4 width points
set label 1 "Durchlassbereich" at graph 0.25, graph 0.1 c
set label 2 "Sperrbereich" at graph 0.75, graph 0.1 c
# -3 dB arrow style and arrow
# "Cutoff frequency" label uses same coordinates as the function
set label 3 "Grenzfreq." at 2,4 l
# put legend
set key 30, -20
# Plot the filter response
plot [mm] \
[/mm]
G(x) ls 1 title "1. [mm] Ord.",\
[/mm]
H(x) ls 5 title "2. Ord."
# End Script
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo!
zeig doch lieber erstmal, was da nicht klappt, oder wie die Formel theoretisch aussieht.
Nebenbei: mit
set angles degree
sagst du Gnuplot, daß du deine Winkel allesamt gerne in Grad hättest. Dein 180/pi brauchst du dann nicht mehr
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:17 Di 24.08.2010 | Autor: | Ausgedacht |
Schluesselwort
Hallo Sebastian,
was mir gnuplot liefert ist bei der 2. Ordnung des Butterworth-Filters nicht der erwartete Phasengang, der sollte nämlich gegen -180 Grad gehen.
Für die Phase des Butterworthfilters 2. Ordnung sollte folgendes gelten: [mm] roh(\omega)=-arctan((\wurzel{2}*\omega)/(1-\omega^{2})) [/mm]
Allgemein lautet die Formel für den Phasengangs für die Übertragungsfunktion: [mm] roh(\omega)=arctan(IM(H(j(\omega))/RE(H(j(\omega))) [/mm] wobei IM für den imaginären Teil der komplexen Übertragungsfunktion steht RE für den reellen Anteil.
Für die erste Ord. sieht das Ganze bei mir ja auch korrekt aus aber ich möchte einen Vergleich mit den Phasengängen und verscheidenen Filtern verschiedener Ord. machen, was hier schon bei der 2. Ord. beim Plotten schief läuft. Ich weiss momentan leider nicht wo mein Fehler liegt, er muss ja aber in der Funktion (hier H(w)) stecken.
Gruß Thilo
Habe hier noch schnell nen schlechtes jpeg. angehängt. Das schwarze gekrickel sollte der richtige Verlauf sein.
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: jpeg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:55 Di 24.08.2010 | Autor: | fencheltee |
> Schluesselwort
> Hallo Sebastian,
>
> was mir gnuplot liefert ist bei der 2. Ordnung des
> Butterworth-Filters nicht der erwartete Phasengang, der
> sollte nämlich gegen -180 Grad gehen.
> Für die Phase des Butterworthfilters 2. Ordnung sollte
> folgendes gelten:
> [mm]roh(\omega)=-arctan((\wurzel{2}*\omega)/(1-\omega^{2}))[/mm]
> Allgemein lautet die Formel für den Phasengangs für die
> Übertragungsfunktion:
> [mm]roh(\omega)=arctan(IM(H(j(\omega))/RE(H(j(\omega)))[/mm] wobei
> IM für den imaginären Teil der komplexen
> Übertragungsfunktion steht RE für den reellen Anteil.
> Für die erste Ord. sieht das Ganze bei mir ja auch
> korrekt aus aber ich möchte einen Vergleich mit den
> Phasengängen und verscheidenen Filtern verschiedener Ord.
> machen, was hier schon bei der 2. Ord. beim Plotten schief
> läuft. Ich weiss momentan leider nicht wo mein Fehler
> liegt, er muss ja aber in der Funktion (hier H(w))
> stecken.
> Gruß Thilo
>
> Habe hier noch schnell nen schlechtes jpeg. angehängt. Das
> schwarze gekrickel sollte der richtige Verlauf sein.
> [Dateianhang nicht öffentlich]
gibts in gnuplot evtl ne arctan2 version?
gruß tee
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:50 Di 24.08.2010 | Autor: | Ausgedacht |
Danke Tee!
Du hast mir sehr weiter geholfen!
Gruss
Thilo
|
|
|
|
|
Hallo!
Also, es liegt nicht an Gnuplot, sondern an deiner Funktion.
Du hast da
$ [mm] roh(\omega)=-arctan\left(\frac{\wurzel{2}\cdot{}\omega}{1-\omega^{2}}\right) [/mm] = [mm] -arctan\left(\frac{\wurzel{2}\cdot{}\omega}{(1-\omega)(1+\omega)}\right)$
[/mm]
Dieser Bruch hat eine Polstelle bei [mm] \omega=1 [/mm] von [mm] +\infty [/mm] nach [mm] -\infty
[/mm]
Und das sorgt dafür, daß dein arctan dort zwischen [mm] \pm180^\circ [/mm] springt.
Aber auch hier kann ich dir Tipps zu Gnuplot geben:
1: |
| 2: | gnuplot> print sqrt(-4)
| 3: | {0.0, 2.0}
| 4: | gnuplot> i={0,1}
| 5: | gnuplot> print i
| 6: | {0.0, 1.0}
| 7: | gnuplot> f(x)=cos(x)+i*sin(x)
| 8: | gnuplot> print f(0)
| 9: | 1.0
| 10: | gnuplot> print f(pi/2.0)
| 11: | {6.12303176911189e-17, 1.0}
| 12: | gnuplot> plot f(x)
| 13: | ^
| 14: | all points y value undefined!
| 15: |
| 16: | gnuplot> plot real(f(x)),imag(f(x))
| 17: |
|
Das heißt, du kannst eine komplexe Übertragungsfunktion definieren, und das mit dem Real- und Komplexteil kann gnuplot dann für dich. Versuch das mal!
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 19:52 Di 24.08.2010 | Autor: | Ausgedacht |
Danke für die zweite Hilfe, Sebastian!
Du hast mir sehr weiter geholfen!
Manchmal hilft einfach auch mal nen bisschen mitdenken .
|
|
|
|