www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Scilab: wie FIR Filter mit nichtlinearer Phase entwerfen?


Autor: Gerd Gerd (gege)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnte mir jemand einen Tip geben, wie man in Scilab FIR Filter mit 
nichtlineare Phase (kurzer Antwortzeit auf Impuls-Signal) realisiert?

Gruß

Gerd.

Autor: Noura Hoffmann (noura)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi

ich will nur fragen ob du eine Lösung gefunden hast.
ich muss das gleiche machen, und ich habe noch keine Idee.
ich wäre sehr dankbar, wenn du mir dabei helfen konntest!

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Noura,

Ich hab das so "gelöst" daß ich keine FIR-Filter mehr benutze sondern 
IIRs - hab nicht herausbekommen/verstanden wie nicht-lineare FIRS zu 
berechnen sind.

Gruß

Gerd.

Autor: Noura Hoffmann (noura)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi Gerd
danke für deine Antwort!
kannst du mir trotzdem das zeigen und ich versuche mal anders mit 
FIR-Filter.

Gruß

Noura

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FIR Filter sind per Definition linearphasig. Wenn man die Phase ändern 
will (z.B. Allpass) muss man IIR Filter benutzen.

Autor: Gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FIR-Filter können - nach meinem Verständnis - linearphasig als auch 
nictlinearphasig sein - je nachdem wie man die Koeffizient wählt.

Oder?

Die Frage war welche Designprinzipien/Algorithmen es gibt um 
nichtlineare FIR-Koeffizienten zu finden.

