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?
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.
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 :-)
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
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
Bei einer offline-Verarbeitung, d.h. wenn du das Signal aufgenommen und komplett zur Verfügung hast, kannst du ein akausales Filter anwenden. Wenn du es in Echtzeit machst nicht.
Na wenn das schon alles war, dann mal vielen Dank :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.