LabVIEWForum.de
Array füllen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array füllen (/Thread-Array-fuellen--27989)



Array füllen - studmt - 23.07.2015 15:58

Hallo,
ich hätte mal wieder eine kleine Frage und zwar:

[attachment=53685]


Die Array Var. Rechteck enthält 6 oder 6*n (n = 1, 2, 3....) Elemente. Diese Elemente stellen Koordinaten dar, welche benötigt um alle Koordinaten einer Rechteckigen Linie zu berechnen.

Hat die Variable Rechteck nur 6 Elemente funktioniert alles wunderbar. Das Problem ist, dass es auch bei mehreren Elementen (6*n) so funktionieren soll, dass alle anderen Rechteckskoordinaten dem Array ganz rechts zu sehen hinzugefügt werden.

Zusammenfassend soll dieser Programmteil also die for-schleife ausführen und die berechneten Werte ins Array schreiben, und erst anschließend die for-schleife wieder ausführen um die Koordinaten eines weiteren Rechtecks dem Array anzuhängen.

Wäre cool wenn jemand einen Denkanstoß für mich hätte

Grüße


RE: Array füllen - GerdW - 23.07.2015 16:05

Hallo stud,

Zitat:Zusammenfassend soll dieser Programmteil also die for-schleife ausführen und die berechneten Werte ins Array schreiben, und erst anschließend die for-schleife wieder ausführen um die Koordinaten eines weiteren Rechtecks dem Array anzuhängen.
Wäre cool wenn jemand einen Denkanstoß für mich hätte
Warum machst du es nicht so, wie du es selbst zusammengefasst hast?

- Bitte Ctrl-U drücken, bevor du so ein Bild postest.
- Bitte nächste mal ein VI anhängen, Bild lassen sich mit LabVIEW so schlecht editieren…
- Generell: die ganzen Array-Operationen sehen schon sehr umständlich aus…
- Ein nichtinitialisiertes Schieberegister hat auch immer Nebenwirkungen…
- Es gibt eine Q&R-Funktion…


RE: Array füllen - studmt - 23.07.2015 16:15

[attachment=53686]

Ich kann meine eigene Zusammenfassung aber nicht ausführen da ich nicht genau weiß wie ich die forschleife daran hindern kann sich ein weiteres mal auszuführen bevor die Elemente im Array stehen.


RE: Array füllen - GerdW - 23.07.2015 17:50

Hallo stud,

da mir leider alle subVIs fehlen, habe ich mal eine "Prinzipskizze" erstellt:
[attachment=53687]
Die fehlenden subVIs in der Schleife habe ich durch einfache BuildArrays ersetzt…

- Es wird Q&R benutzt, wenn man Integerzahlen ohne Rest dividieren will
- die Case-Struktur ist sinnvoll gesetzt, wenn man zu kleine Inputarrays ausfiltern will
- es wird nur einmal IndexArray innerhalb der Schleife benutzt, es ist größenveränderlich
- deine RubeGoldberg-artige Indexberechnung habe ich aufgeräumt
- die vorhergehenden beiden Punkte könnte man unter Verwendung von ReshapeArray und Autoindizierung umgehen…
- ich verwende einen anderen Tunnelmodus, da du ja anscheinend Arrays erzeugen und aneinander anhängen willst…

Für's nächste Mal noch ein Tipp: wenn man ein fehlerhaftes VI anhängt, sollte man auch wenigstens einmal passende Eingangswerte und die dafür erwarteten Ergebnisse definieren…

Außerdem:
Dein VI strotzt vor RubeGoldbergs und fehlendem LabVIEW-Verstädnnis! Andauernd werden Indicators/Terminals mit dem Wert aus der eigenen lokalen Variable beschrieben!? Warum muss man einen Wert gleichzeitig in ein Terminal und die zugehörige lokale Variable schreiben? Warum überhaupt soviele lokale Variablen?
THINK DATAFLOW!


RE: Array füllen - jg - 23.07.2015 17:58

@Gerd:
Die fehlenden SubVIs findest du (wahrscheinlich) hier, aber dort noch nicht reentrant definiert...


RE: Array füllen - studmt - 23.07.2015 18:04

Sorry das war mein Fehler hier ist alles zusammen.

(23.07.2015 17:50 )GerdW schrieb:  Außerdem:
Dein VI strotzt vor RubeGoldbergs und fehlendem LabVIEW-Verstädnnis! Andauernd werden Indicators/Terminals mit dem Wert aus der eigenen lokalen Variable beschrieben!? Warum muss man einen Wert gleichzeitig in ein Terminal und die zugehörige lokale Variable schreiben? Warum überhaupt soviele lokale Variablen?
THINK DATAFLOW!


Wenn Terminals Anzeigeelemente sind dann nur, dass ich die Werte gleich überprüfen kann. Insgesamt werden nur 2 lokale Variablen benutzt die anderen sind nicht mehr unter Verwendung.

Möchte mir jemand da es mir schon mittlerweile zu oft gesagt wurde sagen was genau mit Think Dataflow gemeint ist?

Edit: Werde mal die Fehler ausbessern schonmal Danke für die Hilfe


RE: Array füllen - GerdW - 23.07.2015 18:05

Hallo stud,

nochmal klicker ich das jetzt alles nicht zusammen, das kannst du ja anhand des Bildes oben selbst machen!


RE: Array füllen - jg - 23.07.2015 18:26

(23.07.2015 18:04 )studmt schrieb:  Möchte mir jemand da es mir schon mittlerweile zu oft gesagt wurde sagen was genau mit Think Dataflow gemeint ist?
Schon den Link in Gerds Signatur gesehen?
Hauptsächlich geht es um Folgendes:
Die Abarbeitungsreihenfolge von Code im Blockdiagramm wird nicht durch die pure Anordnung von Elementen festgelegt. Das bedeutet, dass Code, den du ohne weitere Daten-Abhängigkeiten weiter rechts im Blockdiagramm anlegst, nicht nach dem Code weiter links im BD abgearbeitet wird, sondern parallel dazu. Außer du sorgst durch das Ziehen von "Drähten" und somit Datenfluss dafür, dass er in dieser Reihenfolge abgearbeitet wird.
Ein Bsp hierzu war der Hinweis mein Screenshot von gestern. Durch die flache Sequenz ich dafür, dass das Auslesen der lokalen Variablen erst NACH der Eventstruktur abgearbeitet wird, denn es gibt einen Ausgangs-Draht von der Eventstruktur zur Sequenz. Ohne das werden die lokalen Variablen schon mit den Werten vor möglichen Abänderungen innerhalb der Event-Struktur ausgelesen.
Merke: Eine ausgelesene lokale Variable ist immer eine Datenkopie.

Zu Rube-Goldberg: Es ist überflüssig, gleichzeitig Werte in ein Terminal und in die lokale Variable desselben Terminals zu schreiben...

Gruß, Jens