LabVIEWForum.de - Arrays zusammenfügen und darstellen

LabVIEWForum.de

Normale Version: Arrays zusammenfügen und darstellen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich habe folgendes Problem: Ich habe ein Messdatenarray , 13 signale mit jeweils 2000 Werten. Dieses array übergebe ich in ich in ein Schieberegister und in der nächsten Iteration möchte ich dann das neue Array mit wiederrum 2000 Werten mit dem alten Array kombinieren, so dass ich also 13 Signale mit jeweils 4000 Werten habe. Das Array soll danach auf einem Graphen dargestellt werden. Ist jetzt etwas vereinfacht beschrieben, genrell wird das Array untersucht und ein bestimmter Teil soll dann ausgegeben werden. Aber das ist erstmal nicht so wichtig. Das Problem ist, nutze ich den Baustein Array erstellen, dann macht er mir ein Array mit 26 Signalen und 2000 Werten, in array einfügen passiert das gleiche, aber kontinuirlich, heißt die Dimensionsgröße steigt bei jeder Iteration an. Irgendwie finde ich keinen Baustein, der die Zeilen der arrays aneinanderhängt.

Jemand ne Idee? Von den 13 Signalen wird natürlich nur ein Signal dargestellt.

Grüße Tobi


P.S., sorry, falls es das falsche Unterforum ist, hat ja nur teilweise mit der Signaldarstellung zu tun
Hi,

also prinzipiell kein Problem. Beide deiner Bausteine gehen eigentlich dafür.

Array erstellen mit der Funktion "Eingänge verknüpfen" (rechte Maustaste auf den Baustein) hängt die Zeilen aneinander. Willst du statt der Zeilen die Spalten aneinander hängen kannst du das Array ja vorher (und nachher) transponieren.
Mit der Funktion Array einfügen geht es auch. Diese Funktion bietet sich vorallem dann an, wenn du die neuen Daten an den Anfang stellen willst. Je nachdem ob du Zeilen oder Spalten anhängen willst musst du den richtigen Anschluss am Baustein verbinden. Willst du hierbei die neuen Daten am Ende anhängen empfiehlt es sich die alten Daten an den Anfang (Index 0) der neuen anzuhängen. So musst du nicht prüfen wie lange der alte Array ist. (Wenn du weißt, dass er 2000 lang ist, kannst du natürlich auch einfach Index = 2000 angeben)

Grüße
Hi Kvasir,

vielen Dank für die schnelle Hilfe. Irgendwie komisch, da ich eine solche Lösung, wie Du beschrieben hast probiert hatte. Ich werde morgen Deine Lösung nochmal probieren, muss ja doch irgendwo was anders gewesen sein. Vielen Dank schonmal für Deine Hilfe. Ich möchte, dass die alten Daten an den Anfang gestellt werden, die neuen Daten sollen angehängt werden. Im nächsten Durchlauf sollen Dann der zweite Datensatz an den Anfang gestellt werden und die neuen wiederrum angehängt, so dass cih immer die letzten zwei Durchläufe habe und diese weiter untersuchen kann.

Die ganze Sache wird noch recht kompliziert, da habe cih aber Idee. Ich möchte in einer For Schleife immer die letzen beiden Werte einer bestimmten Indexes subtrahzieren. Ist der Unterschied dann größer als, ich sage mal 30, dann soll er insgesamt 2000 Werte, also 1000 vor und hinter des entsprechenden Indexes auf einem Graphen darstellen. Könnte mir vorstellen, dass es das es da noch zu Problemen bei Überläufen kommen kann.

Es ist so: Ich habe einen Spannungseinbruch auf dem Signal, das möchte ich darstellen, den Einbruch, sowie die Rückkehr der Spannung. Ich habe da schon sehr viel probiert, meine Vorgänger konnten das Problem in Ihrer Diplomarbeit nicht lösen. Der Trigger und Gate Baustein versagt da in der Regel, warum weiß ich nciht. Das Programm ist sehr groß, so dass ich glaube, dass es da schon zu Laufzeitproblemen kommen kann, sprich der Sprung wird verpasst. Mal sehen, ob die so angestrebte Lösung klappt. Aber ich denke, wenn man 4000 Werte hat, eventuell 6000, dann muss es möglich sein die Stelle zu finden und die entsprechenden Werte auszugeben.

Gruß Tobi
Meld dich halt nochmal, wenn konkret ein Problem auftaucht.

Wenn du immer zwei Datensätze haben willst empfehle ich einen Ringspeicher.
Den Punkt mit der For Schleife und den Indexen habe ich nicht verstanden. Bzw. - wenn ich das richtig verstanden hast, brauchst du dann aber mehr als 2000 Werte abrufbar, da du ja für jeden Index 1000 davor und 1000 danach brauchst.
Willst du dauernd (also für alle Indexe, die du abfährst) 2000 Werte im Speicher halten und dann auch immer verschieben, dann wird das ganze wohl sehr rechenintensiv.

Grüße
Halli Hallo,

ich nochmal, also ich konnte jetzt soweit alles lösen und es funtkioniert auch schon recht gut. Es geht noch um Folgendes. Ich messe Wechselspannungen und habe irgendwo im array einen Spannungseinbruch. Ich möchte das Index finden, an dem der Einbruch bgeinnt. Dazu habe cih mir eine Schleife gebaut, die das Array durchsuchen soll. Da es Wechselspannungen sind, vergleiche ich immer zwei aufeinander folgende Messwerte und schaue dann, ob der Unterschied zwischen den Werten größer als x (im beispiel 30, war aber erstmal nur ein Versuch) ist. Wenn gefunden, soll er das Index ausgeben. Da happert es jetzt noch. Was genau macht denn der Baustein array initialisieren?

Grüße Tobi

Lv82_img
' schrieb:Was genau macht denn der Baustein array initialisieren?

Damit reservierst du Speicherplatz für ein Array! Es geht nämlich bedeutend schneller, in einem schon allokierten Array (einzelne) Elemente zu ersetzen, als ein Array mit "BuildArray" mit neuen Werten zu füttern d.h. ständig zu vergrößern. Dabei wird nämlich jedes Mal eine "Kopie + n Elemente" des alten Arrays in den Speicher gelegt (und nicht am bisherigen Array einfach was angehängt. Seit LV 8.6 kann man das auch mit der "In Place"-Struktur umgehen!)
Referenz-URLs