digitale Filter -> Kochrezept ?

M

Michael Rübig

Guest
Hi Leute,
in meinen ľC-Entwicklungen setze ich oft einfache IIR-Filter zur
Filterung von Analogwerten ein.
Die haben dann immer 2 Koeffizienten, z.B. 0,99 und 0,01.

Soweit ich das verstanden habe, entspricht dieses Filter einem analogen
Filter erster Ordung.

Manchmal wünsche ich mir eine steilere Filterkennlinie, möchte jedoch
nicht unnötig tief in die Theorie einsteigen (aus Zeitgründen).
Gibt es irgendwo Tabellen mit Koeffizientensätzen und graphisch daneben
den Frequenz- und Phasengang?

Einfache Hoch- und Tiefpässe würden im Prinzip reichen.
Bandpass kann man sich da ja draus bauen, auch wenns dann nicht gerade
effizient ist.

Grüße
Michael
 
IIR-Filter
Manchmal wünsche ich mir eine steilere Filterkennlinie,
Gibt es irgendwo Tabellen mit Koeffizientensätzen ... ?
Die müssten bei Festkomma aus 1pol und 2pol Teilfiltern
zusammengesetzt werden.
Einzelne 2pol Teilfilter können aber bei
ungünstiger Wortlängen /Koeffizienten-
kombination bereits selbst instabil werden.
Bei der Anordnung in der üblicheren Serienschaltung
spielt dann auch die Reihenfolge noch eine Rolle.
Parallelschaltung ist auch nicht viel einfacher.
Ein Tabellenwerk müsste also nichtnur Koeffizienten
sondern auch Wortlänge, Art der Skalierung usw.
mitbeinhalten.
Bessere DSP-Bücher haben meist 1-2 Seiten zu dem
Problem, aber keine sichere, simple Lösung.
FIR kann oft einfachere Lösung sein.

Wenn man die analoge Realisierung einer Schaltung im
Hinterkopf hat: nicht direkt digital nachbilden wollen.
Korrelatoren, FFT, adaptive Filter usw. die analog
nicht machbar sind, sind digital oft besserer Ansatz
als Filter.

MfG JRD
 
Hallo,
IIR-Filter
Manchmal wünsche ich mir eine steilere Filterkennlinie,
Gibt es irgendwo Tabellen mit Koeffizientensätzen ... ?

Die müssten bei Festkomma aus 1pol und 2pol Teilfiltern
zusammengesetzt werden.
Ahja!?

Einzelne 2pol Teilfilter können aber bei
ungünstiger Wortlängen /Koeffizienten-
kombination bereits selbst instabil werden.
Dass die Wortlänge problematisch sein kann, war mir noch gar nicht bewusst.

Bei der Anordnung in der üblicheren Serienschaltung
spielt dann auch die Reihenfolge noch eine Rolle.
Parallelschaltung ist auch nicht viel einfacher.
Ein Tabellenwerk müsste also nichtnur Koeffizienten
sondern auch Wortlänge, Art der Skalierung usw.
mitbeinhalten.
Bessere DSP-Bücher haben meist 1-2 Seiten zu dem
Problem, aber keine sichere, simple Lösung.
FIR kann oft einfachere Lösung sein.
Von mir aus auch FIR, gibts da Tabellen? Da brauche ich halt mehr
Koeffizienten und mehr Rechenleistung.

Wenn man die analoge Realisierung einer Schaltung im
Hinterkopf hat: nicht direkt digital nachbilden wollen.
Korrelatoren, FFT, adaptive Filter usw. die analog
nicht machbar sind, sind digital oft besserer Ansatz
als Filter.
Meist gehts wirklich nur um die Tiefpassfilterung eines Analog-Signals,
um z.B. das Rauchen wegzubekommen. Ein FIR-Mittelwertfilter ist da zwar
sehr gut, braucht aber mehr Speicher und mehr Rechenleistung als ein
IIR. Oft reicht ein IIR, wenns manchmal doch nur etwas steilere wäre.
Ich will da jetzt keine Filter 20. Ordnung machen, 2. oder 3. Ordnung
würde reichen. Ist das auch schon so kritisch?

Bei Matlab habe ich mal sein Filter-Toolkit gesehen. Leider habe ich
selbst kein Matlab.

Gibts sonst noch (vielleicht freie) Software zur Koeffizientenerstellung?

Grüße
Michael
 
Manchmal wünsche ich mir eine steilere Filterkennlinie, möchte jedoch
nicht unnötig tief in die Theorie einsteigen (aus Zeitgründen).
Gibt es irgendwo Tabellen mit Koeffizientensätzen und graphisch daneben
den Frequenz- und Phasengang?
Es gibt eine ganze Menge Tutorials und Filterberechnungsprogramme im
Internet, die auch Frequenz- und Phasengang anzeigen. Hier sind ein
paar Links (und es gibt noch viel mehr...):

