Frequenzgang Mittelwertfilter mit diversen Ergebnisfeldern plotten

Gast #1741167
Lesenswert?

Hi Leute,

ich bräuchte für meine Diplomarbeit eine weitere Darstellung des 
Phasengangs eines Mittelwertfilters in Matlab. Das angehängte Bild habe 
ich in Matlab generiert. Darauf ist der Frequenzgang eines 3er und 5er 
Mittelwertfilters zu sehen. Die Phasenverschiebung fällt von Anfang an 
kontinuierlich ab. Dies kommt dadurch zustande, dass das Ergebnisfeld 
auf der rechten Seite liegt.
Also bei einem Mittelwertfilter 5. Ordnung multipliziert man alle Werte 
mit 1/5 und addiert diese. Das Ergebnis kommt dann im Bild an die Stelle 
wo das rechte Feld des Filters gerade steht.

Um diese weglaufende Phase zu vermeiden habe ich in Matlab meinen 
Mittelwertfilter einfach selbst gemacht und lege das Ergbnisfeld einfach 
in die Mitte. So bleibt die Phase stabil so lange der Filter kleiner als 
eine Periode des Signals ist. Dieses Verhalten würde ich gerne plotten 
lassen. Kann mir da jemand weiterhelfen?
Angehängte Dateien:
Admin Persönliche Seite #1741544
Lesenswert?

Signalverarbeiter schrieb:
> und lege das Ergbnisfeld einfach in die Mitte

Du hast die Impulsantwort um 2 nach links verschoben und hast damit ein 
akausales Filter. Im z-Bereich entspricht diese Verschiebung einer 
Multiplikation der Übertragungsfunktion mit z^2. Das kannst du "von 
Hand" auswerten und plotten, oder einfacher mit freqz:
1
freqz([1 1 1 1 1]/5,[0 0 1])

Allerdings ist es normalerweise völlig ausreichend zu sagen dass ein 
Filter eine lineare Phase und damit nur eine Zeitverzögerung hat. Dass 
man diese durch ein nichtkausales Filter ausgleichen kann ist keine 
Erkenntnis die einen eigenen Plot verdient.
Gast #1742109
Lesenswert?

Diese lineare Phase will ich aber nicht haben. Daher muss ich das so 
machen. Wieso reicht es aus wenn ich die Impulsantwort verschiebe? 
Dadurch rückt das Ergebnisfeld ja nicht in die Mitte? Und den Code kann 
ich auch nicht verwenden, da dies kein richtiges Mittelwertfilter mehr 
ist:

freqz([1 1 1 1 1]/5,[1 0 0 0 0]) sollte es im Normalfall heißen.

Wenn ich ein 5er Filter mit z^2 multipliziere dann sollte ich:

freqz([1 1 1 1 1]/5,[0 0 1 0 0]) nehmen, liege ich da richtig?

Danke für deine Antwort, hoffe Du meldet Dich nochmal :-)
Gast #1742229
Lesenswert?

Ich habe mich vertan...

Deine Funktion: freqz([1 1 1 1 1]/5,[0 0 1]) stimmt so. 
0*z^2+0*z^1+1*z^0 Ich hab was verdreht. Muss die Rechnung aber nochmal 
von Hand machen. Hab noch nicht ganz begriffen, weshalb durch das nicht 
kausale Filter das Ergebnisfeld in die Mitte rutscht. Danke für deine 
Hilfe
Gast #1742599
Lesenswert?

Hi,

von der Realisierung habe ich das ganze nun verstanden, jedoch habe ich 
ein kleines Problem mit der Verwendung des nicht kausalen Filters. Ich 
hab in der Vorlesung gelernt, man könne die nicht verwenden, weil diese 
ja Werte aus der Zukunft benötigen. Klar es funktioniert wenn ich mir 
meine Auswertung anschaue, aber ich möchte das ganze theoretisch für 
meine Ausarbeitung erfassen. Ich hoffe Ihr meldet euch nochmal.

Gruß Sigi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren