Hallo,
seit ein paar Tagen ärgere ich mich mit der Mittelwertbildung rum, denn ich bin absoluter Neuling in LabVIEW. Im Forum dachte ich ein paar Seiten gefunden zu haben, aber entweder habe ich sie (noch) nicht verstanden oder das Nachbauen hat auch nichts gebracht.
Ich verstehe absolut nicht, warum meine Mittelwertbildung nicht funktioniert. Ich simuliere meine Werte und möchte von einer gewissen Anzahl jeweils einen Mittelwert haben. Die Anzahl soll einstellbar sein um sie mit dem anderen Graphen zu vergleichen.
Ich dachte ein Array zu nehmen wäre ganz gut und das in einer for-Schleife zu füllen. Das Array übergibt auch die Werte nach Beenden der Schleife (die kleine Glühbirne ist ja echt genial in LabVIEW) aber die Funktion "Array-Elemente-Addieren" nimmt sich nur den ersten Wert des Arrays.
Was ist da los?
Viele Grüße, Sammuel
Hallo Sammuel,
eine kleine Korrektur aus meiner Sicht.
Ja sehr schön, danke für die schnelle Antwort!
Jetzt wird der Mittelwert gebildet, aber er sieht negative Zahlen als positiv an, bildet also den falschen Mittelwert. Das ist für meine Versuche glaube ich nicht so schlimm, aber trotzdem würde ich gerne wissen warum das so ist. Wo kann ich das im Array einstellen?
Und wofür ist das Shift Register an den Seiten der for-Schleife gut? Oder ist das nur guter Programmierstil?
Gruß,
Sammuel
Ne, das ist falsch, da bildet sich leider nicht der Mittelwert.
Ich habe jetzt mal (echt hässlich) ein paar if-Abfragen in meine Schleife gebaut und lasse sie mir auch ausgeben, aber das ist nicht der Mittelwert. Über den Graphen habe drei kleine Felder eingebaut die jeweils den Wert anzeigen.
Warum funktioniert es nicht? Ich kann es mir einfach nicht erklären....
So, ich habs jetzt anders gelöst. Viel einfacher, jedenfalls wenn es nur um den Mittelwert geht. Für alle Anfänger wie mich sicherlich die einfachste Lösung, einfach die Werte aufeinander zu addieren in der for-Schleife mit dem Schieberegister (Shift-register) und dann durch die Anzahl der Schleifengänge zu teilen.
Für alle Anfänger:
- In der for-Schleife oben links wird eingestellt wie oft diese ausgeführt wird
- Die Null auf der linken Seite des Schieberegisters bedeutet dass die Zählung bei jedem Schleifenbeginn mit Null anfängt.
Trotzdem wüsste ich gerne warum die Version mit dem Array nicht funktioniert hat :-)
Gruß,
Sammuel
' schrieb:So, ich habs jetzt anders gelöst. Viel einfacher, jedenfalls wenn es nur um den Mittelwert geht. ...
Vorsicht! Aus dem simulierten Signal benutzt du in deinem Programm nur den letzten Wert.
Ich kann mir dein erstes Programm nicht anschauen, aber vielleicht hast du am Ausgang der Schleife das "Indexing" nicht eingeschaltet?
' schrieb:Vorsicht! Aus dem simulierten Signal benutzt du in deinem Programm nur den letzten Wert.
Hmm, aber es werden doch alle Werte aufaddiert und nach Beenden der Schleife übergeben? Als ich eben 3 Durchgänge eingestellt habe, hat es prima funktioniert.... oder täusche ich mich?
Ich bin für jede Hilfe dankbar, besonders weil ich überhaupt nicht weiß warum mein erstes Programm nicht lief
Viele Grüße,
Sammuel
Danke SeBa, aber was hat das denn mit meinem eigentlichen Problem zu tun? Und würde man das Array nicht auch in einer Schleife füllen? Ich glaube das array zu füllen ist nicht das Problem, nur das Übergeben des Arrays und die Summe draus klappt nicht.
Mein ursprüngliches Programm hat Andora schon soweit verbessert, dass alle Werte des Arrays übergeben werden, vielen Dank dir nochmal.
Aber gerade hat es aus den Werten -0,478, -1,18 und 0,67 den Mittelwert 0,06 gebildet. Überschlagen müsste er aber ca -0,3 sein. Die Summe aus dem Array funktioniert einfach nicht oder stimmt die Methode mit dem Schieberegister nicht?
Ratlose Grüße,
Sammuel
PS: Ich habe mal ein Bild angehängt, die Case-Abfragen dienen nur dazu mir die Werte bei i=1,2 und 3 zu zeigen.