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.
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!
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.
hi Gerd danke für deine Antwort! kannst du mir trotzdem das zeigen und ich versuche mal anders mit FIR-Filter. Gruß Noura
FIR Filter sind per Definition linearphasig. Wenn man die Phase ändern will (z.B. Allpass) muss man IIR Filter benutzen.
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.
>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...
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.
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/toolbox/signal/index.html?/access/helpdesk/help/toolbox/signal/cfirpm.html Complex and nonlinear-phase equiripple FIR filter design aber in scilab und octave ist der Befehl wohl unbekannt.
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
Lineare Phase = konstante Gruppenlaufzeit = alle Frequenzen werden um die selbe Zeit verzögert, die Signalform wird nicht verzerrt.
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
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
hi, versuchs mal hiermit: http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=59&objectType=file
joep wrote: > hi, > versuchs mal hiermit: > http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=59&objectType=file 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.
joep wrote: > hi, > versuchs mal hiermit: > http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=59&objectType=file das ist mfile dazu
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
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.
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.