Frequenzgang Mittelwertfilter mit diversen Ergebnisfeldern plotten

Gast #1741167
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 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.