LabVIEWForum.de
Werte und Größe eines 2D-Array´s ändern - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Werte und Größe eines 2D-Array´s ändern (/Thread-Werte-und-Groesse-eines-2D-Array%C2%B4s-aendern)



Werte und Größe eines 2D-Array´s ändern - xrzr - 01.07.2014 13:10

Hallo,
ich hab folgendes Problem:

Ich habe ein LabView Programm wo ich Zufallszahlen erzeuge (0-0,9). Wenn jetzt der Wert durch addieren eines Offset (Eingabefeld "ZZ") größer 2 wird, werden in der Case Struktur die Werte in ein Array geschrieben und in einem XY-Graph ausgegeben. Wird der Wert kleiner 2 wird die aufzeichnung beendet.

Problem:
Ich möchte diesesn Ausschnitt in einem 3D-Graphen als breite Linie darstellen. Zur Funktion des 3D-Graphen habe ich erst mal Werte vorgegeben. Das funktioniert. Nun müsste ich in dem 2D-Array "Z-Matrix" die beiden Werte, die nebeneinander stehen ersetzten durch den entsprechenden Wert der ebenfalls in den XY-Graph auf die Y-Position geschrieben wird.

Ich habe trotz der Forum suche noch kein Ergebnis finden können, welches mir erklärt wo mein Fehelr im denken liegt.


Kleines Nebenproblem:
Warum funktioniert meine Min.Wert und Max.Wert anzeige nicht?


Vielen Dank.

Edit:
Ebenfalls müsste auch noch das 2D-Array der Y-Matrix in beiden Spalten die Werte des Zählers erhalten.


RE: Werte und Größe eines 2D-Array´s ändern - GerdW - 01.07.2014 13:36

Hallo xrzr,

Zitat:Warum funktioniert meine Min.Wert und Max.Wert anzeige nicht?
Weil in deinem Array keine Werte stehen!

Die Frage "Warum stehen keine Werte im Array?" könntest du mit Sonden sehr leicht beantworten!
Das Problem ist die hier falsche Verwendung der InsertIntoArray-Funktion! Fast immer lässt sich diese durch ein BuildArray sinnvoller ersetzen…
Du kannst eben in einem leeren Array nicht an Index 23 einen Wert einfügen!
Es ist auch keine gute Idee, ein Array, welches man in einem Schieberegister speichern will, vorher durch einen "Default if unwired"-Tunnel löschen zu lassen…

Zitat:Nun müsste ich in dem 2D-Array "Z-Matrix" die beiden Werte, die nebeneinander stehen ersetzten durch den entsprechenden Wert der ebenfalls in den XY-Graph auf die Y-Position geschrieben wird.
Warum machst du das dann nicht?


RE: Werte und Größe eines 2D-Array´s ändern - xrzr - 01.07.2014 13:46

So wie ich es habe, weis ich das es nicht funktioniert.
Wie kann ich den den Zufallswert, der bei True in die Schleife kommt, in die beiden Stellen der Z-Matrix setzten??


RE: Werte und Größe eines 2D-Array´s ändern - GerdW - 01.07.2014 13:59

Hallo xrzr,

entweder mittels ReplaceArraySubset, wenn das Array korrekt initialisiert wurde.
Oder mit InsertIntoArray, wenn das Array korrekt initialisiert wurde.
Oder mit BuildArray hinten anhängen…

Wenn man die Arbeitsweise einer Funktion erlernen will, sollte man sich ein kleines Test-VI dazu erstellen und einfach mal mit der Funktion herumspielen…

Ansonsten:
- THINK DATAFLOW! Du brauchst diese riesige Sequenzstruktur nicht…
- Deine FormulaNode zur Berechnung des Zählers "a" ließe sich durch eine Case-Struktur, ein FeedbackNode und eine Addition ersetzen…
- Gutgemeinter Rat: Wenn man Terminals im BD nicht als Symbol darstellen lässt, ist das Ergebnis (meiner Meinung nach) viel übersichtlicher…


RE: Werte und Größe eines 2D-Array´s ändern - xrzr - 03.07.2014 06:30

Habe mir Array ersetzten jetzt nochmal versucht. Scheinbar scheint es prinzipiell ja auch zu funktionieren, er setzt auch den WErt an di entsprechende Index stelle, aber sobald er den nächsten WErt bearbeitet, wird der vorheriege wieder zurück gesetzt.
Spricht, wenn man jetzt einfach Startet, sollte der die vorgegebenen 6er durch zufällige Zahlenn im 4er Bereich ersetzen.

Woran kann das liegen?


RE: Werte und Größe eines 2D-Array´s ändern - GerdW - 03.07.2014 07:55

Hallo xrzr,

du hast immer noch das Problem, dass du nicht-existierende Elemente in einem Array ersetzen willst!

Beobachte bitte deine "Durchlauf"-Anzeige und überlege, was das ReplaceArraySubset damit anfangen soll…

Im Anhang mal dein VI ohne offensichtliche RubeGoldbergs…


RE: Werte und Größe eines 2D-Array´s ändern - xrzr - 06.07.2014 18:01

Vielen Dank für die Hilfe und Änderung.
Habe mal etwas weiter programmiert.
Folgendes funktioniert noch nicht ganz:
Die Werte werden nicht im Array übernommen (Z-Matrix)
Und die Array größen werden nicht erweitert (Y-Matrix). Ich habe einen Schleifenzähler oben eingefügt, der immer um 1 inkremitiert sobald die Case Struktur einmal durchlaufen ist. Wenn jetzt mehr als z.B. meine vorgegeben 7.durchläufe die Schleife durchläuft müsste ja jedes Array um 1 erweitert werden. Spricht in der Z-Matrix eine neue Zeile mit einem neuen Zufallswert, das X-Array ebenfalls um 1 Zeile mit konstanten Wert und das Y-Array mit dem Schleifendurchlauf.


RE: Werte und Größe eines 2D-Array´s ändern - GerdW - 06.07.2014 18:09

Hallo xrzr,

Zitat:Wenn jetzt mehr als z.B. meine vorgegeben 7.durchläufe die Schleife durchläuft müsste ja jedes Array um 1 erweitert werden.
Wieso sollte das Array erweitert werden?

Baue dir doch mal dieses einfache Test-VI nach:
[attachment=50175]
Mit diesem TestVI probierst du mal, ein neues Element an einem nicht-existierenden Index einzufügen - und überlege dir, warum dann etwas herauskommt, was du anscheinend nicht erwartest!
Zur Erläuterung: wenn man das Snippet mit einem leeren Array startet, kann man nur an Index Null etwas einfügen. Versucht man an einem anderen Index etwas einzufügen, ignoriert LabVIEW dieses Vorhaben…

Noch einmal: Du kannst nicht neue Elemente an einem nicht-existierenden Index einfügen! Wenn du neue Werte zu einem Array hinzufügen willst, musst du BuildArray verwenden (oder dein Array schon vorher auf die gewünschte Größe bringen!).