Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Liebes Labviewforum,
Ich hätte da mal wieder eine Frage:
Ich splitte ein 2D Datenstrom auf in mehrere 1D Datenströme, die ich dann wieder in einem Array zusammenfasse, damit ich sie in eine Datei schreiben kann.
Der optik wegen hab ich das Array noch transponiert, damit die Daten schön in Spalten angeordnet werden, anstatt alle wild in Zeilen zu schreiben, so dass man nichts mehr zuordnen kann.
jetzt möchte ich aber noch jedem Wert die Zeit zuordnen und gebe dazu mein Zeitsignal, das aus einzelnen Werten besteht in das Array. Dadurch wird aus dem 2D array wieder ein 1D array. Zum transponieren brauche ich aber ein 2d Array.
Hätte einer eine Lösung für mich?? Hauptsache Daten in Spalten und jedem Wert ist einem Zeitwert zugehörig.
Tausend Dank
ich lad mal ein Bild dazu hoch. Das ganze Vi ist vielleicht zu verwirrend, da es nur um diese Stelle geht. Ich denke man kann alles daraus erkennen.
Wenn gewünscht kann ich das Vi aber gerne auch hochladen.
27.08.2010, 17:00 (Dieser Beitrag wurde zuletzt bearbeitet: 27.08.2010 17:02 von Lucki.)
Wie soll das auch gehen? Angenommen Du erfasst 4Kanäle * 100 Messwerte, dann hättest Du ein 2D Array mit 4 Zeilen und 100 Spalten. Jetzt sollen dem Array als erste Zeile noch die Zeiten hinzugefügt werden. In der Zeile müßten dann 100 Zeiten stehen. Du hast aber nicht 100, sondern nur einen einzigen Zeitwert, den du irgendwie in den 2D Array einspeisen möchtest. Wie soll das denn aussehen? Mache doch mal eine Texttabelle als Beispiel, wie man sich das vorzustellen hat.
Wie siehts denn aus, wenn du ein Array mit dem Zeitwert initialisierst, welche die gleiche größe hat, wie dein anderes Werte-Array. Und dann verbindest du diese beiden.
Zitat:Wie siehts denn aus, wenn du ein Array mit dem Zeitwert initialisierst, welche die gleiche größe hat, wie dein anderes Werte-Array. Und dann verbind
Das wert ich mal versuchen. Das hört sich gut an
Zitat:Wie soll das auch gehen? Angenommen Du erfasst 4Kanäle * 100 Messwerte, dann hättest Du ein 2D Array mit 4 Zeilen und 100 Spalten. Jetzt sollen dem Array als erste Zeile noch die Zeiten hinzugefügt werden. In der Zeile müßten dann 100 Zeiten stehen. Du hast aber nicht 100, sondern nur einen einzigen Zeitwert, den du irgendwie in den 2D Array einspeisen möchtest. Wie soll das denn aussehen? Mache doch mal eine Texttabelle als Beispiel, wie man sich das vorzustellen hat.
Ja das hab ich auch gemerkt. wenn ich die Zeit über ein Array einfüge gibt´s zum ersten Wert eine Zeit, der Rest ist dann 0. War ja klar. Ich hoffe auf eine alternative Idee wie Oskimos
Vielen Dank an eure Anregungen. Ich versuchs gleich mal
Zitat:Wie siehts denn aus, wenn du ein Array mit dem Zeitwert initialisierst, welche die gleiche größe hat, wie dein anderes Werte-Array. Und dann verbind
verdammt, hat sich gut angehört, aber in das "Zeitarray" wird nur der aktuelle Wert geschrieben. Also wenn ich nach 10 sekunden aufhöre mit 100 Samples channel, hab ich ein Array mit 1000 Zeitwerten erstellt, in dem an jeder Stelle 10 steht (bzw der zeitwert an dem ich das Vi gestoppt habe). Wundert mich, da die schleife in der die Zeit und die Daten zusammen erzeugt werden sich nach den 100 samples doch erneuern müsste. Also mindestens alle 100 Werte eine neue Zeit. (was ja auch mist wäre)
?????????? trotzdem Danke
so hab ich das versucht zu lösen. Vielleicht ist das ja komplett falsch
p.s. ich muss jetzt leider los. Aber wenn ihr noch eine Anregung habt werd ich das direkt morgen umsetzen.
Nochmals vielen Dank
Hm, ich glaub, du hattest mich falsch verstanden. ich meinte, du solltest ein Array von der Größe der anderen Arrays (Messwerte) erstellen. Also wahrscheinlich von der Größe 100. (100 Samples die du immer liest). Und diese dann zusammfügen. Was du jetzt gerade machst ist in jedem Schleifen durchlauf ein größeres Arrays initialisieren. Das liegt daran, dass deine Dimensionsgröße des "Array-Initialisieren"-VIs an der Schleifenvariable hängt.
Zu dem Aussehen deines Arrays: Es wird bei jedem Schleifendurchlauf initialisiert, das heißt es kann wird immer nur den aktuellen Zeit Wert beinhalten.
Zitat:Zu dem Aussehen deines Arrays: Es wird bei jedem Schleifendurchlauf initialisiert, das heißt es kann wird immer nur den aktuellen Zeit Wert beinhalten.
ja genau, dass ist mein Problem bei einem Schleifendurchlauf werden zB. 100 Samples / Kanal gelesen, aber nur ein Zeitwert. Also wird den hundert Werten ein Zeitwert zugeordnet.
ich hatte das auch so :
Zitat:ein Array von der Größe der anderen Arrays (Messwerte) erstellen
versucht. Nur vergessen zu posten.Das hat aber auch nicht funktioniert. Aus dem "Array" Grund.
Sobald innerhalb des Arrays nur ein Wert erzeugt wird ist das klarerweise kein Problem.
Ich frag mich nur, ob man die Zeitabtastung nicht noch feiner einstellen kann. Denn so könnte man das umgehen. Wenn ich tatsächlich zu jedem Wert die Zeit einlese. Also auch 100 mal pro Schleifendurrchlauf, würde das ja 1:1 passen. Aber das mit der Zeitanpassung hab ich noch nicht gesehen.
ich versuch mal Luckis Vorschlag umzusetzen.
Vielen Dank euch für die Hilfe
Gruß Nick
28.08.2010, 17:42 (Dieser Beitrag wurde zuletzt bearbeitet: 28.08.2010 17:43 von nick.)
mmm,
schade, ich komm nicht ganz mit den Datentypen hin, da ich durch das ganze Programm nur mit double arbeite müste ich einiges andern um auf DBL umzusatteln. Da mit der Zeit in der Datei sollte nur ein kleiner Zusatz werden. Der Rest ist fertig.
Aber wie es immer so ist, der "kleine" Rest bereiteteinem oft große Kopfschmerzen
Vielen Dank für deinen Vorschlag, so hab ich wieder was gelernt
Viel Grüße und weiterhin schönes Wochenende.
Gruß Nick