LabVIEWForum.de - Schieberegister Initialisierung mit Array => Not a Number

LabVIEWForum.de

Normale Version: Schieberegister Initialisierung mit Array => Not a Number
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich bekomme kontinuierlich Messwerte und möchte in einer Schleife die 0,5sec läuft einen Mittelwert ausrechnen
und dann immer aus dem alten Mittelwert und dem aktuellen Mittelwert einen neuen basteln.
Soweit hätte ich das zusammengeklickt und es funktioniert auch für sich im Test.

Doch wenn ich es in mein großes VI übertrage bekomme ich im Schieberegister der äußeren Schleife im durchgehend den eintrag Not a Number.

Hat jemand eine Idee warum es im Test funktioniert und wenn ich es in mein großes VI schreibe der Fehler auftaucht?

fg Roland
Vielleicht sind die Werte, die du in deine Mittelung reinschiebst, irgendwann mal NaN, hast du das schon überprüft?

Gruß, Jens
Oder du schiebst irgendwann einmal in deiner realen Umsetzung ein leeres Array in dein "inneres Schleifen VI", dann kommen nämlich auch NaNs raus.

Gruß, Jens
Hallo,

zum subVI:
- Warum beschränkst du es künstlich auf genau 7 Werte im Array?
- Das ständige Aufsummieren der Werte im "Schieberegister" führt bei längerer Anwendung zu Rechenproblemen (Stichwort: Genauigkeit bei Floatingpoint-Datentypen!)
- Es gibt Funktionen wie "+1"…
Hallo,
es kann sein, dass ich durch die Messdaten mal ein NaN ankommt...ich habe jetzt auch probiert das über
eine case-Struktur auszuschließen aber das hat so auch nicht funktioniert.

Mein Array ist 7 Werte breit und X Werte lang...da ich 7 verschiedene Sensorwerte einlese.
Und ich habe genau das ausprobiert:
(28.06.2017 14:28 )jg schrieb: [ -> ]Oder du schiebst irgendwann einmal in deiner realen Umsetzung ein leeres Array in dein "inneres Schleifen VI", dann kommen nämlich auch NaNs raus.
und das führt zu dem von dir monierten Effekt.

Zitat:es kann sein, dass ich durch die Messdaten mal ein NaN ankommt...ich habe jetzt auch probiert das über
eine case-Struktur auszuschließen aber das hat so auch nicht funktioniert.
Glas1 Ohne VI keine weitere Hilfe... Glas2

Gruß, Jens
Ich empfange meine Daten per Queue und habe das Problem jetzt so gelöst, dass ich
die Anzahl der Elemente in der Queue auslese und den Durchschnitt nur berechne wenn die Anzahl der Elemente ungleich 0 ist.
Funktioniert soweit wunderbar...
Wäre es nicht sinnvoller zu verhindern, dass leere Arrays in die Queue hinein geschrieben werden? Oder wertest du etwa nicht den timeout beim QueueRead aus?
(01.07.2017 16:17 )GerdW schrieb: [ -> ]Wäre es nicht sinnvoller zu verhindern, dass leere Arrays in die Queue hinein geschrieben werden? Oder wertest du etwa nicht den timeout beim QueueRead aus?

Prinzipiell gebe ich dir recht aber der Fall mit dem leeren Array tritt nur im ersten Zeitschritt auf und dann nicht mehr.
Also habe ich dadurch später eigentlich keine Probleme mehr.
Referenz-URLs