LabVIEWForum.de
Arrays - Selektieren - Mittlewerte - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Arrays - Selektieren - Mittlewerte (/Thread-Arrays-Selektieren-Mittlewerte)

Seiten: 1 2


Arrays - Selektieren - Mittlewerte - Excalibour - 12.05.2007 11:00

Ich bin mir nicht sicher, ob es zu Datenbanken gehört, aber ein Array ist ja eigentlich nichts anders als eine Art Datenbank, oder?

Jedenfalls habe ich 160 2D-Arrays, die in den "Spalten" meine Messdaten beinhalten. Jetzt möchte ich diese in bestimmten Zellen nach kritischen Werten durchsuchen, um sie anschließend zu gruppieren bzw. den Mittelwerte von Messdaten zu bilden. Ich habe jedoch nur die Funktion gesehen, dass 1D-Arrays durchsucht werden können. Ist das denn bei höherwertigen Arrays nicht mehr möglich? Mit Excel würde es so einfach gehen, jedoch langen mir die Möglichkeiten nicht aus.
Hat jemand eine Idee oder ist die Datenim Array vorliegen zu haben einfach die falsche Lösung?


Arrays - Selektieren - Mittlewerte - canix - 12.05.2007 13:10

' schrieb:Ich bin mir nicht sicher, ob es zu Datenbanken gehört, aber ein Array ist ja eigentlich nichts anders als eine Art Datenbank, oder?

Jedenfalls habe ich 160 2D-Arrays, die in den "Spalten" meine Messdaten beinhalten. Jetzt möchte ich diese in bestimmten Zellen nach kritischen Werten durchsuchen, um sie anschließend zu gruppieren bzw. den Mittelwerte von Messdaten zu bilden. Ich habe jedoch nur die Funktion gesehen, dass 1D-Arrays durchsucht werden können. Ist das denn bei höherwertigen Arrays nicht mehr möglich? Mit Excel würde es so einfach gehen, jedoch langen mir die Möglichkeiten nicht aus.
Hat jemand eine Idee oder ist die Datenim Array vorliegen zu haben einfach die falsche Lösung?

Hast Du 160 verschiedene 2D Arrays?
Wie kommen diese zustande?
Schreibst Du die Arrays zwischendurch auch in einen File?

Kannst Du mal einen Screenshot oder ein VI posten?

Ich könnte mir vorstellen, daß man vielleicht die 2D Arrays in 1D Arrays umwandelt, die Suchfunktionen benutzt und die gewonnenen Informationen auf das ursprüngliche 2D Array anwendet oder alles händisch, also mit entsprechenden for-Schleifen macht. Aber mir fehlen irgendwie noch ein paar Hintergrund-Infos.

Gruß
Jens


Arrays - Selektieren - Mittlewerte - Excalibour - 12.05.2007 13:52

Ich habe ein txt-file bekommen, und zerteile es jeweils nach 7200Zeilen. Dies Unterteilung ist nicht notwendig, jedoch sorgt es für Übersicht, da an dieser Stelle immer ein neues "Datenpaket" beginnt. Also prinzipiell kann das auch als eine Datei bleiben oder anderweitig ausgelesen werden.
Ich habe mir gedacht, die Daten paketweise zu speichen, aber das klappt noch nicht so ganz (siehe VI), aber da komme ich noch dahinter, wie ich das richtig hinbekomme.

Letztendlich ist das Ziel, die Messdaten in zwei Kategorien zu gruppieren (per Grenzwertüberschreitung in einzelnen Zellen) und anschließend die Daten paketweise zu mitteln, so dass Störeinflüsse reduziert und die Verlaufskurven geglättet werden.

Angehängt ist ein Ausschnitt meiner Messdaten (1. Zyklus) und das Programm. Hierbei weiß ich, dass die Schleife noch nicht nach der Anzahl aller Pakete beendet wird; aber das Programm ist auch noch nicht fertig...Smile
Danke für alle Hilfen!


Arrays - Selektieren - Mittlewerte - canix - 12.05.2007 14:23

