mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Frequenzgang Mittelwertfilter mit diversen Ergebnisfeldern plotten


Autor: Signalverarbeiter (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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:
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.

Autor: Signalverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Signalverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Signalverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Signalverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat niemand ne Ahnung?

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Signalverarbeiter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na wenn das schon alles war, dann mal vielen Dank :-)

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.