Ich weiß, das ist erreichbar mit Boost wie pro. But ich wirklich gerne vermeiden, Boost Ich habe gegoogelt und nicht gefunden, keine geeigneten oder lesbaren Beispiele. Basisch möchte ich den gleitenden Durchschnitt eines laufenden Streams von einem Strom von Gleitkommazahlen zu verfolgen Mit den neuesten 1000 Nummern als Datenbeispiel. Was ist der einfachste Weg, dies zu erreichen. Ich experimentierte mit der Verwendung eines kreisförmigen Arrays, exponentiell gleitenden Durchschnitt und ein einfacher gleitender Durchschnitt und festgestellt, dass die Ergebnisse aus dem kreisförmigen Array passte meine Bedürfnisse am besten Wenn Sie Ihre Bedürfnisse einfach sind, können Sie nur versuchen, einen exponentiellen gleitenden Durchschnitt zu verwenden. Einfach nur, Sie machen eine Akkumulatorvariable, und wie Ihr Code bei jedem Sample sieht, aktualisiert der Code den Akkumulator mit dem Neuer Wert Du wählst eine konstante Alpha, die zwischen 0 und 1 ist, und berechnen dies. Sie müssen nur einen Wert von Alpha finden, wo die Wirkung einer bestimmten Probe nur für etwa 1000 Proben dauert. Hmm, ich bin nicht wirklich sicher, dass dies ist Passend für dich, jetzt da ich es hier hingelegt Das Problem ist, dass 1000 ein ziemlich langes Fenster für einen exponentiellen gleitenden Durchschnitt ist Ich bin mir nicht sicher, dass es ein Alpha gibt, das den Durchschnitt über die letzten 1000 Zahlen verbreiten würde, ohne Unterströmung im Floating Punkt-Berechnung Aber wenn Sie einen kleineren Durchschnitt wünschen, wie 30 Zahlen oder so, ist dies eine sehr einfache und schnelle Art und Weise zu tun it. answered Jun 12 12 bei 4 44. 1 auf Ihrem Beitrag Der exponentielle gleitende Durchschnitt kann das Alpha zu sein Variable So ermöglicht dies die Berechnung von Zeitbasis-Mittelwerten zB Bytes pro Sekunde Wenn die Zeit seit dem letzten Akkumulator-Update mehr als 1 Sekunde ist, lassen Sie alpha 1 1 sein. Andernfalls können Sie alpha be usecs seit letztem Update 1000000 jxh Jun 12 12 at 6 21.Basically Ich möchte den gleitenden Durchschnitt eines laufenden Streams von einem Strom von Gleitkommazahlen mit den neuesten 1000 Zahlen als Datenbeispiel verfolgen. Hinweis, dass die unten die Gesamtsumme als Elemente als hinzugefügt ersetzt ersetzt, vermeiden Kostspielig, um die Summe zu berechnen, die für den Durchschnitt benötigt wird - auf Nachfrage. Total ist ein anderer Parameter von T zu unterstützen, zB mit einer langen langen, wenn insgesamt 1000 lang s, ein int für char s oder ein doppeltes zu total float s. Dies ist ein bisschen fehlerhaft, dass Numsamples an INTMAX vorbeikommen könnten - wenn Sie sich vorstellen können, dass Sie eine lange Zeit langer Zeit verwenden können oder ein zusätzliches bool Datenelement verwenden, um aufzuzeichnen, wann der Container zum ersten Mal gefüllt wird, während er Numsamples um das Array herumtreibt und dann etwas Unschuldiges umbenannt hat Wie pos. answered 12. Juni 12 bei 5 19.on geht davon aus, dass void Operator T Probe tatsächlich void Operator T Probe oPless Jun 8 14 bei 11 52. oPless ahhh gut gesichtet tatsächlich ich bedeutete, dass es void Betreiber T Probe aber natürlich Sie könnten verwenden, was Notation Sie mochten Will fix, danke Tony D Jun 8 14 bei 14 27.Account Deactivated. Email Verification Required. Almost Done. Thank Sie für die Registrierung. Create New Password. Create New Password. Sign In zu Complete Account Merge. Resend Verification Email. Verification E-Mail Sent. Email Verified. Change Password. Password Changed. Create New Password. Create Neues Passwort. Die Macht der Moving-Average-Digital-Filter. Many mal, ADC-Benutzer verwenden Mittelung Algorithmen mit ihrem Controller oder Prozessor auf der Ausgabe Von mehreren Samples aus dem Konverter Sie können ein umgewandeltes Signal mit dieser Technik verarbeiten Abbildung 1, sowie die effektive Auflösung des Systems durch die Verringerung der Systemrauschen. Sie implementieren die Glättung Wirkung auf Ihre konvertierten Daten durch die Erfassung von mehreren Signalen bei einer konstanten Probe Rate, Mittelwertbildung einer vorbestimmten Gruppe oder Anzahl von Abtastwerten und anschließendes Fortsetzen dieses Prozesses mit mehreren Gruppen über die Zeit Wie Abbildung 1 zeigt, erzeugt das Aggregat der gemittelten Ergebnisse ein geglättetes Signal. Diese Mittelungstechnik liefert im Wesentlichen ein Tiefpassfilter an den Wandlerausgangsdaten Sie Kann die Effektivität Ihrer Filterung kontrollieren, indem Sie die passende Anzahl von Samples für die gemittelten Gruppen auswählen. Wenn Sie in jeder Gruppe mehr Samples verwenden, sehen Sie einen höheren Glättungsgrad. Dieser Mittelungsprozess eliminiert Spikes in den Rohdaten und reduziert die Bandbreite Des endgültigen Signals. Ein anderes Nebenprodukt dieser Mittelungstechnik ist, dass die Umwandlungsauflösung oder Genauigkeit der Daten zunimmt Idealerweise erhöht ein Durchschnitt von vier Abtastungen 4 1 eines Gleichstromsignals die effektive Auflösung des Wandlers mit einem 6-dB Erhöhung des SNR-Signal-Rausch-Verhältnisses Ein Durchschnitt von 16 Samples 4 2 erhöht die Auflösung um zwei und dein SNR um 12 dB Theoretisch erhöht eine Gruppengröße von 4 N die Anzahl effektiver Bits von deiner Umwandlung um N, Aber es gibt real-world Einschränkungen für diese Theorie. Es ist möglich, die Anzahl der effektiven Bits mit Ihrem ADC zu erhöhen, solange Sie realistische Ziele zu halten und halten nonideal Bedingungen Zum Beispiel, die Verbesserung eines 12-Bit-konvertierten Ergebnis auf 16 Bits erfordert 4 4 Samples für die Mittelung von vier bis vierten ist gleichbedeutend mit 256 Die erste Frage, die Sie stellen sollten, ist: Habe ich Zeit, den gewünschten Algorithmus in meinem Controller oder Prozessor zu implementieren Wenn Sie versuchen, eine höhere Auflösung als 16 zu erreichen, ist die benötigte Probe Größe erhöht sich sehr schnell Übrigens sollten die unteren Bits des 12-Bit-Konverters in dieser Diskussion laut sein, so dass die Mittelung wirksam ist. Dieses Rauschen sollte Gauß sein. Nonideale Bedingungen, die die Größe Ihrer Mittelungsgruppe beeinflussen können, sind Drift der Eingabe über die Zeit, Stromversorgungsvariationen, Spannungsreferenzänderungen und Temperatureffekte auf Ihrem System Jede dieser nicht-endlichen Bedingungen kann den Ausgangswert Ihrer Umwandlung verändern. Die Stichprobengröße für ein nonideales System kann sich von 2000 mit einem idealen Driftless-System ändern Mehrere hundert Samples Wenn Sie die Stichprobengröße über ein paar hundert Samples für dieses nonideale System erhöhen, beginnen die Ergebnisse wieder lauter. Allerdings können Sie Allan Varianzmethoden verwenden, um die optimale Anzahl von Mittelwerten für Ihren Datensatz zu berechnen. Schließlich untersuchen Sie Ihre Eingabe Signal und stellen Sie sicher, dass Sie nicht versuchen, ein analoges Signal, das einen Setzzeitfehler oder ein störendes periodisches Signal, wie die Netzfrequenz hat zu konvertieren. Es gibt zeitsparende Möglichkeiten zur Implementierung von Mittelungsalgorithmen, die über die einfache, brute - Kraft-Technik zum Sammeln aller Daten und dann Durchführen eines Durchschnitts Zum Beispiel könnten Sie einen FIFO implementieren, indem Sie einen neuen Datenpunkt hinzufügen und den ersten in der Gruppe angesammelten Datenpunkt subtrahieren. Zusätzlich können Sie die Größe der Gruppen auswählen, um die Verwendung eines Verschiebungsrechts für die Aufteilung der Summe, wie zB Gruppenwerte von 4, 8, 16 und so weiter. Signalverarbeitung Digitale Filter. Digitalfilter werden von essentiell abgetasteten Systemen Die Eingangs - und Ausgangssignale werden durch Samples mit gleicher Darstellung dargestellt Zeitabstand. Finite Implulse Response FIR-Filter zeichnen sich durch eine zeitabhängige Abhängigkeit aus, die nur von einer vorgegebenen Anzahl der letzten Samples des Eingangssignals abweicht. Anders ausgedrückt, sobald das Eingangssignal auf Null gefallen ist, wird der Filterausgang nach einer gegebenen Zeit gleich sein Anzahl der Abtastperioden. Der Ausgang yk wird durch eine lineare Kombination der letzten Eingangsabtastwerte xk i gegeben. Die Koeffizienten bi geben das Gewicht für die Kombination an Sie entsprechen auch den Koeffizienten des Zählers der z-Domänen-Filterübertragungsfunktion Die folgende Abbildung zeigt ein FIR-Filter der Ordnung N 1.For lineare Phasenfilter sind die Koeffizientenwerte um die mittlere symmetrisch und die Verzögerungsleitung kann um diesen Mittelpunkt zurückgeklappt werden, um die Anzahl der Multiplikationen zu reduzieren. Die Übertragungsfunktion von FIR-Filter nur pocesses ein Zähler Dies entspricht einem All-Null-Filter. FIR-Filter erfordern in der Regel hohe Aufträge, in der Größenordnung von mehreren hundert So die Wahl dieser Art von Filtern benötigen eine große Menge an Hardware oder CPU Trotz dieser, eine Grund, eine FIR-Filter-Implementierung zu wählen, ist die Fähigkeit, eine lineare Phasenreaktion zu erreichen, was in manchen Fällen eine Voraussetzung sein kann. Dennoch hat der Fiter-Designer die Möglichkeit, IIR-Filter mit einer guten Phasenlinearität im Durchlassband wie Bessel-Filter zu wählen Oder um einen Allpassfilter zu korrigieren, um die Phasenreaktion eines Standard-IIR-Filters zu korrigieren. Moving Average Filter MA Edit. Moving Average MA Modelle sind Prozessmodelle in der Form. MA Prozesse ist eine alternative Darstellung von FIR Filtern. Average Filter Edit. A Filter Berechnen des Mittelwerts der N letzten Abtastwerte eines Signals. Es ist die einfachste Form eines FIR-Filters, wobei alle Koeffizienten gleich sind. Die Übertragungsfunktion eines Durchschnittsfilters ist gegeben. Die Übertragungsfunktion eines Durchschnittsfilters hat N gleich beabstandet Nullen entlang der Frequenzachse Jedoch wird die Null bei DC durch den Pol des Filters maskiert. Daher gibt es einen größeren Lappen ein Gleichstrom, das für das Filterpassband verantwortlich ist. Cascaded Integrator-Comb CIC Filter Edit. Kaskadierter Integrator-Kammfilter CIC Ist eine spezielle Technik für die Implementierung von durchschnittlichen Filtern, die in Serie gelegt werden. Die Serienplatzierung der durchschnittlichen Filter erhöht den ersten Lappen bei DC im Vergleich zu allen anderen Lappen. Ein CIC-Filter implementiert die Übertragungsfunktion von N durchschnittlichen Filtern, wobei jeder den Durchschnitt der RM-Samples berechnet Übertragungsfunktion wird also gegeben durch. CIC-Filter werden verwendet, um die Anzahl der Abtastwerte eines Signals um einen Faktor R zu dezimieren, oder in anderen Fällen, um ein Signal mit einer niedrigeren Frequenz wiederzugeben, wobei R & sub1; - Tests aus R herausgefunden werden M gibt an, wieviel des ersten Lappens vom Signal verwendet wird. Die Anzahl der mittleren Filterstufen, N gibt an, wie gut andere Frequenzbänder gedämpft werden, auf Kosten einer weniger flachen Übertragungsfunktion um DC. Die CIC-Struktur erlaubt es, das Ganze zu implementieren System mit nur Addierern und Registern, ohne Multiplikatoren, die gierig in Bezug auf Hardware sind. Downsampling durch einen Faktor von R erlaubt es, die Signalauflösung durch log 2 RR Bits zu erhöhen. Kanonische Filter Edit. Kanonische Filter implementieren eine Filterübertragungsfunktion mit einem Anzahl der Verzögerungselemente gleich der Filterreihenfolge, ein Multiplikator pro Zählerkoeffizient, ein Multiplikator pro Nennerkoeffizient und eine Reihe von Addierern Ähnlich wie bei aktiven kanonischen Strukturen zeigte diese Art von Schaltungen sehr empfindlich gegenüber Elementwerten eine kleine Änderung in a Koeffizienten hatten einen großen Einfluss auf die Übertragungsfunktion. Auch hier hat sich die Gestaltung von aktiven Filtern von kanonischen Filtern zu anderen Strukturen wie Ketten von Second-Order-Abschnitten oder Leapfrog-Filtern verschoben. Chain of Second Order Sections Edit. A zweiter Ordnung Abschnitt oft bezeichnet Als biquad implementiert eine Übertragungsfunktion zweiter Ordnung Die Übertragungsfunktion eines Filters kann in ein Produkt von Übertragungsfunktionen aufgeteilt werden, die jeweils einem Paar von Pole zugeordnet sind, und möglicherweise ein Paar von Nullen. Wenn die Übertragungsfunktion s Ordnung ungerade ist, dann ist ein erster Auftrag Muss der Kette hinzugefügt werden Dieser Abschnitt ist dem realen Pole und dem realen Null zugeordnet, wenn es eine. direkt-Form gibt 1.direkt-form 2.direkt-form 1 transposed. direkt-form 2 transponiert. Die dire - Form 2 transponiert von der folgenden Abbildung ist besonders interessant in Bezug auf erforderliche Hardware sowie Signal - und Koeffizienten-Quantisierung. Digital Leapfrog-Filter Edit. Filter-Struktur Edit. Digital-Leapfrog-Filter basieren auf der Simulation von analogen aktiven Leapfrog-Filtern Der Anreiz für diese Wahl ist Um von den hervorragenden Passband-Empfindlichkeitseigenschaften der ursprünglichen Leiter-Schaltung zu erben. Der folgende 4. Ordnung All-Pol-Tiefpass-Leapfrog-Filter kann als digitale Schaltung implementiert werden, indem man die analogen Integratoren durch Akkumulatoren ersetzt. Replacing der analogen Integratoren mit Akkumulatoren entspricht vereinfachen Die Z-Transformation zu z 1 s T, die die beiden ersten Terme der Taylor-Reihe von Zexps T sind. Diese Approximation eignet sich gut für Filter, bei denen die Abtastfrequenz viel höher ist als die Signalbandbreite. Transferfunktion Edit. Die Zustandsraumdarstellung von Kann die vorangehende Filtrierung wie folgt geschrieben werden. Aus dieser Gleichung kann man die A-, B-, C-, D-Matrizen schreiben. Aus dieser Darstellung lassen sich Signalverarbeitungswerkzeuge wie Octave oder Matlab erlauben, den Frequenzgang des Filters zu analysieren oder zu untersuchen Seine Nullen und Pole. In der digitalen Leapfrog-Filter, die relativen Werte der Koeffizienten setzen die Form der Transfer-Funktion Butterworth Chebyshev, während ihre Amplituden setzen die Cutoff-Frequenz Dividing alle Koeffizienten um einen Faktor von zwei verschiebt die Cutoff-Frequenz um eine Oktave Auch ein Faktor von zwei. Ein spezieller Fall ist der Buterworth 3. Ordnung Filter, der Zeitkonstanten mit relativen Werten von 1, 1 2 und 1 hat. Dadurch kann dieser Filter in Hardware ohne Multiplikator implementiert werden, aber mit Verschiebungen stattdessen. Autoregressive Filter AR Edit. Autoregressive AR Modelle sind Prozessmodelle in der Form. Wo un ist die Ausgabe des Modells, xn ist die Eingabe des Modells, und un - m sind vorherige Samples des Modellausgabewertes Diese Filter heißen autoregressiv, weil Ausgabewerte werden auf der Grundlage von Regressionen der vorherigen Ausgangswerte berechnet. AR-Prozesse können durch einen Allpol-Filter dargestellt werden. ARMA-Filter Edit. Autoregressive Moving-Average-ARMA-Filter sind Kombinationen von AR - und MA-Filtern. Der Ausgang des Filters wird als a gegeben Lineare Kombination sowohl der gewichteten Input - als auch der gewichteten Output-Samples. ARMA-Prozesse können als digitales IIR-Filter betrachtet werden, wobei sowohl Pole als auch Nullen. AR-Filter in vielen Fällen bevorzugt sind, da sie mit den Yule-Walker-Gleichungen MA und ARMA analysiert werden können Prozesse hingegen können durch komplizierte nichtlineare Gleichungen analysiert werden, die schwer zu untersuchen und zu modellieren sind. Wenn wir einen AR-Prozess mit Tap-Weight-Koeffizienten haben, ist ein Vektor von a, an-1 eine Eingabe von xn und eine Ausgabe von yn Wir können die yule-walker-Gleichungen verwenden Wir sagen, dass x 2 die Varianz des Eingangssignals ist Wir behandeln das Eingangsdatensignal als zufälliges Signal, auch wenn es sich um ein deterministisches Signal handelt, weil wir nicht wissen, was der Wert sein wird Wir erhalten es Wir können die Yule-Walker-Gleichungen as. Where R ist die Kreuz-Korrelationsmatrix der Prozessausgabe. Und r ist die Autokorrelationsmatrix des Prozesses output. Variance Edit. We können das zeigen. Wir können die Eingabe ausdrücken Signalvarianz as. Or, expandieren und ersetzen für r 0 können wir die Ausgangsvarianz des Prozesses auf die Eingangsvarianz beziehen.
No comments:
Post a Comment