Sunday 9 July 2017

Labview Moving Average Beispiel


Berechnen von Moving Average Dieses VI berechnet und zeigt den gleitenden Durchschnitt mit einer vorgewählten Nummer an. Zuerst initialisiert das VI zwei Schieberegister. Das obere Schieberegister wird mit einem Element initialisiert und fügt dann den vorherigen Wert kontinuierlich mit dem neuen Wert hinzu. Dieses Schieberegister hält die Summe der letzten x Messungen. Nach dem Teilen der Ergebnisse der Additionsfunktion mit dem vorgewählten Wert berechnet das VI den gleitenden Mittelwert. Das untere Schieberegister enthält ein Array mit der Dimension Average. Dieses Schieberegister hält alle Werte der Messung. Die Ersatzfunktion ersetzt den neuen Wert nach jeder Schleife. Dieses VI ist sehr effizient und schnell, weil es die ersetzen Element-Funktion innerhalb der while-Schleife verwendet, und es initialisiert das Array, bevor es in die Schleife eintritt. Dieses VI wurde in LabVIEW 6.1 erstellt. Bookmark amp ShareMoving Mittelwerte: Was sind sie unter den beliebtesten technischen Indikatoren, gleitende Durchschnitte werden verwendet, um die Richtung des aktuellen Trends zu messen. Jede Art von gleitendem Durchschnitt (üblicherweise in diesem Tutorial als MA geschrieben) ist ein mathematisches Ergebnis, das durch Mittelung einer Anzahl von vergangenen Datenpunkten berechnet wird. Einmal bestimmt, wird der daraus resultierende Durchschnitt dann auf ein Diagramm aufgetragen, um es den Händlern zu ermöglichen, geglättete Daten zu betrachten, anstatt sich auf die alltäglichen Preisschwankungen zu konzentrieren, die allen Finanzmärkten innewohnen. Die einfachste Form eines gleitenden Durchschnitts, die in geeigneter Weise als ein einfacher gleitender Durchschnitt (SMA) bekannt ist, wird berechnet, indem man das arithmetische Mittel eines gegebenen Satzes von Werten annimmt. Zum Beispiel, um einen grundlegenden 10-Tage gleitenden Durchschnitt zu berechnen, würden Sie die Schlusskurse aus den letzten 10 Tagen addieren und dann das Ergebnis mit 10 teilen. In Abbildung 1 ist die Summe der Preise für die letzten 10 Tage (110) Geteilt durch die Anzahl der Tage (10), um den 10-Tage-Durchschnitt zu erreichen. Wenn ein Händler einen 50-tägigen Durchschnitt anstatt sehen möchte, würde die gleiche Art von Berechnung gemacht werden, aber es würde die Preise in den letzten 50 Tagen enthalten. Der daraus resultierende Durchschnitt unter (11) berücksichtigt die letzten 10 Datenpunkte, um den Händlern eine Vorstellung davon zu vermitteln, wie ein Vermögenswert in Bezug auf die letzten 10 Tage festgesetzt wird. Vielleicht fragen Sie sich, warum technische Händler dieses Werkzeug einen gleitenden Durchschnitt nennen und nicht nur ein normales Mittel. Die Antwort ist, dass, wenn neue Werte verfügbar werden, die ältesten Datenpunkte aus dem Set gelöscht werden müssen und neue Datenpunkte kommen müssen, um sie zu ersetzen. Damit wird der Datensatz ständig auf neue Daten übertragen, sobald er verfügbar ist. Diese Berechnungsmethode stellt sicher, dass nur die aktuellen Informationen berücksichtigt werden. In Abbildung 2, sobald der neue Wert von 5 dem Satz hinzugefügt wird, bewegt sich der rote Kasten (der die letzten 10 Datenpunkte repräsentiert) nach rechts und der letzte Wert von 15 wird aus der Berechnung gelöscht. Weil der relativ kleine Wert von 5 den hohen Wert von 15 ersetzt, würden Sie erwarten, dass der Durchschnitt der Datensatzabnahme, was es tut, in diesem Fall von 11 bis 10 zu sehen. Was verschieben die Durchschnitte aussehen Einmal die Werte der MA wurden berechnet, sie werden auf ein Diagramm geplottet und dann verbunden, um eine gleitende durchschnittliche Linie zu erzeugen. Diese geschwungenen Linien sind auf den Charts der technischen Händler üblich, aber wie sie verwendet werden, kann drastisch variieren (mehr dazu später). Wie Sie in Abbildung 3 sehen können, ist es möglich, mehr als einen gleitenden Durchschnitt zu jedem Diagramm hinzuzufügen, indem Sie die Anzahl der in der Berechnung verwendeten Zeiträume anpassen. Diese geschwungenen Linien mögen anfangs ablenkend oder verwirrend erscheinen, aber sie werden sich daran gewöhnt, wie es die Zeit verläuft. Die rote Linie ist einfach der durchschnittliche Preis in den letzten 50 Tagen, während die blaue Linie der durchschnittliche Preis in den letzten 100 Tagen ist. Nun, da Sie verstehen, was ein gleitender Durchschnitt ist und wie es aussieht, führen Sie gut eine andere Art von gleitenden Durchschnitt ein und untersuchen, wie es sich von dem zuvor erwähnten einfachen gleitenden Durchschnitt unterscheidet. Der einfache gleitende Durchschnitt ist bei den Händlern sehr beliebt, aber wie alle technischen Indikatoren hat er seine Kritiker. Viele Einzelpersonen argumentieren, dass die Nützlichkeit des SMA begrenzt ist, weil jeder Punkt in der Datenreihe gleich gewichtet wird, unabhängig davon, wo er in der Sequenz auftritt. Kritiker argumentieren, dass die jüngsten Daten signifikanter sind als die älteren Daten und einen größeren Einfluss auf das Endergebnis haben sollten. Als Reaktion auf diese Kritik begannen die Händler, den jüngsten Daten mehr Gewicht zu verleihen, was seither zur Erfindung von verschiedenen Arten von neuen Durchschnittswerten geführt hat, wobei der populärste der exponentielle gleitende Durchschnitt (EMA) ist. (Für weitere Lesungen siehe Grundlagen der gewichteten gleitenden Mittelwerte und was ist der Unterschied zwischen einer SMA und einer EMA) Exponentieller bewegter Durchschnitt Der exponentielle gleitende Durchschnitt ist eine Art gleitender Durchschnitt, der den jüngsten Preisen mehr Gewicht verleiht, um es besser zu machen Zu neuen Informationen. Lernen der etwas komplizierten Gleichung für die Berechnung einer EMA kann für viele Händler unnötig sein, da fast alle Charting-Pakete die Berechnungen für Sie machen. Jedoch für Sie Mathe-Aussenseiter da draußen, hier ist die EMA-Gleichung: Wenn Sie die Formel verwenden, um den ersten Punkt der EMA zu berechnen, können Sie feststellen, dass es keinen Wert gibt, der als vorherige EMA verwendet werden kann. Dieses kleine Problem kann gelöst werden, indem man die Berechnung mit einem einfachen gleitenden Durchschnitt beginnt und mit der obigen Formel von dort weiter fortfährt. Wir haben Ihnen eine Beispielkalkulationstabelle zur Verfügung gestellt, die reale Beispiele enthält, wie man sowohl einen einfachen gleitenden Durchschnitt als auch einen exponentiellen gleitenden Durchschnitt berechnet. Der Unterschied zwischen EMA und SMA Nun, da Sie ein besseres Verständnis davon haben, wie die SMA und die EMA berechnet werden, können Sie sich einen Blick darauf werfen, wie sich diese Durchschnittswerte unterscheiden. Mit Blick auf die Berechnung der EMA, werden Sie feststellen, dass mehr Wert auf die jüngsten Datenpunkte gesetzt wird, so dass es eine Art von gewichteten Durchschnitt. In Abbildung 5 ist die Anzahl der in jedem Durchschnitt verwendeten Zeiträume identisch (15), aber die EMA reagiert schneller auf die sich ändernden Preise. Beachten Sie, wie die EMA einen höheren Wert hat, wenn der Preis steigt, und fällt schneller als die SMA, wenn der Preis sinkt. Diese Reaktionsfähigkeit ist der Hauptgrund, warum viele Händler es vorziehen, die EMA über die SMA zu nutzen. Was sind die verschiedenen Tage Mittleren Durchlauf-Durchschnitten sind ein völlig anpassbarer Indikator, was bedeutet, dass der Benutzer frei wählen kann, was Zeitrahmen sie beim Erstellen des Durchschnitts wollen. Die häufigsten Zeiträume, die bei gleitenden Durchschnitten verwendet werden, sind 15, 20, 30, 50, 100 und 200 Tage. Je kürzer die Zeitspanne ist, um den Durchschnitt zu schaffen, desto empfindlicher wird es Preisänderungen. Je länger die Zeitspanne, desto weniger empfindlich oder mehr geglättet wird, wird der Durchschnitt sein. Es gibt keinen richtigen Zeitrahmen, um bei der Einrichtung Ihrer gleitenden Durchschnitte zu verwenden. Der beste Weg, um herauszufinden, welche am besten für Sie arbeitet, ist, mit einer Reihe von verschiedenen Zeiträumen zu experimentieren, bis Sie eine finden, die zu Ihrer Strategie passt. Durchgehende Mittelwerte: Wie man ThemSimple Moving Average VI benutzt Wenn man gewöhnlich über einen Moving Average spricht, bedeutet das, dass Punkt N mit dem Durchschnitt von M Punkten, die den Punkt N betreffen, ersetzt wird. Angenommen, ich habe 100 Punkte, deren Werte 1, 2, 3. 100, Und ich möchte einen 5-Punkte-Moving Average machen. Das erste, was zu beachten ist, dass es einen gleitenden Durchschnitt des dritten Punktes ist der Durchschnitt von 1, 2, 3, 4, 5 3. Der Durchschnitt des vierten Punktes ist der Durchschnitt von 2, 3, 4, 5, 6 4. Das ist aber vielleicht ein zu einfaches Beispiel. Wie wäre es mit dem Mittelwert einer Schrittfunktion, 0 von 1 bis 10, dann 20 danach. Wieder die Punkte 1 und 2 auswerfen. Der Durchschnitt der Punkte 1-5 (um in Punkt 3 zu gehen) 0 (da alle Punkte 0 sind). Ähnlich mit Punkt 4, 5, 6,7 und 8. Jedoch ist Punkt 9 der Durchschnitt von 0, 0, 0, 0, 20 4. Wie wäre es mit Punkt 10 Nun, es sollte der Durchschnitt von 0, 0, 0 sein , 20, 20 8, aber hast du dich daran erinnert, nicht Punkt 9 Hmm zu überschreiben, scheint, dass wir zwei Kopien des Array (das ist im Allgemeinen teuer) zu halten. Es gibt mehrere Möglichkeiten, wie du es vermeiden kannst. Verstehst du wo das Problem im vorherigen Absatz auftaucht. Wenn nicht, versuchen Sie es mit Bleistift und Papier (oder versuchen Sie es in LabVIEW zu codieren). Sie geben Ihnen die Antwort, damit Sie überprüfen können - der gleitende Durchschnitt der Schrittfunktion ist -, -, 0, 0, 0, 0, 0, 0, 0, 4, 8, 12, 16, 20, 20 , 20. -, - (wo - sind die leeren Werte an den Enden des Arrays, die Punkte, die du nicht genügend Nachbarn hast). P. S. - es würde mich nicht überraschen, wenn es eine LabVIEW-Funktion gibt, die das für dich tut. Aber wenn du LabVIEW lernst und ein besseres Verständnis dafür haben möchtest, wie die Algorithmen du in die Arbeit steckst, schmerzt es niemals, es zu spielen und es selbst auszuprobieren. Sie können sogar eine Verbesserung (einige von uns haben so getan haben). Danke für die Sensibilisierung in Bezug auf die feineren Punkte der Moving Average Methode. Dies ist ein statistisches Werkzeug, das hilft zu sehen, was Sie sehen wollen, um die Distraktoren zu abstrahieren. Also die Methode ist verpflichtet, einige Defizite in einigen Situationen oder Kontext haben. Aber ich denke, es eignet sich perfekt für meine Art dof Datenprotokollierung - es ist ein Druck oder Temperatur oder Flow-Signal - und ich erwerbe bei so etwas wie 400 Samples sek und benutze dann eine gemittelte Einzelprobe. Und der Prozess ist ziemlich langsam, da mein Hauptcode bei nicht mehr als 20 Hz läuft. Also, wenn ich eine 5 Probe maving Durchschnitt, meine erste Probe kommt 5 x 50ms später, dann für alle 50ms bekomme ich eine gültige Probe. Grundsätzlich bin ich mehr auf Trends und nicht Punkt Werte. Darin gibt es wenig Sorgen um verpasste Samples oder Schurkenwerte. Natürlich würde ich es nicht wagen, das für eine Step-Funktion zu benutzen. Das wäre grausam Raghunathan LV2012 zur Automatisierung von Hydraulikprüfständen. Nachricht 4 von 15 (1.022 Aufrufe) Re: Simple Moving Average VI 03-30-2016 11:58 PM Es gibt mittlere ptbypt was das selbe tut. Sie können den Code überprüfen, wenn Sie wollen. Ein großer Fehler in Ihrem Code ist die Tatsache, dass Sie ständig wachsen und schrumpfen eine bestehende Array. Sie sollten versuchen, eine Lösung zu finden, die an Ort und Stelle auf einem festen Größenarray arbeitet. Mai-Beispiele wurden auf dem Forum im Laufe der Jahre veröffentlicht (siehe hee zum Beispiel). Der Mittel kümmert sich nicht, wenn die Elemente außer Betrieb sind, also kannst du einfach das älteste Element ersetzen, egal wo es sich befindet. Sie setzen auch das neue Element an den Anfang eines bestehenden Arrays vor, das ist immer viel teurer als das Ende zu beenden. Ihre Stichprobengröße kann sich nicht ändern, sobald das VI läuft. Ihr Schieberegister sollte mit einem leeren Array initialisiert werden, kein Array enthält bereits ein einzelnes Element, das Null ist. (Diese extra Null gibt falsche Mittelwerte) Ihr Code sollte in einem SubVI gemacht werden, damit es wiederverwendet werden kann (ähnlich der ptbypt Version). Dein VI kann niemals gestoppt werden, nur abgebrochen. Gute Optimierungstipps Der Punkt bei der Initialisierung mit Zero hat mich vermisst. Und ja der Benutzer sollte die Stichprobengröße nicht ändern, sobald er läuft. Schließlich werde ich ein SubVI und behandeln Dinge wie Stoppen etc .. Was zum Zeitpunkt der Vorbereitung als Anhängen der neuen Wert zu Array, vielleicht gibt es eine Performance-Strafe aber angesichts der Größe von meinem Array Ich bin mir sicher, dass die CPU kümmert sich nicht anwyay . Aber für mich muss es so sein, wie ich die endgültigen Daten zum Plotten eines Trends eines physikalischen Parameters verwende. Dank für Ihre Zeit. Raghunathan LV2012 zur Automatisierung von Hydraulikprüfständen. Danke für die Sensibilisierung in Bezug auf die feineren Punkte der Moving Average Methode. Dies ist ein statistisches Werkzeug, das hilft zu sehen, was Sie sehen wollen, um die Distraktoren zu abstrahieren. Also die Methode ist verpflichtet, einige Defizite in einigen Situationen oder Kontext haben. Aber ich denke, es eignet sich perfekt für meine Art dof Datenprotokollierung - es ist ein Druck oder Temperatur oder Flow-Signal - und ich erwerbe bei so etwas wie 400 Samples sek und benutze dann eine gemittelte Einzelprobe. Und der Prozess ist ziemlich langsam, da mein Hauptcode bei nicht mehr als 20 Hz läuft. Also, wenn ich eine 5 Probe maving Durchschnitt, meine erste Probe kommt 5 x 50ms später, dann für alle 50ms bekomme ich eine gültige Probe. Aha Also willst du keinen gleitenden Durchschnitt, sondern nur einen einfachen Durchschnitt. Das ist viel einfacher. Heres die Idee (die mit einem ProducerConsumer Design viel besser funktioniert) - Sagen Sie, dass Sie bei 400Hz abtasten, die Daten bei 400 Hz speichern (dh alle Daten auf Festplatte speichern), aber bei 20 Hz anzeigen wollen (weil Sie Trends sehen wollen, eine längere Zeitbasis usw.). Richten Sie Ihr AD-System ein, um 20 Samples mit 400 Hz zu sammeln (Sie können N Kanäle gleichzeitig sammeln, so dass Sie ein 2D-Array von Samples erhalten können. Wie Sie die Daten (bei 20 Hz) von der AD (so dass der Produzent) , Dezitiere es an den Consumer, der Verbraucher beginnt mit dem Schreiben der Daten auf die Festplatte (sollte nicht viel Zeit). Jetzt hast du ein 2D-Array - in einem For Loop, auf einer Kanal-für-Kanal-Basis, durchschnittlich die 20 Punkte. Jetzt haben Sie ein 1D-Array mit einem Averaged Point für jeden Channel, gehen Sie vor und zeichnen Sie es auf. Beachten Sie, dass dieses Schema (a) alle Daten verwendet, (b) Handles Mehrkanal-Daten mit aplomb (und wenn Sie sind Aus dem Mittleren Osten, wo sie wachsen, können Sie auch Ihre Daten mit einer saftigen Pflaume behandeln), und (c) können Sie sammeln Sie Ihre Daten aus dem AD-Gerät, speichern Sie Ihre Daten auf Festplatte halten alle Punkte und zeigen Sie Ihre Daten auf Der Bildschirm mit all Ihren Punkten, aber auch Mittelwert, um die visuelle Signal-to-Noise-Verhältnis zu verbessern, alle ohne Datenverlust (Ive genau das mit 24 Kanälen bei 1KHz getan, wobei die Daten auf einem fernen System aufgenommen und an den PC gesendet wurden Über TCPIP, also haben wir auch TCP-Verarbeitung in der Schleife). Willkommen in der aufregenden Welt der Datenerfassung und - verarbeitung mit LabVIEW. Vertrauen Sie mir, das ist ein wunderbares System für diese Art von Arbeit Basierend auf dem Feedback, das ich auf meine ursprüngliche VI Ich habe den Moving Average Code in ein SubVI verfeinert. Ich habe es dann benutzt, um eine simulierte 10Channel Daten zu bezahlen - nur um die Dinge einfach zu halten, stellte ich sicher, dass alle10 Kanäle identische Daten hatten. Man würde dann erwarten, dasselbe gleitende Durchschnitt für alle 10 Kanäle zu bekommen. Ich bin überrascht über die kleine Varianz, die ich zwischen den Kanälen bemerke - im Allgemeinen sind sie nahe, aber nicht genau. Und nur um den Prozess zu erklären, den ich versuche, habe ich auch ein XLS beigelegt. Woher kommt die Variation. Das unitialisierte Schieberegister im Sub VI. Raghunathan LV2012 zur Automatisierung von Hydraulikprüfständen. Nachricht 9 von 15 (925 Ansichten) Re: Simple Moving Average VI altenbach 04-01-2016 10:25 AM Dein Code macht noch keinen Sinn. Setzen Sie den SubVI ein Skalar zu einer Zeit an, Sie bekommen nicht, was Sie wollen, weil das Schieberegister nur die letzten N Skalare erinnert, egal welcher Kanal es ist. Dein Code ist immer noch sehr ineffizient und gewunden. (ZB warum bist du noch mit Insert in Array zu append (beide in der Mani nad in der Sub). (Sie könnten ein reenetrant subVI und eine parallele innerste FOR-Schleife verwenden, aber das scheint auch übermäßig kompliziert) Wenn Sie wollen, um zu tun Letztes Mittel auf jedem Kanal, das SubVI muss ein 2D-Array im SubVI behalten, das ist alles zuvor gemacht Nachricht 10 von 15 (909 Aufrufe)

No comments:

Post a Comment