LabVIEWForum.de
Array bearbeiten - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Array bearbeiten (/Thread-Array-bearbeiten)

Seiten: 1 2


Array bearbeiten - Mr.Beaker - 03.07.2007 08:52

Mal kurz mein Verstöndnis von dem Programm:

While-Loop: Wenn die Anzahl der Indizes (Dimension) größer ist als die Anzahl der Durchläufe und zugleich die überprüfte zahl des Array kleiner ist als 2^14, dann fahre fort mit der Schleife.

Irgendwie bekomm ich jetzt schon langsam einen Knoten im Hirn Mellow

Case: Wenn die Anzahl der Indizes größer ist als die Anzahl der Durchläufe (hoffe das bedeutet i), dann hab ich den Fall "TRUE", das ursprüngliche Array wird an dieser Stelle Abgeschnitten und bekommt den Wert 16384 zugewiesen.

Stimmt das so weit? Dry

Gruß
Georg

PS: Bin natürlich auch froh um andere Meinungen und Anmerkungen!


Array bearbeiten - canix - 03.07.2007 09:46

Wenn ich es mir nicht selbst ausgedacht hätte, hätte ich beim Nachvollziehen müssen vermutlich auch einen Knoten im Hirn bekommen!

Frage 1.: Das zweite Symbol in deinem Case, was ist das denn und wo find ich das? (Oder gibts das erst ab V_8.x?
Antwort: Das Symbol findest Du auf der Palette Array und heißt "In Array einfügen". Läßt man den Index-Eingang offen, hängt er den neuen Wert ans Ende an.
Reihenfolge der Symbole in der Case-Struktur: 1. 1d-Array teilen, 2. In Array einfügen, 3. lokale Variable von Array (habe ich nur dazugenommen, um dem Array-Bedienelement das neue Array zu übergeben!)

Frage 2.: Du bekommst beim Eingang in deine While-Schleife einen einfachen Wert, den du mit 16384 in relation setzen kannst, bei mir bleibt das aber ein Array? Und demzufolge bekomm ich halt auch keine Verbindung von meinem "logischen und" zu "continue if true" Symbol. Was hast du denn da anders gemacht?
Antwort: In meinem Beispiel steht am Eingang der Whileschleife ein Array (genau wie in Deinem Fall) bei dem die Induzierung aktiviert(!) werden muß (rechtsklick auf den Eingang und entsprechende Option auswählen!). Die Werte des Arrays stehen dann am Eingang der Schleife einzeln zur Verfügung und werden nacheinander durch die Schleife geführt.

Frage 3.: Im "False"-Fall, verkabelst du da einfach durch?
Antwort: Du verkabelst einfach durch! Der False-Case tritt ein, wenn der Schleifenzähler größer ist als die Größe des Arrays und folglich im gesamten Array kein Wert existiert, der größer als 2^14 ist. Das Array muß also nicht verändert werden!

Nochmal zusammengefaßt:
Die While-Schleife steht auf "Bei TRUE fortfahren.

Sie fährt also fort, wenn..
1. ..Arraygröße > aktueller Schleifenzähler = TRUE (bricht also ab, wenn das Array einmal komplett durchlaufen wurde)
UND 2. ..aktueller Arraywert < 2^14 = TRUE (bricht also ab, wenn ein Wert gefunden wurde, der größer oder gleich 2^14 ist)

Ein FALSE-Flag der 1. Bedingung bedeutet, daß das Array nicht verändert werden muß, weil kein Wert im gesamten Array > 2^14.

Hoffe, daß es Dir weiterhilft. Im großen und ganzen hast Du es aber wohl schon richtig verstanden!

Gruß
Jens


Array bearbeiten - Mr.Beaker - 03.07.2007 10:10

Hervorragend, danke!

Frage1: Hab ich jetzt, dank deiner Hilfe, gefunden. zuvor hab ich das Problem aber schon anders gelöst und zwar mit "Build Array". (Ich häng nat. meine lösung dann noch mit an)

Frage 2: Hab ich durch ausprobiern dann auch rausgefunden (schön langsam gehts mit LabVIEW, aber betonung liegt auf langsam) Dry

Hier noch meion Lösung (Was nat. 99% deiner Lösung entspricht!)

Gruß
Georg


Array bearbeiten - Y-P - 03.07.2007 10:10

Hab' Dir auch was gebastelt.

Gruß Markus


Array bearbeiten - canix - 03.07.2007 10:43

' schrieb:Hab' Dir auch was gebastelt.

Gruß Markus

Markus Lösung ist wohl etwas eleganter/platzsparender!

Da du diese Schleife mehrmals verwendest, würde ich vorschlagen ein SubVi daraus zu machen mit je einem Eingang/Ausgang (für das Array)! Wenn ich mich nicht täusche, müßte allerdings in den Eigenschaften des SubVis unter "Ausführung" ein Haken bei "Ablaufinvariante Ausführung"

Gruß
Jens


Array bearbeiten - Lucki - 03.07.2007 10:46

Also ich muß hier dringend eingreifen, denn ihr alle habt übersehen, daß es für genau diese Aufgabe das quasi maßgeschneiderte VI "Schwellwert" gibt.
Eingänge diese VI:
1.)Array mit aufsteigenden Werten
2.) Schwellwert.
Ausgang: Eine interpolierte Indexzahl, die dem Schwellwert entspricht.
Beispiel: Der Wert 14 des Arrays hat den Index 5, die Zahl 15 den Index 6. Der Schwellwert ist 14.6. Dann ist die Indexzahl 5.6.
Mit diesem VI ist das Problem im Handumdrehn gelöst (Aber sicherlich kann/muß noch an Feinheiten gefeilt werden)
[attachment=7250]


Array bearbeiten - canix - 03.07.2007 11:03

Optimaler Ansatz von Lucki!
Wieder was dazugelernt und meine Signatur bewahrheitet sich einmal mehrBlush