Bei jedem Projekt mit Signalverarbeitung, sei es ein Servosignal, ein Sensor oder etwas anderes, kommt man schnell an den Punkt, dass man das Signal gerne Tiefpass Filtern möchte. Dies ist z.B. vor einem Down-Sampling nötig. Siehe: https://www.google.com/search?q=downsampling+aliasing Es ist naheliegend dies zu tun indem man einen fortlaufenden Durchschnitt bildet und dies ist KEINE schlechte Intuition/Idee, aber {1/2;1/2} ist nicht ausreichend um danach mit der halben Samplerate weiter zu arbeiten. Um die Samplerate halbieren zu dürfen müssen die Frequenzanteile von fs/4 bis 2*fs/4 entfernt werden. Dazu wäre eine Nullstelle bei fs/3 oder 3*fs/8 gut. {1/2;1/2} hat bei einer Samplerate von z.B. fs = 50 Hz keine für Menschen sichtbare Wirkung und eine geringe Steilheit, es unterdrückt im wesentlichen Frequenzen die eh nicht da sein sollten. Was ist also mit: {1\8;1\8;1\8;1\8;1\8;1\8;1\8;1\8} ? Ja, das zeigt Wirkung. Filter der Form eines gleitenden Durchschnitts haben immer die Eigenschaft für bestimmte Frequenzen wie ein Notch-Filter zu wirken. {1/2; 1/2} lässt f_s/2 nicht durch, {1/3; 1/3; 1/3} lässt 1*f_s/3 (!) und 2*f_s/3 nicht durch. {1/4; 1/4; 1/4; 1/4} lässt 1*f_s/4 und 2*f_s/4 nicht durch. Für alle Filter mit einer geraden Anzahl von gleichen Koeffizienten verteilen sich die Nullstellen gleichmäßig auf dem Intervall 0 bis f_s/2 so, dass immer eine der NS bei f_s/2 liegt. Bei zwei Werten ist es nur 1*f_s/2 bei vier Werten 2*f_s/4 und 1*f_s/4, bei sechs Werten sind es 3*f_s/6, 2*f_s/6, 1*f_s/6, bei acht Werten sind es 4*fs/8, 3*fs/8 (!), 2*fs/8, 1*fs/8, usw. Wenn man nicht möchte, dass sich die Nullstellen gleichmäßig zu immer kleineren Frequenzen verteilen, muss man sie selbst platzieren, das macht man am einfachsten indem man unterschiedliche kleine Filter der obigen Form hintereinander schaltet: Ein super Filter bekommt man z.B. mit {1/3;1/3;1/3}*{1/4;1/4;1/4;1/4}*{1/5;1/5;1/5;1/5;1/5} Ab f_s/8 macht es -20dB und ab f_s/5 macht es -100dB. Das bedeutet, dass bei 50 Werten pro Sekunde alle Frequenzen über 50Hz/5=10Hz auf 0,00001 ihrer Amplitude reduziert werden. Danach kann man gefahrlos immer fünf Werte zu einem zusammenfassen oder nur jeden fünften behalten ohne Störungen von höheren Frequenzen in das verbleibende Signal zu mischen. Die "2Nx1/(2N)-Filter"(arithmetischer Durchschnitt) lassen sich übrigens in Ketten zerlegen z.B. ist: {1/8;1/8;1/8;1/8;1/8;1/8;1/8;1/8} = {1/2;1/2}*{1/2;0;1/2}*{0.3;0.4;0.3}*{1.7;-2.4;1.7} Es ist kein Gewinn, die Nullstellen absichtlich gleichmäßig zu verteilen, da es im einfachsten Fall eh passiert (s.o.), entfernt man aus dem 8/8-Filter das Unterfilter {1.7;-2.4;1.7} und fügt z.B. ein weiteres {1/2;1/2} hinzu, so ist die Filterwirkung bei hohen Frequenzen betont, die Nullstellen ungleichmäßig verteilt, das Filter um ein Verzögerungsglied kürzer. [Achtung: Dieser Text arbeitet absichtlich mit Halbwahrheiten und vermeidet bestimmte Begriffe und die komplexwertige Algebra.] [Artefakt Aliasing Fehler Reduktion Tiefpassfilter Aliasingfilter Decimation LowPass Sample Samplingrate]
Moritz G. schrieb: > Halbwahrheiten das ist aber nicht gut, oder? warum nicht einfach exakt sein? Jemand hat mal gesagt "man soll die Dinge so weit wie möglich vereinfachen, aber nicht weiter". Die z-Transformation ist nichts schwieriges und erlaubt es sehr einfach, beliebige Filter mit bekannten Koeffizienten zu simulieren. Wie man zu den "richtigen" Filterkoeffizienten kommt ist natürlich ein anderes Problem und heisst Filtersynthese. Hat man ein Filter als Übertragungsfunktion G(z)
dann kann man den Frequenzgang des Filters bestimmen, indem man z durch ersetzt mit
Das grosse Omega heisst normierte Frequenz. Omega=0 ist 0Hz, Omega=pi entspricht fs/2. Ein z^-1 in der z-Transformierten bedeutet "das Sample von vorher", ist also einfach eine Verzögerung um 1 Abtasttakt. Die Übertragungsfunktion ist Ausgangssignal y geteilt durch Eingangssignal u, das heisst man kann aus einer z-Übertragungsfunktion die Rechenvorschrift für ein Filter so bilden:
Zuerst ausmultiplizieren ergibt
Das kann man nach dem Ausgangssignal des Filters auflösen
jetzt stört noch der Koeffizient a0, den kann man aber noch aus der Welt schaffen, indem man beide Seiten durch a0 dividiert. Die obenstehende Gleichung beschreibt nun für jeden Zeitschritt das Ausgangssignal eines beliebigen Filters für ein beliebiges Eingangssignal. Immer wenn ein z^-n auftaucht, muss man das Sample n Abtastintervalle vorher nehmen. Da die a-Koeffizienten mit dem Ausgangssignal verknüpft sind, beschreiben sie eine Rückkopplung und damit IIR-Filter. Ein reines FIR hat alle a=0. Wenn du also schon trotzdem, dass du nur Halbwahrheiten nutzen willst, von Polen und Nullstellen sprichst, sollten diese Zusammenhänge schon auch erwähnt werden. Undurchsichtige Kochrezepte, die "automagisch" etwas bewirken nützen sicher niemandem etwas. Mit den oben angegebenen Gleichungen jedoch kann jeder, der ein Plotprogramm (gnuplot zB) bedienen kann, den Frequenzgang eines beliebigen Filters sofort malen.
Tobias P. schrieb: > Moritz G. schrieb: >> Halbwahrheiten > > das ist aber nicht gut, oder? warum nicht einfach > exakt sein? Für den Begriff der Didaktik hast Du keinerlei Verwendung, kann das sein? Schlechte Lehrer erzählen ihren Schülern einfach alles, was sie selbst über das Thema wissen. Gute Lehrer wählen aus ihrem großen Wissen den kleinen Teil aus, mit dem sie beim jeweiligen Schüler den größten Lernfortschritt erreichen.
Egon D. schrieb: > Gute Lehrer wählen aus ihrem großen Wissen den kleinen > Teil aus, mit dem sie beim jeweiligen Schüler den größten > Lernfortschritt erreichen. aha, und das sind dann Halbwahrheiten? zum Glück hatte ich in der Schule nur schlechte Lehrer, die mir keine Solchen erzählt haben (ausser im Religionsunterricht).
Tobias P. schrieb: > Egon D. schrieb: >> Gute Lehrer wählen aus ihrem großen Wissen den kleinen >> Teil aus, mit dem sie beim jeweiligen Schüler den größten >> Lernfortschritt erreichen. > > aha, und das sind dann Halbwahrheiten? Ja, natürlich. Die Wahrheit ist natürlich das Ganze, und wenn ich aus dem Ganzen etwas auswähle, ist der ausgewählte Teil logischerweise nicht mehr die volle Wahrheit -- mithin eine Halbwahrheit. > zum Glück hatte ich in der Schule nur schlechte Lehrer, > die mir keine Solchen erzählt haben (ausser im > Religionsunterricht). Das bezweifele ich. Wenn Dir alle Lehrer in der Schule immer ALLES erzählt hätten, was sie über ihr Fach wissen, würdest Du heute noch dasitzen und zuhören... Der Punkt ist aber ein ganz anderer: Es ist ja schön, wenn Dir eine mathematisch-formale Darstellung ohne Mühe zugänglich ist. Es würde nur den Umgang sehr erleichtern, wenn Du erkennen könntest, dass Du damit zu -- reichlich geschätzt -- 0.01% der Bevölkerung gehörst, auf die das zutrifft. Der restlichen winzigen Minderheit von 99.99% hilfst Du überhaupt nicht, wenn Du ihnen -- wie oben geschehen -- einen Formelwust über den Kopf schüttest, und das dann ironischerweise noch mit Kritik an den "Halbwahrheiten" verbindest.
Egon D. schrieb: > Für den Begriff der Didaktik hast Du keinerlei > Verwendung, kann das sein? Danke, ich hatte nicht die Kraft/Lust mir die Mühe zu machen. Ich dachte es dazu zuschreiben (Einfache ... Halbwahrheiten ...) würde reichen.
Egon D. schrieb: > Das bezweifele ich. > Wenn Dir alle Lehrer in der Schule immer ALLES erzählt > hätten, was sie über ihr Fach wissen, würdest Du heute > noch dasitzen und zuhören... ja sicher haben sie nicht ALLES erzählt, aber die WAHRHEIT und nicht etwas, was "nur halb" wahr war. Egon D. schrieb: > 0.01% der Bevölkerung in der Gesamtbevölkerung möglicherweise schon. Allerdings habe ich ja keine fancy Mathematik gepostet. Es sind Additionen und Multiplikationen, das kann jetzt wirklich jeder. Und hier sind doch Ingenieure, da kann man schon erwarten, dass man ein bisschen über den Tellerrand zu gucken in der Lage ist. Aber ich entschuldige mich höflichst, dass ich die meines Erachtens ungeeigneten und zum Teil auch nicht korrekten Kochrezepte auf eine etwas fundiertere Basis stellen und zeigen wollte, was überhaupt mit den Nullstellen (und allenfalls Polen) gemeint ist.
Tobias P. schrieb: > ja sicher haben sie nicht ALLES erzählt, aber die WAHRHEIT und nicht > etwas, was "nur halb" wahr war. "lie by omission" Du gibst im selben Satz zu, dass Du gelogen hast und dass es schlecht ist. Ich habe Deinen Beitrag als möglicherweise brauchbare Erweiterung empfunden. Allerdings dürfte es vergleichbares in der Fachliteratur geben.
Tobias P. schrieb: > Egon D. schrieb: >> Das bezweifele ich. >> Wenn Dir alle Lehrer in der Schule immer ALLES erzählt >> hätten, was sie über ihr Fach wissen, würdest Du heute >> noch dasitzen und zuhören... > > ja sicher haben sie nicht ALLES erzählt, Gut. > aber die WAHRHEIT und nicht etwas, was "nur halb" > wahr war. Das hat Moritz auch nicht. Wenn Du das anders siehst, solltest Du Dir schon die Mühe machen, das anhand von Zitaten und eigenen Erläuterungen deutlich zu machen. > in der Gesamtbevölkerung möglicherweise schon. Allerdings > habe ich ja keine fancy Mathematik gepostet. Es sind > Additionen und Multiplikationen, das kann jetzt wirklich > jeder. Deswegen beherrscht ja auch jede Friseuse Zahlentheorie, denn das sind ja auch nur Addition und Multiplikationen... Im Übrigen stimmt das nicht, was Du sagst: Ich habe als Schüler in einer Mathe-AG an der Uni Vorträge über linear-rekursive Zahlenfolgen gehört -- "alles nur Additionen und Multiplikationen" --; dort ist ohne komplexe Zahlen und Exponentialfunktionen kein Blumentopf zu gewinnen. > Und hier sind doch Ingenieure, da kann man schon > erwarten, dass man ein bisschen über den Tellerrand > zu gucken in der Lage ist. Wer sagt Dir, dass ich nicht dazu IN DER LAGE bin? > Aber ich entschuldige mich höflichst, dass ich die meines > Erachtens ungeeigneten und zum Teil auch nicht korrekten > Kochrezepte auf eine etwas fundiertere Basis stellen und > zeigen wollte, was überhaupt mit den Nullstellen (und > allenfalls Polen) gemeint ist. Polstellen hat Moritz (aus gutem Grund) nicht erwähnt, und die Nullstellen sind natürlich die Nullstellen der Übertragungsfunktion. Das Stichwort "Notch" (=Kerbfilter) wurde ja extra erwähnt, das kann man von den stetigen Filtern her kennen.
Moritz G. schrieb: > Ich dachte es dazu zuschreiben (Einfache ... Halbwahrheiten ...) > würde reichen. Ich mag mich irren und Deinen Text missverstanden haben, aber ich fand den Ansatz eigentlich selbsterklärend: - Du beschränkst Dich von vornherein auf eine spezielle Klasse von Digitalfiltern (nämlich auf FIR-Filter), die als gewichtete gleitende Mittelwerte auch für den Praktiker leicht vorstellbar sind. - Du baust längere Filter durch Kettenschaltung aus kürzeren auf; das ist ein ähnliches Vorgehen wie z.B. die Realisierung aktiver RC-Filter höherer Ordnung als rückwirkungsfreie Kettenschaltung von Grundgliedern. - Du charakterisierst die Grundglieder nur durch die Nullstellen- frequenz. Das ist geschickt, weil dieses mathematische Charakteristikum auch für den Praktiker leicht vorstellbar ist (Mittelung über exakt eine Periode unterdrückt halt die entsprechende Frequenz vollständig). Der Tiefpass wird also als Kettenschaltung von Kerbfiltern aufgebaut. Sicher kann man einige Details noch besser erklären (ich finde beispielsweise die Darstellung längerer Koeffizientenvektoren durch Produkte von kürzeren nicht selbsterklärend), trotzdem finde ich Deine Anregung gut, weil der Zugang insgesamt von bestechender Einfachheit ist. Dass der selbstironische Hinweis auf "Halbwahrheiten" als "Achtung, hier FEHLT noch mindestens die Hälfte" und nicht als "Achtung, die Hälfte des Geschriebenen ist FALSCH" aufzufassen ist, finde ich eigentlich selbstverständlich...
Moin, Ich wuerd' sagen: "Kunden, die solche Filter toll finden, kaufen auch: CIC-Filter." Gruss WK
Egon D. schrieb: > finde die Darstellung längerer Koeffizientenvektoren > durch Produkte von kürzeren nicht selbsterklärend Tja, da bin ich vielleicht über das Ziel hinausgeschossen und hätte es mir verkneifen sollen. Wobei bei dem Beispiel ja mit 8. Klasse (Quelle: Niedersächsisches Kultusministerium) Klammer-Ausmultiplizieren wirklich (0.1275+0.1175x+0.1325x^2+0.1225x^3+0.1225x^4+0.1325x^5+0.1175x^6+0.1275 x^7) herauskommt. > nicht > als "Achtung, die Hälfte des Geschriebenen ist FALSCH" > aufzufassen ist, finde ich eigentlich selbstverständlich. Tja, dachte ich auch. Aber "falsch" ist halt Definitionssache, jede Auslassung ist zumindest zum Teil falsch. Ich lüge nie, aber es kommt vor, dass ich mit Vorsatz falsche Annahmen in Leuten erzeuge. Die Welt ist halt grau. Danke Egon D., für die Unterstellung von Plan, Absicht und gutem Willen. Das ist im Internet selten.
>Wobei bei dem Beispiel ja mit 8. Klasse (Quelle: Niedersächsisches >Kultusministerium) Klammer-Ausmultiplizieren wirklich >(0.1275+0.1175x+0.1325x^2+0.1225x^3+0.1225x^4+0.1325x^5+0.1175x^6+0.127 5 >x^7) herauskommt. Wenn ich es richtig sehe, kann man den ersten Ansatz aber "computational" wesentlich effizienter gestalten, wenn man den verketteten Filter durch gleitende Mittelwertfilter nur aus Additionen ersetzt und das Signal nur einmal mit einem Gewichtungsfaktor multipliziert.
Ich fahre auch besser damit, wenn ich es ausrechne. @Tobias, deine Abhandlung mag zwar stimmen, aber hat ja nur wenig mit dem ersten Post zu tun. Oder sagen wir das ist nur der Anfang. Die interessanten Sachen mit dem Frequenzgang der vom OP genannten Koeffizienten fehlt ja noch ;) Denn der OP sagt, dass Mittelwertfilter mit identischen Koeffizienten und einer Verstärkung von 1 grundsätzlich die Nullstellen (also die Frequenzwerte, bei denen der Frequenzgang, also die Verstärkung zu 0 wird) gleichmäßig von 0 bis fs/2 verteilt und dort eine entsprechend große Filterwirkung hat. Tatsächlich erzeugen die genannten Filter immer nur komplexe Nullstellenpaare, was die starke "Absaugwirkung" bei dem Winkel der komplexen Zahl verursacht (bei Wunsch kann ich das hier gerne zeigen). Es stimmt also, was der OP sagt. Auch die Verkettung macht Sinn, tatsächlich ist es aber eine Faltung die du da oben machst, keine Multiplikation. Die Frage aber ist ja aber vielmehr: Warum ist das alles so? Kann mir das jemand erklären, warum Polynome mit identischen Koeffizienten grundsätzlich komplexe Nullstellenpaare haben? Da gibts doch bestimmt einen Satz zu. Danke.
Jan K. schrieb: > warum Polynome mit identischen Koeffizienten > grundsätzlich komplexe Nullstellenpaare haben? das stimmt so nicht. 2 Dinge: a) komplexwertige Nullstellen müssen immer als konjugiert komplexe Paare auftreten, wenn die Koeffizienten allesamt reell sind. b) aus a) folgt: nur wenn die Anzahl Nullstellen gerade ist, ist es überhaupt möglich, dass sämtliche Nullstellen konjugiert komplex sind. c) da die Anzahl Nullstellen um eins kleiner ist als der Grad des Polynoms, haben also Polynome mit einem, nun ja, ungeraden Grad immer mindestens eine rein reellwertige Nullstelle. Man kann sich das Anschaulich so vorstellen, dass eine Funktion wie x^3 (ungerades Polynom) immer mindestens einmal die x-Achse kreuzen muss, während gerade Polynome wie x^2 wie Parabeln aussehen und damit die x-Achse nicht zwangsläufig kreuzen müssen - wenn sie es aber tun, dann mindestens zwei mal usw. (wobei hier noch der Spezialfall betrachtet werden muss, dass eine Parabel die x-Achse genau berührt - dann ist es eine doppelte Nullstelle). Warum die Nullstellen jetzt aber auf einem Kreis liegen, da muss ich für den Moment auch passen. Es macht aber schon irgendwie Sinn: Wenn alle Koeffizienten eines Polynoms den selben Wert haben und man die Nullstellen sucht, dann kann man gleich diesen Koeffizienten wegkürzen und muss eigentlich nur noch das Polynom x^n + ... + x^3 + x^2 + x + 1 = 0 betrachten. Wenn es die Nullstellen x0, x1, x2 und so weiter hat, dann kann man ein Polynom mit diesen Nullstellen als (x-x0)*(x-x1)*...*(x-xn) schreiben. Wenn die Nullstellen komplexwertig sind, UND alle Koeffizienten 1 sein sollen, dann müssen die Nullstellen ja auf dem Einheitskreis liegen, weil sie dann Betragsmässig den Wert 1 haben - und nur dann können beim Ausmultiplizieren des obigen Ausdrucks lauter Einsen entstehen. Würden die Nullstellen betragsmässig einen anderen Wert als 1 haben, dann wäre nicht mehr garantiert, dass beim Ausmultiplizieren nur Einsen für die Koeffizienten entstehen.
Moritz G. schrieb: > Wenn man nicht möchte, dass sich die Nullstellen gleichmäßig zu immer > kleineren Frequenzen verteilen, muss man sie selbst platzieren, das > macht man am einfachsten indem man unterschiedliche kleine Filter der > obigen Form hintereinander schaltet: Autsch! ein kaskadiertes Kaskadenfilter mit Durchlass für alle ungeradzalig passenden Frequenzen und damit unnötig starker Störungen im Oberwellenbereich, also etwas, was man bei den meisten Anwendungen so ganz und gar nicht haben möchte.
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.