http://www-users.cs.york.ac.uk/~fisher/mkfilter/
http://www.filter-solutions.com/
http://home.arcor.de/dfcgen/
http://www.dsptutor.freeuk.com/
http://tinyurl.com/d5sxx

Wie gesagt, das ist nur eine kleine Auswahl und die Filter
funktionieren interessanterweise auch dann, wenn man die Theorie nicht
ganz verstanden hat ;-)
 
Michael Rübig wrote:

Hi Leute,
in meinen ľC-Entwicklungen setze ich oft einfache IIR-Filter zur
Filterung von Analogwerten ein.
Die haben dann immer 2 Koeffizienten, z.B. 0,99 und 0,01.

Soweit ich das verstanden habe, entspricht dieses Filter einem analogen
Filter erster Ordung.

Manchmal wünsche ich mir eine steilere Filterkennlinie, möchte jedoch
nicht unnötig tief in die Theorie einsteigen (aus Zeitgründen).
Gibt es irgendwo Tabellen mit Koeffizientensätzen und graphisch daneben
den Frequenz- und Phasengang?

Einfache Hoch- und Tiefpässe würden im Prinzip reichen.
Bandpass kann man sich da ja draus bauen, auch wenns dann nicht gerade
effizient ist.

Grüße
Michael
Dafuer gibt es diverse Programme, auch Freeware. Ein einfaches ist DSP
Filter Design von Gunther May DL3ABQ.

Christian
 
Meist gehts wirklich nur um die Tiefpassfilterung
eines Analog-Signals, um z.B. das Rauchen wegzubekommen.
Wenn es sich um Spikes handelt gelten Median-Filter als
günstiger. Die sind nichtlinear, seit den 80er Jahren
in der akademiologischen Literatur breit behandelt. Hab
ich aber auch noch nie verbaut.
Für "gaussches" Rauschen sind normale lineare Filter
angemessen.

Ein FIR-Mittelwertfilter ist da zwar sehr gut, braucht
aber mehr Speicher und mehr Rechenleistung als ein
IIR.
Vgl. http://www.embeddedFORTHde Heft 10 S. 23
Speicher ja, Rechenleistung ( vgl Bild 2 dort ) eher
weniger. Controller haben ja im allgemeinen keinen MAC,
geringe Wortbreite, aber dafür RAM.

Von mir aus auch FIR, gibts da Tabellen?
Sehr steilflankige FIRs haben zuviel Koeffizienten.
Und eine Tschebyscheff-Approximation für die Koeffizienten
wäre nur sinnvoll wenn man sie auch genau genug darstellen
kann. Beides auf Controllern nicht der Fall.
http://www.embeddedFORTHde Heft 7 S. 12
hat die simple Variante aus Frequenzgang Impulsantwort
z.B. per FFT zu machen und dann Fensterfunktion anzulegen
dargestellt. Das Fenster-Verfahren kommt mit Verfeinerungen
oft sehr nahe an optimale Varianten ( d.h. die die akademiologische
Literatur füllen ) heran.
Was es auch gibt sind FIRs mit relativ vielen Koeffizienten
die aber so ausgelegt sind daß man die Multiplikationen mit
Shift&Add ausführen kann. Hilft aber nur wenn man ein
Optimierungsprogramm schreibt / "im www findet" das diese
Koeffizienten durch Suchverfahren bestimmt. Verliert auch an
Bedeutung weil grössere Controller bereits MACs haben.

Leider habe ich selbst kein Matlab.
Studentenversion gibts oft bei ebay. Mich k*tzt allerdings
das Vertriebsmodell nachhaltig an: no-cost Studenten reinwürgen,
versuchen so "Industriestandard" zu werden ( vgl. mal Texte in
Stellenanzeigen von Tageszeitungen ), dann an Firmen die Normal-
version völlig überteuert verkaufen wollen. Resultat wie üblich,
daß bei den Firmen auch nur Studenteversion verwendet werden wird
( Mittelständler gibt für CAD-Software kein Geld aus, selbst
Versionen von Eagle die man "im www gefunden hat" gelten als
standesgemäß ) und der Hersteller wegen "Raubkopien" jammert.
Mathcad ist zwar nicht ganz so geeignet aber bei ebay gebraucht
billig. Allerdings soll Version 11 (?) Dongleware sein. Ich habe
Version 7 Standard.

MfG JRD
 
Hallo Michael,


Michael Rübig wrote:

Hallo,

