Moving-Average Filter von Verkehrsdaten Dieses Beispiel zeigt, wie die Verkehrsflussdaten mit Hilfe eines gleitenden Durchschnittsfilters mit einem 4-Stunden-Schiebefenster geglättet werden. Die folgende Differenzgleichung beschreibt einen Filter, der die aktuelle Stunde und die drei vorhergehenden Datenstunden mittelt. Importieren Sie die Verkehrsdaten und ordnen Sie die erste Spalte der Fahrzeugzählungen dem Vektor x zu. Erstellen Sie die Filterkoeffizientenvektoren. Berechnen Sie den 4-Stunden-gleitenden Durchschnitt der Daten und zeichnen Sie die ursprünglichen Daten und die gefilterten Daten. MATLAB und Simulink sind eingetragene Warenzeichen von The MathWorks, Inc. Bitte lesen Sie mathworkstrademarks für eine Liste anderer Marken, die Eigentum von The MathWorks, Inc. sind. Andere Produkt - oder Markennamen sind Warenzeichen oder eingetragene Warenzeichen der jeweiligen Eigentümer. Wählen Sie Ihr Land aus Für einen anderen Ansatz können Sie das exponentielle gleitende Durchschnittsfenster abschneiden und dann Ihr gefiltertes Signal berechnen, indem Sie eine Faltung zwischen Ihrem Signal und der gefensterten Exponentialfunktion durchführen. Die Faltung kann mit Hilfe der freien CUDA-FFT-Bibliothek (cuFFT) berechnet werden, da, wie Sie vielleicht wissen, die Faltung als punktweise Multiplikation der beiden Signale in der Fourier-Domäne ausgedrückt werden kann (Dies ist der treffende Name Faltungstheorem, Die mit einer Komplexität von O (n log (n)) verläuft). Diese Art von Ansatz wird Ihre CUDA-Kernel-Code zu minimieren und laufen sehr sehr schnell, auch auf einer GeForce 570 Besonders wenn Sie alle Ihre Berechnungen in Single (float) Präzision zu tun. Ich würde vorschlagen, die oben genannten Differenz-Gleichung zu manipulieren, wie unten angegeben und dann mit CUDA Thrust primitives. DIFFERENCE GLEICHSTELLUNG MANIPULATION - EXPLIZIT FORM DER DIFFERENZGLEICHUNG Durch einfache Algebra können Sie folgendes finden: Dementsprechend ist die explizite Form die folgende: CUDA THRUST IMPLEMENTATION Sie können das obige explizite Formular durch die folgenden Schritte implementieren: Initialisieren einer Eingabesequenz dinput to Alpha mit Ausnahme von dinput0 1. Definiere einen Vektor d1overbetatothen gleich 1, 1beta, 1beta2, 1beta3. Multiplizieren Sie elementweise dinput durch d1overbetatothen Führen Sie eine inclusivescan, um die Sequenz der yn betan zu erhalten Teilen Sie die obige Sequenz durch 1, 1beta, 1beta2, 1beta3. Der obige Ansatz kann für Linear Time-Varying (LTV) - Systeme empfohlen werden. Für lineare zeitinvariante (LTI) Systeme kann der von Paul erwähnte FFT-Ansatz empfohlen werden. Ich bin ein Beispiel für diesen Ansatz durch die Verwendung von CUDA Thrust und cuFFT in meiner Antwort auf FIR-Filter in CUDA. What039s die Differenz zwischen gleitenden Durchschnitt und gewichteten gleitenden Durchschnitt Ein 5-Perioden gleitenden Durchschnitt, basierend auf den Preisen oben, würde mit dem berechnet werden Folgende Formel: Basierend auf der obigen Gleichung betrug der Durchschnittspreis der oben genannten Periode 90,66. Die Verwendung von gleitenden Durchschnitten ist eine wirksame Methode zur Beseitigung starker Preisschwankungen. Die Schlüsselbegrenzung besteht darin, dass Datenpunkte von älteren Daten nicht anders gewichtet werden als Datenpunkte nahe dem Anfang des Datensatzes. Hier kommen gewichtete gleitende Mittelwerte ins Spiel. Gewichtete Mittelwerte weisen eine höhere Gewichtung auf aktuellere Datenpunkte zu, da sie relevanter sind als Datenpunkte in der fernen Vergangenheit. Die Summe der Gewichtung sollte bis zu 1 (oder 100) addieren. Im Fall des einfachen gleitenden Durchschnitts sind die Gewichtungen gleichmäßig verteilt, weshalb sie in der obigen Tabelle nicht dargestellt sind. Schlusskurs der AAPL
No comments:
Post a Comment