' schrieb:Ich habe ein txt-file bekommen, und zerteile es jeweils nach 7200Zeilen. Dies Unterteilung ist nicht notwendig, jedoch sorgt es für Übersicht, da an dieser Stelle immer ein neues "Datenpaket" beginnt. Also prinzipiell kann das auch als eine Datei bleiben oder anderweitig ausgelesen werden.
Ich habe mir gedacht, die Daten paketweise zu speichen, aber das klappt noch nicht so ganz (siehe VI), aber da komme ich noch dahinter, wie ich das richtig hinbekomme.

Letztendlich ist das Ziel, die Messdaten in zwei Kategorien zu gruppieren (per Grenzwertüberschreitung in einzelnen Zellen) und anschließend die Daten paketweise zu mitteln, so dass Störeinflüsse reduziert und die Verlaufskurven geglättet werden.

Angehängt ist ein Ausschnitt meiner Messdaten (1. Zyklus) und das Programm. Hierbei weiß ich, dass die Schleife noch nicht nach der Anzahl aller Pakete beendet wird; aber das Programm ist auch noch nicht fertig...Smile
Danke für alle Hilfen!

Wenn ich das richtig deute, mißt Du 9 verschiedene Kanäle, wertest aber nur 5 aus, korrekt?
Welche Kanäle werden auf Grenzüberschreitung untersucht?
Soll nun für die Dauer einer Grenzüberschreitung der Mittelwert gebildet werden? Oder welche Abschnitte sollen gemittelt werden?

Wenn Du Dir den Screenshot anschaust, siehst Du, daß ich das Array einmal "gekippt" habe. Anschliessend läuft es durch eine For-Schleife, in der für jeden Kanal über die gesamte Zykluszeit gemittelt wird.
[attachment=6584]


Arrays - Selektieren - Mittlewerte - Excalibour - 12.05.2007 15:29

' schrieb:Wenn ich das richtig deute, mißt Du 9 verschiedene Kanäle, wertest aber nur 5 aus, korrekt?
Das ist richtig.

' schrieb:Welche Kanäle werden auf Grenzüberschreitung untersucht?
der Letzte, neunte Kanal.

' schrieb:Soll nun für die Dauer einer Grenzüberschreitung der Mittelwert gebildet werden? Oder welche Abschnitte sollen gemittelt werden?

Wenn Du Dir den Screenshot anschaust, siehst Du, daß ich das Array einmal "gekippt" habe. Anschliessend läuft es durch eine For-Schleife, in der für jeden Kanal über die gesamte Zykluszeit gemittelt wird.
[attachment=33193:Mittelwerte_bilden.JPG]

Nein, es sollen keine Abschnitte gemittelt werden. Es ist wie folgt:

Im txt file lag nur ein Zyklus vor. Ich habe hiervon aber 160. Ich mag nicht den Mittelweit eines Zyklus', sondern die Werte für 0,0; 0,1; 0,2 etc aus allen Zyklen separat gemittelt, sodass wieder eine Kurve entsteht, die jedoch keine Spitzen (die vielleicht durch Messungenauigkeit entstanden) mehr aufweist. Anbei ein exemplarisches Excel-Beispiel: Ich habe links drei Zyklen angelegt, auf der rechten Seite entstehen mittels einfacherer Excelfunktion die Mittelwerte, was dann ebenfalls als Graph ausgegeben werden kann.
Nochmal, damit wir uns nicht missverstehen: Was Du gemacht hast, war der Mittelwert über alle Werte EINES Zyklus'. Was ich machen möchte ist, dass zu jedem Zentelgrad (0,0; 0,1; 0,2...) die gemessenen Mittelwerte aus einigen der 160 Zyklen genommen werden; das Auswahlverfahren soll mittels einem gesetzten Grenzwert realisiert werden, das in bestimmten Zellen (nämlich denen des neunten Kanals.) nach Erfüllung dieser Bedingung sucht und gegebenenfalls feuert. Hierbei soll dann der gesamte Zyklus verwendet oder verworfen werden.
Hoffe es ist nicht zu konfus und verwirrend... Unsure


Arrays - Selektieren - Mittlewerte - canix - 12.05.2007 16:44

Habe verstanden. Jeder Zyklus umfaßt exakt 7200 Werte?
Momentan hast Du alle Zyklen in einem File, also 160*7200 Werte?


Arrays - Selektieren - Mittlewerte - jg - 12.05.2007 17:00