Autor: joep (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>FIR Filter sind per Definition linearphasig. Wenn man die Phase ändern
>will (z.B. Allpass) muss man IIR Filter benutzen.

Auch FIR-Filter können einen nichtlinearen Phasengang haben. Die lineare 
Phase kommt eigentlich nur von der Symmetrie der Koeffizienten.

Leider kenne ich mich mit Scilab überhaupt nicht aus, weshalb ich beim 
ursprünglichen Problem auch nicht weiter helfen kann...

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab mal ins Matlab-Buch geschaut,( ISBN 9783486584271 ) da steht, 
alle in Tabelle.. aufgelisteten FIR-Filter sind linearphasig außer 
"cfirpm". In der Tabelle steht dazu "Equiripple FIR-Filter mit 
beliebigem Frequenzgang (Filter evtl. komplexwertig und mit 
nichtlinearer Phase"
Jetzt müßte es nur einen vergleichbaren Befehl in Scilab geben.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die 13-stelligen ISBN-Nummern funktionieren immer noch nicht direkt zu 
Amazon. Es ist das Buch "Signalverarbeitung mit MATLAB und SIMULINK von 
Josef Hoffmann und Franz Quint, Verlag http://www.oldenbourg.de 2007

hier die Online-Hilfe von Matlab zu cfirpm:
http://www.mathworks.com/access/helpdesk/help/tool...
Complex and nonlinear-phase equiripple FIR filter design
aber in scilab und octave ist der Befehl wohl unbekannt.

Autor: Daniel S. (theoretiker)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verzeiht mir meine dumme Frage ..
aber wie genaue ist diese Eigenschaft "lineare Phase" definiert?
Ich kenne nur lineare DGL und sich daraus ergebende lineare Systeme.
Aber lineare Phase hab ich noch nie gehört.

Grüsse, Daniel

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

Bewertung
0 lesenswert
nicht lesenswert
Lineare Phase = konstante Gruppenlaufzeit = alle Frequenzen werden um 
die selbe Zeit verzögert, die Signalform wird nicht verzerrt.

Autor: FL (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die "dümmste" Möglichkeit, ein FIR Filter mit nicht-linearer Phase zu 
entwerfen:

- Nimm ein IIR-Filter mit nichtlinearer Phase, berechne die 
Impulsantwort dieses Filters.
- Schneide diese Impulsantwort an geeigneter Stelle ab (evtl. mit einem 
"fade out").
- Nimm die resultierende endliche Impulsantwort als Koeffizienten Deines 
FIR-Filters.

Gruß
FL

Autor: Ali K. (lernen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
FL wrote:
> Die "dümmste" Möglichkeit, ein FIR Filter mit nicht-linearer Phase zu
> entwerfen:
>
> - Nimm ein IIR-Filter mit nichtlinearer Phase, berechne die
> Impulsantwort dieses Filters.
> - Schneide diese Impulsantwort an geeigneter Stelle ab (evtl. mit einem
> "fade out").
> - Nimm die resultierende endliche Impulsantwort als Koeffizienten Deines
> FIR-Filters.
>
> Gruß
> FL

Ich hätte eine Frage, was meinst du mit "Fade out". Ich habe das gleiche 
Prblem aber anderes um, ich habe ein IIR filter der nicht linear Phasig 
ist, und ich möchte daraus linear phasig machen, 3 Möglichkeiten:
1)Fir statt IIr: leider wegen der höhen Filter Ordnung passt nicht.
2)Vorwärts rückwärts filtereung: leider passt nur für "offline"
3)Vielleicht mit Allpass: weiss jemand wie ich das in matlab realisiere 
und wie ich es danach in c++ umsetze. in matlab help habe ich den befehl 
"dfilt.allpass(c)" aber wie ich weiss es nicht wie es mit dem Vector c 
geht, wenn ich diese vector c habe, wie soll ich es mit meinem Filter 
kombiniere,und wie soll ich es danach in c++ umsetze.
Momentan komme ich nicht mehr weiter, ich werde mich freuen wenn mir 
jemand dabei hilft. vielen dank im voraus.

Gruss Ali

Autor: joep (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Ali K. (lernen)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
joep wrote:
> hi,
> versuchs mal hiermit:
> 
http://www.mathworks.com/matlabcentral/fileexchang...

Hallo Joep,
ich habe ein kleine Simulation mit dem Befehl allpass gemacht.ich habe 
sie angehängt, es zeigt mir einen fehler weiss nicht wieso.
ich habe Tiefpass filter mit fp=4hz und fs=4.5hz.was ist falsch bei mir?
kannst du mir genauer antworten.
Danke.

Autor: Ali K. (lernen)
Datum:
Angehängte Dateien:
  • Sim.m (123 Bytes, 234 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
joep wrote:
> hi,
> versuchs mal hiermit:
> 
http://www.mathworks.com/matlabcentral/fileexchang...

das ist mfile dazu

Autor: julian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaaalso:

bei FIR Filtern ist das folgendermaßen.
wie schon oben erwähnt hängt die linearphasigkeit von den Koeffizienten 
ab.

ein FIR ist Linearphasig, wenn seine Koeffizienten symmetrisch um die 
Mitte aufgebaut sind. Also muss er auf jeden fall auch eine ungerade 
anzahl an Koeffizienten haben, da es sonst keine mitte gibt.

Beispiel:

Koeff: 0.25, 0.5, 0.25 => Linearphasig

Koeff: 0.25, 0.5, 0.75 => Nicht Linearphasig

Koeff: 0.25, 0.5, 0.5, 0.25 => Nicht Linearphasig

Autor: Dipl.-Ing. Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich muss das etwas korrigieren - ein FIR-Filter muss nur eine
symmetrische* Impulsantwort besitzen. Die Koeffizientenanzahl kann
auch gerade** sein.

Das FIR-Filter [0.25, 0.5, 0.5, 0.25] ist daher auch linearphasig.


Dieses Filter besitzt die Ordnung 3 (siehe **, gezählt wird von Null 
weg). Die Gruppenlaufzeit beträgt 1.5 Samples. Wegen dieser nicht 
ganzzahligen Verzögerung wird in DSP-Systemen eben davon abgesehen. Das 
Filter ist
aber sehrwohl linearphasig.

Gruß
    Markus



* Um etwas weiter auszuholen: Die Impulsantwort kann auch schiefsym. 
sein.
  Siehe dazu Oppenheim/Schafer. Dort werden linearphasige Filter
  je nach Typ (symmetrisch/schiefsymmetrisch, gerade oder ungerade
  Koeffizientenanzahl) eingeordnet.

** Da muss man ebenfalls in der digitalen SV etwas aufpassen, weil in
   der Literatur beginnt die Zählung der Koeffizienten oft mit Null.

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.