Friday, November 18, 2016

Gleitender Mittelwert Und Tiefpassfilter

Wie andere schon erwähnt haben, sollten Sie einen IIR (Endlosimpulsantwort) - Filter anstelle des FIR (Finite Impulse Response) Filter, den Sie jetzt verwenden. Es gibt mehr dazu, aber auf den ersten Blick werden FIR-Filter als explizite Windungen und IIR-Filter mit Gleichungen implementiert. Das besondere IIR-Filter, das ich viel in Mikrocontrollern verwende, ist ein einpoliges Tiefpaßfilter. Dies ist das digitale Äquivalent eines einfachen R-C-Analogfilters. Für die meisten Anwendungen haben diese bessere Eigenschaften als der Kastenfilter, den Sie verwenden. Die meisten Verwendungen eines Box-Filter, die ich begegnet bin, sind ein Ergebnis von jemand nicht Aufmerksamkeit in der digitalen Signalverarbeitung Klasse, nicht als Ergebnis der Notwendigkeit ihrer besonderen Eigenschaften. Wenn Sie nur wollen, um hohe Frequenzen zu dämpfen, dass Sie wissen, Rauschen sind, ist ein einpoliges Tiefpassfilter besser. Der beste Weg, um ein digitales in einem Mikrocontroller zu implementieren, ist in der Regel: FILT lt - FILT FF (NEW - FILT) FILT ist ein Stück persistenten Zustand. Dies ist die einzige persistente Variable, die Sie benötigen, um diesen Filter zu berechnen. NEU ist der neue Wert, den der Filter mit dieser Iteration aktualisiert. FF ist die Filterfraktion. Die die Schwere des Filters einstellt. Betrachten Sie diesen Algorithmus und sehen Sie, dass für FF 0 der Filter unendlich schwer ist, da sich der Ausgang nie ändert. Für FF 1 ist das eigentlich gar kein Filter, da der Ausgang nur dem Eingang folgt. Nützliche Werte sind dazwischen. Bei kleinen Systemen wählen Sie FF auf 1/2 N, so dass die Multiplikation mit FF als Rechtsverschiebung um N Bits erreicht werden kann. Beispielsweise kann FF 1/16 betragen und das Multiplizieren mit FF daher eine Rechtsverschiebung von 4 Bits. Andernfalls benötigt dieses Filter nur eine Subtraktion und eine Addition, obwohl die Zahlen in der Regel größer als der Eingangswert sein müssen (mehr über die numerische Genauigkeit in einem separaten Abschnitt weiter unten). Ich normalerweise nehmen A / D-Messwerte deutlich schneller als sie benötigt werden und wenden Sie zwei dieser Filter kaskadiert. Dies ist das digitale Äquivalent von zwei R-C-Filtern in Serie und dämpft um 12 dB / Oktave über der Rolloff-Frequenz. Für A / D-Messungen ist es jedoch gewöhnlich relevanter, den Filter im Zeitbereich zu betrachten, indem er seine Sprungantwort betrachtet. Dies zeigt Ihnen, wie schnell Ihr System eine Änderung sehen wird, wenn die Sache, die Sie messen, ändert. Zur Erleichterung der Gestaltung dieser Filter (was nur bedeutet Kommissionierung FF und entscheiden, wie viele von ihnen zu kaskadieren), benutze ich mein Programm FILTBITS. Sie legen die Anzahl der Schaltbits für jede FF in der kaskadierten Filterreihe fest und berechnen die Schrittantwort und andere Werte. Eigentlich habe ich in der Regel laufen diese über mein Wrapper-Skript PLOTFILT. Dies führt FILTBITS, die eine CSV-Datei macht, dann die CSV-Datei. Beispielsweise ist hier das Ergebnis von PLOTFILT 4 4: Die beiden Parameter zu PLOTFILT bedeuten, dass es zwei Filter gibt, die vom oben beschriebenen Typ kaskadiert sind. Die Werte von 4 geben die Anzahl der Schaltbits an, um die Multiplikation mit FF zu realisieren. Die beiden FF-Werte sind in diesem Fall 1/16. Die rote Spur ist die Einheit Schritt Antwort, und ist die Hauptsache zu betrachten. Dies bedeutet beispielsweise, dass sich der Ausgang des kombinierten Filters auf 90 des neuen Wertes in 60 Iterationen niederschlägt, falls sich der Eingang sofort ändert. Wenn Sie ca. 95 Einschwingzeit kümmern, dann müssen Sie etwa 73 Iterationen warten, und für 50 Einschwingzeit nur 26 Iterationen. Die grüne Kurve zeigt Ihnen den Ausgang einer einzelnen Amplitude. Dies gibt Ihnen eine Vorstellung von der zufälligen Rauschunterdrückung. Es sieht aus wie keine einzelne Probe wird mehr als eine 2,5 Änderung in der Ausgabe verursachen. Die blaue Spur soll ein subjektives Gefühl geben, was dieser Filter mit weißem Rauschen macht. Dies ist kein strenger Test, da es keine Garantie gibt, was genau der Inhalt der Zufallszahlen war, die als der weiße Rauscheneingang für diesen Durchlauf von PLOTFILT ausgewählt wurden. Seine nur, um Ihnen ein grobes Gefühl, wie viel es gequetscht werden und wie glatt es ist. PLOTFILT, vielleicht FILTBITS, und viele andere nützliche Dinge, vor allem für PIC-Firmware-Entwicklung ist verfügbar in der PIC Development Tools-Software-Release auf meiner Software-Downloads-Seite. Hinzugefügt über numerische Genauigkeit Ich sehe aus den Kommentaren und nun eine neue Antwort, dass es Interesse an der Diskussion der Anzahl der Bits benötigt, um diesen Filter zu implementieren. Beachten Sie, dass das Multiplizieren mit FF Log 2 (FF) neue Bits unterhalb des Binärpunkts erzeugt. Bei kleinen Systemen wird FF gewöhnlich mit 1/2 N gewählt, so daß diese Multiplikation tatsächlich durch eine Rechtsverschiebung von N Bits realisiert wird. FILT ist daher meist eine feste Ganzzahl. Beachten Sie, dass dies ändert keine der Mathematik aus der Prozessoren Sicht. Wenn Sie beispielsweise 10-Bit A / D-Messwerte und N 4 (FF 1/16) filtern, benötigen Sie 4 Fraktionsbits unter den 10-Bit-Integer-A / D-Messwerten. Einer der meisten Prozessoren, youd tun 16-Bit-Integer-Operationen aufgrund der 10-Bit-A / D-Lesungen. In diesem Fall können Sie immer noch genau die gleichen 16-Bit-Integer-Opertions, aber beginnen mit der A / D-Lesungen um 4 Bits verschoben verschoben. Der Prozessor kennt den Unterschied nicht und muss nicht. Das Durchführen der Mathematik auf ganzen 16-Bit-Ganzzahlen funktioniert, ob Sie sie als 12,4 feste oder wahre 16-Bit-Ganzzahlen (16,0 Fixpunkt) betrachten. Im Allgemeinen müssen Sie jedem Filterpole N Bits hinzufügen, wenn Sie aufgrund der numerischen Darstellung kein Rauschen hinzufügen möchten. Im obigen Beispiel müsste das zweite Filter von zwei 1044 18 Bits haben, um keine Informationen zu verlieren. In der Praxis auf einer 8-Bit-Maschine bedeutet, dass youd 24-Bit-Werte verwenden. Technisch nur den zweiten Pol von zwei würde den größeren Wert benötigen, aber für Firmware Einfachheit ich in der Regel die gleiche Darstellung, und damit der gleiche Code, für alle Pole eines Filters. Normalerweise schreibe ich eine Unterroutine oder Makro, um eine Filterpol-Operation durchzuführen, dann gelten, dass für jeden Pol. Ob eine Unterroutine oder ein Makro davon abhängt, ob Zyklen oder Programmspeicher in diesem Projekt wichtiger sind. So oder so, ich benutze einige Scratch-Zustand, um NEU in die Subroutine / Makro, die FILT Updates, sondern auch lädt, dass in den gleichen Kratzer NEU war in. Dies macht es einfach, mehrere Pole anzuwenden, da die aktualisierte FILT von einem Pol ist Die NEUE der nächsten. Wenn ein Unterprogramm, ist es sinnvoll, einen Zeiger auf FILT auf dem Weg in, die auf nur nach FILT auf dem Weg nach draußen aktualisiert wird. Auf diese Weise arbeitet das Unterprogramm automatisch auf aufeinanderfolgenden Filtern im Speicher, wenn es mehrmals aufgerufen wird. Mit einem Makro benötigen Sie nicht einen Zeiger, da Sie in der Adresse passieren, um auf jeder Iteration zu arbeiten. Code-Beispiele Hier ist ein Beispiel für ein Makro wie oben für eine PIC 18 beschrieben: Und hier ist ein ähnliches Makro für eine PIC 24 oder dsPIC 30 oder 33: Beide Beispiele sind als Makros mit meinem PIC-Assembler-Präprozessor implementiert. Die mehr fähig ist als eine der eingebauten Makroanlagen. Clabacchio: Ein weiteres Thema, das ich erwähnen sollte, ist die Firmware-Implementierung. Sie können eine einpolige Tiefpassfilter-Subroutine einmal schreiben, dann mehrfach anwenden. Tatsächlich schreibe ich normalerweise solch ein Unterprogramm, um einen Zeiger im Gedächtnis in den Filterzustand zu nehmen, dann ihn voranbringen den Zeiger, so daß er nacheinander leicht aufgerufen werden kann, um mehrpolige Filter zu verwirklichen. Ndash Olin Lathrop Apr 20 12 at 15:03 1. Dank sehr viel für Ihre Antworten - alle von ihnen. Ich beschloss, dieses IIR-Filter zu verwenden, aber dieser Filter wird nicht als Standard-Tiefpaßfilter verwendet, da ich die Zählerwerte berechnen und sie vergleichen muss, um Änderungen in einem bestimmten Bereich zu erkennen. Da diese Werte von sehr unterschiedlichen Dimensionen abhängig von Hardware Ich wollte einen Durchschnitt nehmen, um in der Lage sein, auf diese Hardware spezifischen Änderungen automatisch reagieren. Wenn Sie mit der Beschränkung einer Macht von zwei Anzahl von Elementen zu durchschnittlich leben können (dh 2,4,8,16,32 etc), dann kann die Teilung einfach und effizient auf einem getan werden Low-Performance-Mikro ohne dedizierte Division, weil es als Bit-Shift durchgeführt werden kann. Jede Schicht rechts ist eine Macht von zwei zB: Der OP dachte, er hatte zwei Probleme, die Teilung in einem PIC16 und Speicher für seinen Ringpuffer. Diese Antwort zeigt, dass die Teilung nicht schwierig ist. Zwar adressiert es nicht das Gedächtnisproblem, aber das SE-System erlaubt Teilantworten, und Benutzer können etwas von jeder Antwort für selbst nehmen oder sogar redigieren und kombinieren andere39s Antworten. Da einige der anderen Antworten eine Divisionsoperation erfordern, sind sie ähnlich unvollständig, da sie nicht zeigen, wie dies auf einem PIC16 effizient erreicht werden kann. Ndash Martin Apr 20 12 at 13:01 Es gibt eine Antwort für einen echten gleitenden Durchschnitt Filter (auch bekannt als Boxcar-Filter) mit weniger Speicher Anforderungen, wenn Sie dont mind Downsampling. Es heißt ein kaskadiertes Integrator-Kamm-Filter (CIC). Die Idee ist, dass Sie einen Integrator, die Sie nehmen Differenzen über einen Zeitraum, und die wichtigsten Speicher-sparende Gerät ist, dass durch Downsampling, müssen Sie nicht jeden Wert des Integrators zu speichern. Es kann mit dem folgenden Pseudocode implementiert werden: Ihre effektive gleitende durchschnittliche Länge ist decimationFactorstatesize, aber Sie müssen nur um Stateize Proben zu halten. Offensichtlich können Sie bessere Leistung erzielen, wenn Ihr stateize und decimationFactor Potenzen von 2 sind, so dass die Divisions - und Restoperatoren durch Shifts und Masken ersetzt werden. Postscript: Ich stimme mit Olin, dass Sie immer sollten einfache IIR-Filter vor einem gleitenden durchschnittlichen Filter. Wenn Sie die Frequenz-Nullen eines Boxcar-Filters nicht benötigen, wird ein 1-poliger oder 2-poliger Tiefpassfilter wahrscheinlich gut funktionieren. Auf der anderen Seite, wenn Sie für die Zwecke der Dezimierung filtern (wobei eine hohe Sample-Rate-Eingang und Mittelung es für die Verwendung durch einen Low-Rate-Prozess), dann kann ein CIC-Filter genau das, was Sie suchen. (Vor allem, wenn Sie stateize1 verwenden und den Ringbuffer insgesamt mit nur einem einzigen vorherigen Integrator-Wert zu vermeiden) Theres einige eingehende Analyse der Mathematik hinter der Verwendung der ersten Ordnung IIR-Filter, Olin Lathrop bereits beschrieben hat auf der Digital Signal Processing Stack-Austausch (Enthält viele schöne Bilder.) Die Gleichung für diese IIR-Filter ist: Dies kann mit nur Ganzzahlen und keine Division mit dem folgenden Code implementiert werden (möglicherweise benötigen einige Debugging, wie ich aus dem Speicher wurde.) Dieser Filter approximiert einen gleitenden Durchschnitt von Die letzten K Proben durch Einstellen des Wertes von alpha auf 1 / K. Führen Sie dies im vorherigen Code durch die Definition von BITS auf LOG2 (K), dh für K 16 gesetzt BITS auf 4, für K 4 gesetzt BITS auf 2, etc. (Ill Überprüfung der Code hier aufgelistet, sobald ich eine Änderung und Bearbeiten Sie diese Antwort, wenn nötig.) Antwort # 1 am: Juni 23, 2010, um 4:04 Uhr Heres ein einpoliges Tiefpassfilter (gleitender Durchschnitt, mit Cutoff-Frequenz CutoffFrequency). Sehr einfach, sehr schnell, funktioniert super, und fast kein Speicher Overhead. Hinweis: Alle Variablen haben einen Bereich über die Filterfunktion hinaus, mit Ausnahme des übergebenen newInput Hinweis: Dies ist ein einstufiger Filter. Mehrere Stufen können zusammen kaskadiert werden, um die Schärfe des Filters zu erhöhen. Wenn Sie mehr als eine Stufe verwenden, müssen Sie DecayFactor anpassen (was die Cutoff-Frequenz betrifft), um sie zu kompensieren. Und natürlich alles, was Sie brauchen, ist die beiden Zeilen überall platziert, brauchen sie nicht ihre eigene Funktion. Dieser Filter hat eine Rampenzeit, bevor der gleitende Durchschnitt diejenige des Eingangssignals darstellt. Wenn Sie diese Rampenzeit umgehen müssen, können Sie MovingAverage einfach auf den ersten Wert von newInput anstelle von 0 initialisieren und hoffen, dass der erste newInput kein Ausreißer ist. (CutoffFrequency / SampleRate) einen Bereich zwischen 0 und 0,5 aufweist. DecayFactor ist ein Wert zwischen 0 und 1, in der Regel in der Nähe von 1. Single-precision Schwimmer sind gut genug für die meisten Dinge, ich bevorzuge nur Doppel. Wenn Sie mit ganzen Zahlen bleiben müssen, können Sie DecayFactor und Amplitude Factor in Fractional Integers umwandeln, in denen der Zähler als Integer gespeichert wird und der Nenner eine Ganzzahl von 2 ist (so können Sie Bit-Shift nach rechts als die Nenner, anstatt sich während der Filterschleife teilen zu müssen). Zum Beispiel, wenn DecayFactor 0.99, und Sie Ganzzahlen verwenden möchten, können Sie DecayFactor 0.99 65536 64881. Und dann immer wenn Sie multiplizieren mit DecayFactor in Ihrer Filterschleife, nur verschieben Sie das Ergebnis 16. Für weitere Informationen über dieses, ein ausgezeichnetes Buch thats Online, Kapitel 19 auf rekursive Filter: www. dspguide / ch19.htm PS Für das Moving Average-Paradigma, einen anderen Ansatz für die Einstellung DecayFactor und AmplitudeFactor, die möglicherweise mehr relevant für Ihre Bedürfnisse, können Sie sagen, dass Sie wollen, dass die vorherigen, etwa 6 Artikeln gemittelt, es diskret tun, fügen Sie 6 Elemente und teilen durch 6, so Können Sie den AmplitudeFactor auf 1/6 und DecayFactor auf (1.0 - AmplitudeFactor) einstellen. Antwortete May 14 12 at 22:55 Jeder andere hat kommentiert gründlich über den Nutzen der IIR vs FIR, und auf Power-of-two-Division. Id nur, um einige Implementierungsdetails zu geben. Das unten genannte funktioniert gut auf kleinen Mikrocontrollern ohne FPU. Es gibt keine Multiplikation, und wenn Sie N eine Potenz von zwei halten, ist die gesamte Division ein-Zyklus-Bit-Verschiebung. Basic FIR-Ringpuffer: Halten Sie einen laufenden Puffer der letzten N-Werte und einen laufenden SUM aller Werte im Puffer. Jedes Mal, wenn eine neue Probe kommt, subtrahieren Sie den ältesten Wert im Puffer von SUM, ersetzen Sie ihn durch das neue Sample, fügen Sie das neue SUM zu SUM hinzu und geben Sie SUM / N aus. Modifizierter IIR-Ringpuffer: Halten Sie einen laufenden SUM der letzten N-Werte. Jedes Mal, wenn ein neues Sample eingeht, SUM - SUM / N, fügen Sie das neue Sample hinzu und geben SUM / N aus. Antwort # 1 am: August 28, 2008, um 13:45 Uhr Wenn Sie 399m lesen Sie Recht, you39re beschreiben einen First-Order IIR-Filter der Wert you39re Subtraktion isn39t der älteste Wert, der herausfällt, sondern ist stattdessen der Durchschnitt der vorherigen Werte. Erstklassige IIR-Filter können sicherlich nützlich sein, aber I39m nicht sicher, was du meinst, wenn Sie vorschlagen, dass der Ausgang ist der gleiche für alle periodischen Signale. Bei einer Abtastrate von 10 kHz liefert das Einspeisen einer 100 Hz-Rechteckwelle in ein 20-stufiges Kastenfilter ein Signal, das für 20 Abtastungen gleichmäßig ansteigt, für 30 sitzt, für 20 Abtastungen gleichmäßig sinkt und für 30 sitzt. Ein erster Ordnung IIR-Filter. Ndash Supercat Aug 28 13 am 15:31 wird eine Welle, die scharf anfängt zu steigen und allmählich Niveaus in der Nähe (aber nicht auf) das Eingabe-Maximum, dann scharf beginnt zu fallen und allmählich in der Nähe (aber nicht auf) der Eingabe Minimum. Sehr unterschiedliches Verhalten. Ndash Supercat Ein Problem ist, dass ein einfacher gleitender Durchschnitt kann oder auch nicht nützlich sein. Mit einem IIR-Filter können Sie einen schönen Filter mit relativ wenigen Calcs erhalten. Die FIR Sie beschreiben kann Ihnen nur ein Rechteck in der Zeit - ein sinc in freq - und Sie können nicht die Seitenkeulen zu verwalten. Es kann lohnt sich, in ein paar ganzzahlige Multiplikatoren zu werfen, um es eine schöne symmetrische abstimmbare FIR, wenn Sie die Zeitschaltuhren ersparen können. Ndash ScottSeidman: Keine Notwendigkeit für Multiplikatoren, wenn man einfach jede Stufe der FIR entweder den Durchschnitt der Eingabe auf diese Stufe und ihre vorherigen gespeicherten Wert, und dann speichern Sie die Eingabe (wenn man hat Der numerische Bereich, man könnte die Summe anstatt den Durchschnitt verwenden). Ob das besser ist als ein Box-Filter, hängt von der Anwendung ab (die Sprungantwort eines Boxfilters mit einer Gesamtverzögerung von 1ms wird zum Beispiel eine böse d2 / dt-Spitze aufweisen, wenn der Eingang geändert wird, und wieder 1ms später, wird aber haben Die minimal mögliche d / dt für einen Filter mit einer Gesamtverzögerung von 1ms). Ndash supercat Wie mikeselectricstuff sagte, wenn Sie wirklich brauchen, um Ihren Speicherbedarf zu reduzieren, und Sie dont dagegen Ihre Impulsantwort ist eine exponentielle (anstelle eines rechteckigen Puls), würde ich für einen exponentiellen gleitenden durchschnittlichen Filter gehen . Ich nutze sie ausgiebig. Mit dieser Art von Filter, brauchen Sie nicht jeden Puffer. Sie brauchen nicht zu speichern N Vergangenheit Proben. Nur einer. So werden Ihre Speicheranforderungen um einen Faktor von N reduziert. Auch brauchen Sie keine Division für das. Nur Multiplikationen. Wenn Sie Zugriff auf Gleitpunktarithmetik haben, verwenden Sie Fließkomma-Multiplikationen. Andernfalls können ganzzahlige Multiplikationen und Verschiebungen nach rechts erfolgen. Allerdings sind wir im Jahr 2012, und ich würde Ihnen empfehlen, Compiler (und MCUs), mit denen Sie mit Gleitkommazahlen arbeiten können. Abgesehen davon, dass mehr Speicher effizienter und schneller (Sie dont haben, um Elemente in jedem kreisförmigen Puffer zu aktualisieren), würde ich sagen, es ist auch natürlich. Weil eine exponentielle Impulsantwort besser auf die Art und Weise reagiert, wie sich die Natur verhält, in den meisten Fällen. Ein Problem mit dem IIR-Filter fast berührt von Olin und Supercat, aber anscheinend von anderen ignoriert ist, dass die Rundung nach unten führt einige Ungenauigkeiten (und möglicherweise Bias / Trunkierung). Unter der Annahme, dass N eine Potenz von zwei ist und nur ganzzahlige Arithmetik verwendet wird, beseitigt das Shift-Recht systematisch die LSBs des neuen Samples. Das bedeutet, dass, wie lange die Serie jemals sein könnte, wird der Durchschnitt nie berücksichtigen. Nehmen wir z. B. eine langsam abnehmende Reihe (8,8,8,8,7,7,7,7,6,6) an und nehmen an, daß der Durchschnitt tatsächlich 8 ist. Die Faust 7 Probe bringt den Durchschnitt auf 7, unabhängig von der Filterstärke. Nur für eine Probe. Gleiche Geschichte für 6, usw. Jetzt denke an das Gegenteil. Die serie geht auf. Der Durchschnitt bleibt auf 7 für immer, bis die Probe groß genug ist, um es zu ändern. Natürlich können Sie für die Bias korrigieren, indem Sie 1 / 2N / 2, aber das nicht wirklich lösen, die Präzision Problem. In diesem Fall wird die abnehmende Reihe für immer bei 8 bleiben, bis die Probe 8-1 / 2 (N / 2) ist. Für N4 zum Beispiel, wird jede Probe über Null halten den Durchschnitt unverändert. Ich glaube, eine Lösung für das implizieren würde, um einen Akkumulator der verlorenen LSBs halten. Aber ich habe es nicht weit genug, um Code bereit, und Im nicht sicher, es würde nicht schaden, die IIR Macht in einigen anderen Fällen der Serie (zum Beispiel, ob 7,9,7,9 würde durchschnittlich 8 dann). Olin, Ihre zweistufige Kaskade würde auch eine Erklärung brauchen. Halten Sie zwei durchschnittliche Werte mit dem Ergebnis der ersten in die zweite in jeder Iteration eingezogen halten. Was ist der Vorteil dieses Moving Average Filter kate schrieb: gt Hi, gt gt Ich bin für einige Code für ein Tiefpassfilter suchen, die ich auf gt ein Signal vor der Durchführung der Spektralanalyse anwenden können. Gt gt Ich apoligise für meine Unwissenheit, aber dieses ist Weise außerhalb mein Feldes also Im gt nicht wirklich einen Sinn davon. Was sind die Eingänge, die gt benötigt, außer dem Signal selbst gt gt Danke, gt Kate In der analogen Domäne, verwenden Leute Tiefpaß-Filterung für mindestens ein paar Gründe, die in den Sinn kommen (i) machen das Signal besser aussehen Ii) Vermeidung von Aliasing während der Analog-Digital-Umsetzung, was dazu führt, dass hochfrequente Noise-Signale auf niedrige Frequenzen verallgemeinert werden, was die interessierenden niederfrequenten Signale beschädigen und den Rauschanteil erhöhen kann. Es scheint nicht, dass eine dieser Überlegungen auf Ihre Situation zutrifft (i) Sie sehen das Signal nicht direkt an (Sie werden die Spektralanalyse durchführen) (ii) Ihr Signal ist bereits digitalisiert. Speziell, wenn Sie Spektralanalyse tun, wird das Hochfrequenz-Zeug an der Hochfrequenz-Ende angezeigt, und Sie können wählen, um es zu ignorieren. Für jede lineare Technik (dies schließt die FFT - und die Matlab-Filter () - Funktion ein) wird der Hochfrequenzinhalt die Spektralanalyse des niederfrequenten Inhalts nicht stören. Es sei denn, Sie möchten Ihre Daten vor der Filterung dezimieren. Gibt es einen besonderen Grund, den Sie wollen, um loszuwerden, die hochfrequente Inhalt vor Spektralanalyse kate schrieb: gt Hi, gt gt Ich bin für einige Code für ein Tiefpassfilter suchen, die ich auf gt ein Signal vor dem Tragen anwenden können Spektralanalyse durchgeführt. Gt gt Ich apoligise für meine Unwissenheit, aber dieses ist Weise außerhalb mein Feldes also Im gt nicht wirklich einen Sinn davon. Was sind die Eingänge, die gt benötigt, außer dem Signal selbst gt gt Danke, gt Kate In der analogen Domäne, verwenden Leute Tiefpaß-Filterung für mindestens ein paar Gründe, die in den Sinn kommen (i) machen das Signal besser aussehen Ii) Vermeidung von Aliasing während der Analog-Digital-Umsetzung, was dazu führt, dass hochfrequente Noise-Signale auf niedrige Frequenzen verallgemeinert werden, was die interessierenden niederfrequenten Signale beschädigen und den Rauschanteil erhöhen kann. Es scheint nicht, dass eine dieser Überlegungen auf Ihre Situation zutrifft (i) Sie sehen das Signal nicht direkt an (Sie werden die Spektralanalyse durchführen) (ii) Ihr Signal ist bereits digitalisiert. Speziell, wenn Sie Spektralanalyse tun, wird das Hochfrequenz-Zeug an der Hochfrequenz-Ende angezeigt, und Sie können wählen, um es zu ignorieren. Für jede lineare Technik (dies schließt die FFT - und die Matlab-Filter () - Funktion ein) wird der Hochfrequenzinhalt die Spektralanalyse des niederfrequenten Inhalts nicht stören. Es sei denn, Sie möchten Ihre Daten vor dem Filtern dezimieren. Gibt es einen besonderen Grund, den Sie wollen, um loszuwerden, die hochfrequente Inhalte vor Spektralanalyse Um ehrlich zu sein, weiß ich nicht, warum Im versuchen, loszuwerden, die hohen Frequenzen. Im im Grunde die Anweisungen in einer ISO. Wie Sie vielleicht erraten haben, Computer-Programmierung und Signalverarbeitung ist wirklich nicht mein Bereich, so dass die Sprache ist mir fremd Was Im tun ist wie folgt - Im ein Bauingenieur und Im versuchen, ein Straßenprofil zu analysieren. Das Profil ist grundsätzlich das Äquivalent eines Signals, das mit dem Abstand variiert (aber da die Geschwindigkeit konstant ist, ist dies das gleiche wie mit der Zeit variierend). Der genaue Wortlaut der ISO ist vorverarbeitende Filter sollten zum Beispiel Butterworth verwendet werden. Allerdings dachte ich, dass die gleitenden Durchschnitt könnte ein einfacher Ort zu beginnen Ich vermute, der Grund Im Versuch, hohe Frequenzen zu beseitigen ist, weil sie in Bezug auf Straßenbelag Schäden vernachlässigbar wäre. Ich schätze Ihre Zeit sehr, Katherine Rajeev schrieb: gt gt gt kate schrieb: gtgt Hallo, gtgt gtgt Ich suche nach einem Code für einen Tiefpaßfilter, den ich gtgt ein Signal vor der Durchführung der Spektralanalyse gtgt. Gtgt gtgt Ich apoligise für meine Unwissenheit, aber das ist weit außerhalb meines Feldes so gt Im gtgt nicht wirklich einen Sinn davon. Was sind die Eingaben, die gtgt benötigt anders als das Signal selbst gtgt gtgt In der analogen Bereich, verwenden Leute Tiefpaß-Filterung für mindestens ein GT paar Gründe, die in den Sinn kommen (i) das Signal (Ii) ein Aliasing während der Analog-Digital-Umwandlung zu vermeiden, wobei gt zu hochfrequenten Geräuschsignalen führt, die auf niedrige gt-Frequenzen verallgemeinert werden, was die niedrigeren Frequenzsignale von gt-Interesse gt verfälschen und den Rauschpegel erhöhen kann. Gt gt Es scheint nicht, dass jede dieser Erwägungen gelten für gt Ihre gt Situation (i) Sie sind nicht auf das Signal direkt (youre gt gehen gt zu tun Spektralanalyse) (ii) Ihr Signal ist bereits digitalisiert. Gt gt Speziell, wenn Sie Spektralanalyse durchführen, wird das hochfrequente gt stuff gt am hochfrequenten Ende erscheinen und Sie können gt it ignorieren. Gt Für jede lineare Technik (hierzu gehören die FFT - und die Matlab-Filterfunktion gt) wird der hochfrequente Gehalt die gt-Spektralanalyse des niederfrequenten Inhalts nicht stören. Es sei denn, Sie möchten Ihre Daten vor dem Filtern dezimieren. Gt gt Gibt es einen besonderen Grund, den Sie den gt-Hochfrequenz-Gt-Gehalt vor der Spektralanalyse loswerden wollen gt HTH gt - rajeevgt gt Katherine schrieb: gt Um ehrlich zu sein, weiß ich nicht, warum ich versuche, mich loszuwerden Hohe gt-Frequenzen. Im im Grunde die Anweisungen in einer ISO. Gt Wie Sie vielleicht erraten haben, Computer-Programmierung und Signalverarbeitung gt ist wirklich nicht mein Bereich so die Sprache verwendet ist mir fremd gt gt Was Im tun ist wie folgt - Im ein Bauingenieur und Im versuchen, gt analysieren ein Straßenprofil. Das Profil ist grundsätzlich das gt equivilent eines Signals, das mit dem Abstand variiert (aber da die Geschwindigkeit gt konstant ist, ist dies die gleiche wie die zeitliche Veränderung). Die genaue gt Wortlaut der ISO ist Pre-Processing Filter sollten für einige Fragen in den Sinn kommen. ein. Was fragt Sie die ISO nach den Vorverarbeitungsfiltern b? Wie wird die Spektralanalyse durchgeführt? C. Gibt die ISO die Grenzfrequenz für den Filter an. Dh Frequenzen über X gt Beispiel Butterworth beseitigen. Allerdings dachte ich, dass der gleitende Durchschnitt gt könnte ein einfacher Ort zu starten Ich neige dazu, zustimmen, gleitender Durchschnitt wäre einfacher. Es hat auch eine Eigenschaft, dass alle Frequenzkomponenten um genau den gleichen Betrag verzögert werden, was bedeutet, dass die Wellenformform erhalten bleibt, die durch den Filter geht (natürlich werden einige Frequenzkomponenten abgeschwächt, aber sie werden nicht um beispielsweise 90 Grad verschoben , Bezogen auf andere Frequenzen). Der Butterworth-Filter (und in unterschiedlichem Ausmaß alle Analogfilter) hat diese Eigenschaft nicht, die als lineare oder phasenlineare bekannt ist. Butterworth bezieht sich auf eine Klasse von analogen Filtern mit einem bestimmten Phasen - und Frequenzgang, der einfach mit elektronischen Komponenten wie Widerständen, Kondensatoren und Induktivitäten realisiert werden kann. (Meine vernünftige Vermutung ist, dass) Menschen entwickelten digitale Äquivalente für diese und andere analoge Filter, weil sie mit ihren Eigenschaften vertraut waren. Allerdings würde eine Menge Leute heute fragen, wenn youre auf ein digitalisiertes Signal zu betreiben, warum die Mühe mit einem Analog-Look-Alike-Filter. Gt Ich nehme den Grund Im, der versucht, hohe Frequenzen zu beseitigen, ist gt, weil sie im Hinblick auf die Straßenoberflächenschäden vernachlässigbar wären. Gt gt Ich schätze sehr Ihre Zeit, gt Katherine Wieder, ich bin viel verpflichtet, Sie für die Zeit nehmen, die ich versucht habe, Ihre qs unten beantworten: gt Einige Fragen in den Sinn kommen. Gt gt a. Was fragt die ISO nach den Pre-Processing Filtern Nach den Pre-Processing Filtern fragt sie, dass ich eine FFT durchzuführen, die ich vermute, ist auch eine Antwort auf Ihre nächste Frage. Das große Verständnisproblem, das im, das ist, dass ich das Straßenprofil selbst produzierte und spezifiziere, dass ich die Frequenzen wollte, um ein Minimum von 0.01cycles / meter und ein Maximum von 4cycles / meter zu sein. Warum muss ich dann die hohen Frequenzen gt gt b herausfiltern. Wie wird die Spektralanalyse durchgeführt gt gt c. Gibt die ISO die Grenzfrequenz für den Filter an. Dh gt get gt befreien von Frequenzen über X Es gibt keine Cutoff-Frequenz. Gtgt Beispiel Butterworth. Allerdings dachte ich, dass die gleitenden Durchschnitt gtgt könnte ein einfacher Ort zu starten gt gt Ich neige dazu, zu vereinbaren, gleitender Durchschnitt wäre einfacher. Es hat auch eine gt-Eigenschaft gt, daß alle Frequenzkomponenten um genau die gleiche gt-Menge verzögert sind, was bedeutet, daß die Wellenformform durch das gt-Filter gt erhalten bleibt (natürlich werden einige Frequenzkomponenten abgeschwächt, aber gt nicht gt B. um 90 Grad gegenüber anderen Frequenzen verschoben werden). Gt Der gt-Butterworth-Filter (und in unterschiedlichem Ausmaß alle analogen Filter) hat nicht diese Eigenschaft, die als lineare oder phasenlineare Eigenschaft bekannt ist. Gt gt Butterworth bezieht sich auf eine Klasse von analogen Filtern mit einer bestimmten gt-Phase gt und einem Frequenzgang, der mit gt-elektronischen gt-Komponenten wie Widerständen, Kondensatoren und Induktivitäten leicht realisierbar ist. (Mein gt vernünftiger gt guess gt ist, dass) Menschen entwickelten digitale Entsprechungen zu diesen und andere gt analoge gt-Filter, weil sie mit ihren Eigenschaften vertraut waren. Allerdings gt ein gt viel gt von Leuten heute fragen würde, wenn youre gehen, um auf einem digitalisierten gt-Signal zu betreiben, gt, warum die Mühe mit einem Analog-Look-Alike-Filter. Gt gtgt Ich nehme den Grund Im, der versucht, hohe Frequenzen zu beseitigen, ist gtgt, weil sie im Hinblick auf Straßenschäden vernachlässigbar wären. Gtgt gtgt Ich schätze Ihre Zeit sehr, gtgt Katherine gt gt lt. Gt gt gt HTH gt - rajeev - Vielen Dank. Katherine Klingt wie Sie können die Daten bereits so, wie Sie den Frequenzbereich zu filtern. Was ist die Abtastrate? Ist es räumlich oder zeitlich? Wenn Sie 4 Zyklen / Meter an das System angeben, ist es sehr unwahrscheinlich, dass es nur eine Abtastung wäre, um diese Frequenz (Fs1 / 8 Meter) ohne irgendeine Art von gleitendem Mittelfilter zu erhalten. Was ist die ISO-Anforderung (ISO-Standard, von wo aus) Ein Effekt der Filterung ist es, die Energie auf die niedrigeren Frequenzen zu verschieben und nicht nur abzutrennen, wie Sie es im Frequenzbereich tun würden. Wenn das Endziel ist es, ein IRI oder eine Art von anderen Straßenrauheit Metrik als dies kann kritisch zu berechnen. Gt gt Nach der Pre-Processing-Filter fragt es, dass ich eine FFT, die gt Ich schätze, ist auch eine Antwort auf Ihre nächste Frage. Das große gt Verstehenproblem, das im, das ist, dass ich die Straße gt Profil selbst verursachte und spezifiziere, dass ich die Frequenzen ein gt Minimum von 0.01cycles / meter und ein Maximum von 4cycles / Meter sein wollte. Warum dann gt sollte ich herausfiltern müssen hohe Frequenzen gt Charlie, bin ich sehr ignorant auf die richtige Terminologie in diesem Zeug und Im nicht sicher, was Sie mit Sample-Rate. Ill nur sagen, was im tun. Zuerst generiere ich ein zufälliges Straßenprofil mit räumlichen Frequenzen von 0,01 - 4 Zyklen / m. Die ISO 8608: 1995 haben Klassifizierungen der Straße und abhängig davon, gibt es einen PSD-Wert für jede der Frequenzen zwischen 0,01 und 4, die Sie wollen. Diese Werte werden dann in eine Gleichung für die Straßenerzeugung gesetzt, die eine Straße mit einer beliebigen Anzahl von Punkten (in meinem Fall 8000 oder 400 Metern, d. H. Alle 0,05 Meter) erzeugt. Ich dann grafisch alle ISO-Werte für die PSD gegen die räumlichen Frequenzen, die ich oben hatte. Ich versuche dann, rückwärts zu arbeiten, um zu sehen, ob ich dieses gleiche Diagramm unter Verwendung des gleichen Straßenprofils erzeugen kann und das Finden der FFT von ihm und dann des PSD. Ich weiß nicht, was Sie mit der Stichprobe Frequenz Im ängstlich, vielleicht ist es dort oben, was ich beschrieben habe Ich danke Ihnen so viel für Ihre Zeit, ich bin komplett wie ein Fisch aus dem Wasser auf diesem ein Charlie schrieb: gt gt gt Katherine, Gt gt Klingt wie Sie können die Daten bereits die Art und Weise filtern Sie gt Spezifizierung gt der Frequenzbereich. Was ist Ihre Sampling-Rate Ist es räumlich oder gt temporal gt Wenn Sie 4 Zyklen / Meter an das System ist sehr unwahrscheinlich gt, dass es gt wäre nur Sampling, um diese Rate (Fs1 / 8 Meter) ohne einige gt Art von gt Gt gt Was ist die ISO-Anforderung (ISO-Norm, von wo aus) gt gt Ein Effekt der Filterung ist es, die Energie auf die unteren gt-Frequenzen zu verschieben, anstatt sie einfach abzutrennen, wie Sie es in gt tun würden Gt-Frequenzbereich. Wenn das Endziel ist es, ein IRI oder einige gt Art von gt anderen Straßenrauheit Metrik als dies kann kritisch zu berechnen. Gt gt Charlie gt gtgt gtgt Nach den Pre-Processing-Filter fragt es, dass ich eine FFT-gt, die gtgt Ich denke, ist auch eine Antwort auf Ihre nächste Frage. Das große gtgt Verständnisproblem, das im, das ist, dass ich das gt-Straße gtgt Profil selbst produzierte und spezifiziere, dass ich wollte, dass die Frequenzen ein gtgt Minimum von 0.01cycles / meter und ein Maximum von 4cycles / Meter sein sollten. Warum dann gtgt sollte ich ausfiltern hochfrequenzen gtgt gt gt gt Danke für die Info auf ISO 8608: 1995 es sieht aus wie gute Referenz für einige meiner Arbeit auf Straßenprofil Verarbeitung. Zurück zu Ihrem Projekt. Wie ich es verstehe, machst du: 1. Erstellen des Straßenprofils im räumlichen Frequenzbereich mit einem Inhalt von 0,01-4 Zyklen / m 2. Erzeugung des räumlichen Profils aus 1 nach einigen Gleichungen (400 m lang, dx0,05 m, räumliche Abtastfrequenz1 / Sie können Tags, Autoren, Threads und sogar Suchergebnisse zu Ihrer Beobachtungsliste hinzufügen. So können Sie leicht den Überblick über Themen halten können, die youre interessiert an. Ihre Merkliste anzuzeigen, klicken Sie auf den quotMy Newsreaderquot Link. Um Artikel zu Ihrer Watchlist hinzuzufügen, klicken Sie auf den Link "quotadd to watch listquot" am unteren Rand einer Seite. Wie füge ich einen Artikel zu meiner Merkliste hinzu Suche Um Suchkriterien zu Ihrer Merkliste hinzuzufügen, suchen Sie im Suchfeld nach dem gewünschten Suchbegriff. Klicken Sie auf den quotAddd diese Suche zu meinem watch listquot Link auf der Suchergebnisseite. Sie können auch einen Tag zu Ihrer Überwachungsliste hinzufügen, indem Sie nach dem Tag mit der Anweisung quottag suchen: tagnamequot wobei tagname der Name des Tags ist, das Sie ansehen möchten. Autor Um einen Autor zu Ihrer Beobachtungsliste hinzuzufügen, gehen Sie zur Autorenprofilseite und klicken Sie auf den quotAdd this author zu meinem watch listquot Link am oberen Rand der Seite. Sie können auch einen Autor zu Ihrer Watch-Liste hinzufügen, indem Sie zu einem Thread, dass der Autor gebucht hat und klicken Sie auf den quotAdd diesen Autor zu meinem watch listquot Link. Sie werden benachrichtigt, wenn der Autor eine Post macht. Thread Um einen Thread zu deiner Watchlist hinzuzufügen, geh zur Threadseite und klicke auf den Thread zu meinem Watchlistquot Link oben auf der Seite. Über Newsgroups, Newsreader und MATLAB Central Was sind Newsgroups Die Newsgroups sind ein weltweites Forum, das allen offen steht. Newsgroups werden verwendet, um eine breite Palette von Themen zu diskutieren, Ankündigungen machen und Handelsdateien. Diskussionen sind Threaded, oder gruppiert in einer Weise, die Sie eine gebuchte Nachricht und alle ihre Antworten in chronologischer Reihenfolge lesen können. Dies macht es einfach, den Faden des Gesprächs zu folgen, und zu sehen, whatrsquos bereits gesagt, bevor Sie Ihre eigene Antwort posten oder eine neue Buchung. Newsgroup-Inhalte werden von Servern verteilt, die von verschiedenen Organisationen im Internet gehostet werden. Nachrichten werden unter Verwendung von offenen Standardprotokollen ausgetauscht und verwaltet. Keine einzelne Entität ldquoownsrdquo die Newsgroups. Es gibt Tausende von Newsgroups, die jeweils ein einziges Thema oder ein bestimmtes Thema behandeln. Der MATLAB Central Newsreader platziert und zeigt Nachrichten in der comp. soft-sys. matlab-Newsgroup an. Wie lese oder poste ich in den Newsgroups Sie können den integrierten Newsreader auf der MATLAB Central-Website verwenden, um Nachrichten in dieser Newsgroup zu lesen und zu posten. MATLAB Central wird von MathWorks gehostet. Nachrichten, die über den MATLAB Central Newsreader veröffentlicht werden, werden von allen Benutzern der Newsgroups gesehen, unabhängig davon, wie sie auf die Newsgroups zugreifen. Es gibt mehrere Vorteile der Verwendung von MATLAB Central. Ein Konto Ihr MATLAB Central-Konto ist mit Ihrem MathWorks-Konto verknüpft. Verwenden Sie die E-Mail-Adresse Ihrer Wahl Mit dem MATLAB Central Newsreader können Sie eine alternative E-Mail-Adresse als Ihre Buchungsadresse definieren, um Unfälle in Ihrer primären Mailbox zu vermeiden und Spam zu reduzieren. Spam-Kontrolle Die meisten Newsgroup-Spam wird vom MATLAB Central Newsreader gefiltert. Tagging-Nachrichten können von jedem angemeldeten Benutzer mit einem entsprechenden Label versehen werden. Tags können als Schlüsselwörter verwendet werden, um bestimmte Dateien von Interesse zu finden, oder als eine Möglichkeit, Ihre Bookmarking-Einträge zu kategorisieren. Sie können wählen, andere zu erlauben, Ihre Umbauten anzusehen, und Sie können otherrsquo Umbauten als auch die der Gemeinschaft an sehen oder suchen. Tagging bietet eine Möglichkeit, sowohl die großen Trends und die kleineren, mehr obskuren Ideen und Anwendungen zu sehen. Beobachtungslisten Durch das Einrichten von Überwachungslisten können Sie über Updates informiert werden, die für Beiträge erstellt wurden, die von Autor, Thread oder Suchvariablen ausgewählt wurden. Ihre Benachrichtigungswünsche können per E-Mail (täglich digest oder sofort), im My Newsreader oder per RSS-Feed gesendet werden. Andere Möglichkeiten für den Zugriff auf die Newsgroups Verwenden Sie einen Newsreader über Ihre Schule, Arbeitgeber oder Internet Service Provider Pay for newsgroup Zugriff von einem kommerziellen Anbieter Verwenden Sie Google Groups Mathforum. org bietet einen Newsreader mit Zugriff auf die comp. soft sys. matlab newsgroup Führen Sie Ihre eigenen Server. Danke vielmals.


No comments:

Post a Comment