IIR-Filter
Manchmal wünsche ich mir eine steilere Filterkennlinie, Gibt es
irgendwo Tabellen mit Koeffizientensätzen ... ?


Die müssten bei Festkomma aus 1pol und 2pol Teilfiltern
zusammengesetzt werden.


Ahja!?
so wie man das bei aktiven analogen Filtern ja auch macht.

Einzelne 2pol Teilfilter können aber bei ungünstiger Wortlängen
/Koeffizienten-
kombination bereits selbst instabil werden.


Dass die Wortlänge problematisch sein kann, war mir noch gar nicht
bewusst.
Zu IIR-Filtern kann man eine Menge sagen. Begrenzte Wortlänge ruft
numerisches Rauschen und Instabilität hervor. Instabilität kann man
dadurch verhindern, daß man die Addierer gegen Überlauf sichert durch
Sättigungsverhalten und die Koeffizientenmultiplizierer am Ausgang in
der Wortlänge vom Betrag abschneidet und nicht rundet.

Die nötige Wortlänge hängt ganz von der Spezifikation ab, 8 Bit sind
meist extrem wenig, es können schnell 32 Bit erforderlich werden.

Bei der Anordnung in der üblicheren Serienschaltung
spielt dann auch die Reihenfolge noch eine Rolle.
Parallelschaltung ist auch nicht viel einfacher.
Ein Tabellenwerk müsste also nichtnur Koeffizienten
sondern auch Wortlänge, Art der Skalierung usw.
mitbeinhalten.
Bessere DSP-Bücher haben meist 1-2 Seiten zu dem Problem, aber keine
sichere, simple Lösung.
FIR kann oft einfachere Lösung sein.


Von mir aus auch FIR, gibts da Tabellen? Da brauche ich halt mehr
Koeffizienten und mehr Rechenleistung.
FIR ist eigentlich nichts für uC, sondern für DSP, jedenfalls ziemlicher
Overkill. Es gibt das Programm von Parks-McLellan, das funktioniert auch
heute noch, ist auch in Matlab drin. Denke mal, es gibt sicher freie
Software, ich habe selbst damit programmiert und experimentiert und es
eingesetzt.

Wenn man die analoge Realisierung einer Schaltung im Hinterkopf hat:
nicht direkt digital nachbilden wollen. Korrelatoren, FFT, adaptive
Filter usw. die analog nicht machbar sind, sind digital oft besserer
Ansatz als Filter.


Meist gehts wirklich nur um die Tiefpassfilterung eines
Analog-Signals, um z.B. das Rauchen wegzubekommen. Ein
FIR-Mittelwertfilter ist da zwar sehr gut, braucht aber mehr Speicher
und mehr Rechenleistung als ein IIR. Oft reicht ein IIR, wenns
manchmal doch nur etwas steilere wäre. Ich will da jetzt keine Filter
20. Ordnung machen, 2. oder 3. Ordnung würde reichen. Ist das auch
schon so kritisch?

Bei Matlab habe ich mal sein Filter-Toolkit gesehen. Leider habe ich
selbst kein Matlab.
Da würde ich erstmal an Butterworth denken, sicher ist das in Matlab
drin. Aus den Tabellen für analoge Filter (Tietze/Schenk oder so) kannst
Du Dir die Z-Koeffizienten aber leicht mit der bilinearen Transformation
selbst errechnen. Bei Bedarf könnte ich versuchen zu beschreiben, wie
man das macht.

Für hohe Anforderungen setzen wir spezielle Filterstrukturen und
Optimierungssoftware ein, die ist aber nicht frei. Wenn Du maximal
steile IIR-Filter haben möchtest, dann sind Cauer bzw. elliptische
Filter nötig, aber die dürften vom Aufwand etwas höher sein wegen der
Nullstellen und vermutlich hohen Polgüten, auch digital.

Gibts sonst noch (vielleicht freie) Software zur Koeffizientenerstellung?

Ich glaube schon, hab jetzt aber gerade nichts parat.

mfg. Winfried
 
Vielen Dank für die vielfältigen Infos,
ich werde mir die ganzen Links mal anschauen und sehen, was sich da
gebrauchen lässt.

Michael
 
Rafael Deliano wrote:

[Wegen Matlab]

Studentenversion gibts oft bei ebay. Mich k*tzt allerdings
das Vertriebsmodell nachhaltig an: no-cost Studenten reinwürgen,
versuchen so "Industriestandard" zu werden ( vgl. mal Texte in
Stellenanzeigen von Tageszeitungen ), dann an Firmen die Normal-
version völlig überteuert verkaufen wollen.
Matlab ade, Gnu Octave Hallo:

http://www.octave.org/
 

Welcome to EDABoard.com

Sponsor

Back
Top