Hallo,

so ganz blicke ich bei deiner Fragestellung noch nicht durch.

Erst mal, was ich verstehe:

Du hast sozusagen 160 Messreihen (wir beachten jetzt mal nicht, ob die in einem File vorliegen oder nicht).
In jeder dieser Messreihen hast du 9 Spalten a 7200 Werte.

Soweit ich bisher verstehe, ist die 1. Spalte in deiner Graphdarstellung die x-Achse. Für mich folgt daraus, dass diese x-Werte in allen deinen Messreihen konstant ist. Korrekt?

Jetzt sprichst du davon, dass du gewisse Messreihen verwerfen willst, und zwar auf Grund von Werten in der 9.Spalte.
Hier müsstest du mal konkreter werden: Was sind die Bedingungen zum Verwerfen? Wird dann die gesamte Messreihe verworfen? Oder nur der Messwert zu diesem x-Wert?

Die Mittelwertbildung soll dann ja wohl erst erfolgen, wenn du entschieden hast, was verwertet werden soll, deshalb erhälst du hier erst einmal keine Antwort.

MfG, Jens


Arrays - Selektieren - Mittlewerte - canix - 12.05.2007 18:35

Also ich verstehe das folgendermassen:

Es gibt einen Logfile, der umfaßt 160 Zyklen a 7200 Messungen auf 9 Kanälen.

Falls Kanal 9 einen Grenzwert überschreitet (z.B. >7,9), wird die komplette Messung nicht brücksichtigt. Also meinetwegen ist Kanal 9 bei Messung 300 im ersten Zyklus >7,9 so wird Messung 300 des entsprechenden Zyklus nicht in die Mittelwertbildung miteinbezogen. Mittelwerte werden über die 160 Zyklen nur für die entsprechende Temperatur gebildet. Also meintewegen Zyklus X Messung 456 nur mit Zyklus Y Messung 456.. und entsprechen Kanal 5 nur mit Kanal 5.
Korrekt?

Mein Vorschlag wäre folgendes VI
[attachment=6586]

Wenn nicht dann nicht;-)

Gruß
Jens


Arrays - Selektieren - Mittlewerte - Excalibour - 13.05.2007 12:52

Also, Danke erstmal für Eure große Bereitschaft, mir zu helfen, ich hoffe, ich kann alle gestellten Fragen auf einmal beantworten:

@canix (17:44 Uhr):
Ja, jeder Zyklus umfasst 7200 Messwerte, diese befanden sich ursprünglich in einem File.
Da es aber 9 Kanäle sind (vgl. txt-file), von denen ich jedoch nur 5Kanäle zur Auswertung brauche, handelt es sich insgesamt um 5Kanäle x 80Zyklen x 7200 Messwerte

@Jens G
Du hast mich soweit richtig verstanden: Die erste Spalte entspricht den x-Werten und ist in jedem Zyklus (bei Dir: Messreihe) gleich.
Verworfen werden sollen bei Überschreitung eines Wertes in der neunten Spalte der gesamte Messzyklus/Messreihe (also alle 7200Zeilen). Der Schwellwert ist noch unbekannt und muss von mir ermittelt werden. Ich würde zum Testen mal 8.0 setzen.

@canix (19:35Uhr):
Nee, wie an Jens G geschrieben (3Zeilen weiter oben, oder so), solle die ganze Messreihe verworfen werden, wenn mindestens einer der Werte des Kanals 9 der Messreihe den Wert 8.0 überschreitet. Was richtig ist, ist, dass z.B. Zyklus 1, Zeile 345, Kanal 5 mit Zyklus 2, Zeile 345, Kanal 5 etc. gemittelt wird, falls eben die Werte der Bedingung standgehalten haben. Gern würde ich mir Dein Programm anschauen, leider kann ich es nicht öffnen. Liegt vielleicht daran, dass Du eine neuere Version als 7.1 verwendest?


Arrays - Selektieren - Mittlewerte - jg - 13.05.2007 15:14

Hallo,

ich will dir ja hier nicht auf einmal dein ganzes VI schreiben, hier also erst einmal ein Vorschlag für deine Suchfunktion, ob du eine Messreihe verwerfen willst oder nicht:
[attachment=6587]

MfG, Jens