Tuesday, 5 September 2017

Moving Average C Scharf


Ist es möglich, einen gleitenden Durchschnitt in C ohne die Notwendigkeit für ein Fenster von Proben Ive gefunden, dass ich ein bisschen optimieren kann, indem Sie eine Fenstergröße, die eine Macht von zwei für Bit-Verschiebung statt zu teilen, aber nicht brauchen zu ermöglichen Ein Puffer wäre schön. Gibt es eine Möglichkeit, ein neues gleitendes Durchschnittsergebnis nur als Funktion des alten Ergebnisses und des neuen Beispiels auszudrücken, definieren Sie einen beispielhaften gleitenden Durchschnitt in einem Fenster von 4 Proben: Add new sample e: Ein gleitender Durchschnitt kann rekursiv implementiert werden , Aber für eine exakte Berechnung des gleitenden Durchschnitts müssen Sie sich an die älteste Eingangsabfrage in der Summe (dh die a in Ihrem Beispiel) erinnern. Für einen N-gleitenden Durchschnitt berechnen Sie: wobei yn das Ausgangssignal und xn das Eingangssignal ist. Gl. (1) können rekursiv geschrieben werden, also müssen Sie sich stets an die Stichprobe xn-N erinnern, um (2) zu berechnen. Wie von Conrad Turner angemerkt, können Sie stattdessen ein (unendlich langes) exponentielles Fenster verwenden, mit dem Sie die Ausgabe nur aus dem vergangenen Ausgang und dem aktuellen Eingang berechnen können. Dies ist jedoch kein normaler (ungewichteter) gleitender Durchschnitt, sondern ein exponentieller Wert Gewogenen gleitenden Durchschnitt, wo die Proben in der Vergangenheit ein geringeres Gewicht erhalten, aber (zumindest in der Theorie) man nie etwas vergessen (die Gewichte nur kleiner und kleiner für Proben weit in der Vergangenheit). Ich habe einen gleitenden Durchschnitt ohne einzelnen Element-Speicher für ein GPS-Tracking-Programm, das ich geschrieben habe. Ich beginne mit 1 Probe und dividiere durch 1, um die aktuelle Durchschn. Ich füge dann anothe Probe und dividiere durch 2 zu den aktuellen Durchschn. Das geht so lange weiter, bis ich auf die Länge des Durchschnitts komme. Jedes Mal danach, füge ich in der neuen Probe, erhalten Sie den Durchschnitt und entfernen Sie diesen Durchschnitt aus der Gesamtmenge. Ich bin kein Mathematiker, aber das schien ein guter Weg, es zu tun. Ich dachte, es würde den Magen eines echten Mathematik-Kerl, aber es stellt sich heraus, es ist eine der akzeptierten Möglichkeiten, es zu tun. Und es funktioniert gut. Denken Sie daran, dass je höher Ihre Länge, desto langsamer folgt es, was Sie folgen wollen. Das kann nicht die meiste Zeit, aber wenn folgende Satelliten, wenn Sie langsam sind, könnte die Spur weit von der tatsächlichen Position und es wird schlecht aussehen. Sie könnten eine Lücke zwischen dem Sat und den nachfolgenden Punkten haben. Ich wählte eine Länge von 15 aktualisiert 6 mal pro Minute, um eine ausreichende Glättung und nicht zu weit von der tatsächlichen Sat-Position mit den geglätteten Spur Punkte erhalten. Antwort # 2 am: November 16, um 23:03 Uhr Initialisierung insgesamt 0, count0 (jedes Mal, wenn ein neuer Wert dann ein Eingang (scanf), ein add totalnewValue, ein Inkrement (count), ein dividieren Durchschnitt (total / count) Dies wäre ein gleitender Durchschnitt Über alle Eingänge Um den Durchschnitt über nur die letzten 4 Eingänge zu berechnen, benötigen Sie 4 Inputvariablen, vielleicht kopieren Sie jeden Eingang zu einem älteren inputvariable und berechnen dann den neuen gleitenden Durchschnitt als Summe der 4 Inputvariablen, geteilt durch 4 (Rechtsverschiebung 2 würde Gut sein, wenn alle Eingänge waren positiv, um die durchschnittliche Berechnung zu beantworten 3. Februar um 4:06 Das wird tatsächlich berechnen den Gesamtdurchschnitt und nicht den gleitenden Durchschnitt. Zähler wird der Einfluss eines neuen Eingangsprobe wird verschwindend kleiner ndash Hilmar Ich habe eine 4000-Menge-Daten von Lager, und tring, um den gleitenden Durchschnitt für alle Datenwerte zu berechnen, aber da der gleitende Durchschnitt auf vorherigen Daten basiert und ich kann nicht berechnen, die 15 Tag SMA für die ersten 14 Tage, überspringen die ersten 14 Tage und berechnen die SMA auf den Rest der Daten. Und es ist zu LINQ verwenden, um zu erreichen. Kann jemand eine Probe geben oder Hinweis, wie man mit LINQ zu berechnen gleitenden Durchschnitt Die Ausgabe für die Durchschnittswerte sind alle um 500s Ich wirklich nicht verstehen, wie ist, dass möglich, dass hohe Wert zu bekommen. Moving averager mit Summen-Array: 06/07/2012 562,49 571,72 06/08/2012 565,84 580,32 06/11/2012 568,56 571,17 06/12/2012 570,56 572,16 06/14/2012 570,63 571,53 06 / 15/2012 571,21 574,13 18.06.2012 572,78 585,78 06/19/2012 573,79 587,41 06/20/2012 574,23 585,74 06/21/2012 574,22 577,67 06/22/2012 575,63 582.10 25.06.2012 576.06 570.77 06/26 / 2012 576.68 572.03 06/27/2012 576.88 574.50 06/28/2012 576.7 569.05 29.06.2012 576.95 584.00 07/02/2012 578.37 592.52 07/03/2012 579.92 599.41 07/03/2012 581.74 599.41 Herausgegeben von Leemx Freitag , November 16, 2012 2:59 AM Verschoben von Lisa Zhu Microsoft Kontingent Mitarbeiter Montag, 19. November 2012 07:38 linq related (Von: Visual C General) Freitag, 16. November 2012 um 2:42 Uhr So erstellen Sie einen gleitenden Durchschnitt , Würde ich mit dem Erstellen eines Bereichs von 0 bis (Länge der Datenliste - Länge der bewegten Periode), dann für jeden Wert in den Bereich wählen Elemente x bis x 43 Länge der bewegenden Periode und berechnen den Durchschnitt. Alle in einem schönen LINQ-Anweisung: Beachten Sie, dass dies nicht sehr effizient ist, da Sie im Grunde iterieren über die Datenliste für jeden Wert im Bereich .. Hey, Look Dieses System ermöglicht Signaturen von mehr als 60 cha Editiert von Arno Brouwer Freitag, November 23, 2012 4:42 PM Als Antwort markiert von Alexander Sun Friday, December 07, 2012 4:41 PM Alle Antworten Eine Probe Ihrer LINQ-Anweisung würde helfen. Ich möchte mit dem Erstellen eines Bereichs von 0 bis (Länge der Datenliste - Länge der bewegten Periode), dann für jeden Wert in den Bereich wählen Elemente x Bis x 43 Länge der Bewegungsperiode und berechnen den Durchschnitt. Alle in einem schönen LINQ-Anweisung: Beachten Sie, dass dies nicht sehr effizient ist, da Sie im Grunde iterieren über die Datenliste für jeden Wert im Bereich .. Hey, Look Dieses System ermöglicht Signaturen von mehr als 60 cha Editiert von Arno Brouwer Freitag, November 23, 2012 4:42 PM Als Antwort markiert von Alexander Sun Freitag, den 07. Dezember 2012 um 04:41 Uhr Microsoft führt eine Online-Umfrage durch, um Ihre Meinung über die Msdn-Website zu verstehen. Wenn Sie sich für eine Teilnahme entscheiden, wird Ihnen die Online-Umfrage präsentiert, wenn Sie die Msdn-Website verlassen. Möchten Sie teilnehmen Helfen Sie uns, MSDN zu verbessern. Besuchen Sie unsere UserVoice Seite, um auf Ideen Dev Centers Lernressourcen vorzulegen und abzustimmen

No comments:

Post a Comment