LabVIEWForum.de - Array Funktionen - Verständnisproblem

LabVIEWForum.de

Normale Version: Array Funktionen - Verständnisproblem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Zusammen,

Mein erster Beitrag und Hallo ans Forum. Leider nichts hierzu nichts umfassendes gefunden, die LabView-Hilfe hilft mir bedingt weiter.

Ich versuche, 3 Werte, alle aufgenommen in einer Einzelmessung, nacheinander, je Messung darzustellen.
Bsp:

Druck Spannung Fehler
1 Wert
2 Wert
3 Wert
usw

Ich habe dies nun geschafft (nach Suchen von Beispielen), aber weiß nicht so recht wie. Die Array-Funktion Umformen bereitet mir Verständnisprobleme, genauer gesagt, die "Dimension"-Anschlüsse der Funktion und wie die vorhergehenden "Dividieren" und "Array Größe" hier reinspielen. Wenn ich das nicht mache, wird ja immer das gesamte Array zeilen- oder spaltenweise angehängt.
Bild im Anhang. Array wird indiziert, die 3 Werte erstellt und an "Umformen" weitergegeben.

Habe schon viel gespielt, aber hier steh ich aufm Schlauch.

Kann mir hier jemand helfen, den Knoten zu lösen?

Danke vorab!
Hallo Patrick,

Zitat:Kann mir hier jemand helfen, den Knoten zu lösen?
Ein etwas größerer Ausschnitt wäre schon mal schön gewesen…

Du baust aus einem 1D-Array mittels BuildArray ein einzeiliges 2D-Array. Dieses willst du dann wiederum in ein 3-spaltiges 2D-Array umformen.

Fragen:
- Wieso formst du nicht gleich das 1D-Array in ein 3-spaltiges 2D-Array um und lässt den Zwischnschritt weg?
- Warum überhaupt so viel Aufwand? Warum baust du nicht gleich ein passendes 2D-Array? (Hier wäre jetzt der größere Ausschnitt aka "Überblick" gefragt!)
(04.09.2014 14:47 )GerdW schrieb: [ -> ]Hallo Patrick,

Zitat:Kann mir hier jemand helfen, den Knoten zu lösen?
Ein etwas größerer Ausschnitt wäre schon mal schön gewesen…

Du baust aus einem 1D-Array mittels BuildArray ein einzeiliges 2D-Array. Dieses willst du dann wiederum in ein 3-spaltiges 2D-Array umformen.

Fragen:
- Wieso formst du nicht gleich das 1D-Array in ein 3-spaltiges 2D-Array um und lässt den Zwischnschritt weg?
- Warum überhaupt so viel Aufwand? Warum baust du nicht gleich ein passendes 2D-Array? (Hier wäre jetzt der größere Ausschnitt aka "Überblick" gefragt!)


Hallo Gerd,

Danke für die schnelle Antwort.
Ich dachte mir das schon, deshalb anbei das Teil-VI. Es funktioniert, weshalb ich mir nach erst 2 Wochen intensivem LV Einstieg echt auf die Schulter klopfe. Messungen gehen, Kurven, alles passt.
Nur die Array-Sache ist mir nicht klar. Logisch, es geht, aber nicht wissen warum genau widerspricht meiner Auffassung von Lernen.

Wo liegt mein Fehler, bzw. eher der der Umstand:
Ich hab das 1D Array mit meinen 3 Werten, initialisiert. Dann mach ich ein 2D-Array draus. So, ohne die Umformung haut es mir bei jeder Messung wieder ein 3x3 Array in die Tabelle. Das scheinen die vorangegangenen Werte zu sein.

Randnotiz: Mir ist klar, dass ich das VI minimieren kann, z.B. die Schieberegister, die Build-Arrays. Deshalb nicht sehr übersichtlich. Bitte um Nachsicht bei der Interpretation.

Wie gesagt: Bei mir hakt es bei den Elementen Größe und Umformen bzw. was diese in dieser Kombi bewirken (offensichtlich das Passende, aber wie interpretiere ich hier die Dimensions-Anschlüsse?.

Zu den Fragen: Tja, wenn ich das wüsste, würde ich es bestimmt tun :-).

Dankeschön!
Hallo Patrick,

Zitat:Ich hab das 1D Array mit meinen 3 Werten, initialisiert. Dann mach ich ein 2D-Array draus. So, ohne die Umformung haut es mir bei jeder Messung wieder ein 3x3 Array in die Tabelle. Das scheinen die vorangegangenen Werte zu sein.
Es hapert noch etwas am THINK DATAFLOW - und dem Verständnis, Arrays zusammenzubauen… Big Grin

Schau dir das mal an:
[attachment=50654]

Probier mal, das in deinem VI nachzubauen…

Ansonsten schau mal hier, da hatte jemand ähnliche Verständnis-Probleme…
(04.09.2014 15:06 )GerdW schrieb: [ -> ]Hallo Patrick,

Zitat:Ich hab das 1D Array mit meinen 3 Werten, initialisiert. Dann mach ich ein 2D-Array draus. So, ohne die Umformung haut es mir bei jeder Messung wieder ein 3x3 Array in die Tabelle. Das scheinen die vorangegangenen Werte zu sein.
Es hapert noch etwas am THINK DATAFLOW - und dem Verständnis, Arrays zusammenzubauen… Big Grin

Schau dir das mal an:


Probier mal, das in deinem VI nachzubauen…

Ansonsten schau mal hier, da hatte jemand ähnliche Verständnis-Probleme…

Vielen Dank,

Das teste ich mal.
Prinzipiell ist es bei mir ja ähnlich, nur: Was ich an deinen Beispiel sehe (auch dem Hinweis mit dem Dataflow) ist, dass ich im Grunde das 1D-Array aus den 3 Werten noch gar nicht initialisieren muss, sondern dies erst später passiert. Und zwar mit dem erstellten 2D-Array.
Und deshalb haut's mir wohl auch gleich so viele Werte in die Tabelle.
Mach mich gleich an die Arbeit und gebe Rapport.

Danke!

Dennoch, kurz die Nachfrage: Was habe ich den mit den Umformen und Größe Funktionen angestellt (so dass es auch noch funktioniert)? Mir fehlt ein wenig Klartext, damit ich weiß, was passiert. Ich teste und lese schon seit Stunden.
Guten Morgen,

Also, vielen Dank für den gedanklichen Tritt, es hat gefruchtet.
Ich habe das 0-Array zur Initialisierung im Beispiel natürlich noch durch ein Initialize ersetzt. War auch interessant, zu beobachten, was hier der Unterschied ist, bzw. welche Daten wann geschrieben werden.

Wie gesagt, meine erste Variante, die kompliziertere, hab ich in einem Beispiel aufgeschnappt. Der Gedankengang dahinter ist für mich nicht ersichtlich.

Danke!
(05.09.2014 07:25 )PatrickK schrieb: [ -> ]Guten Morgen,

Also, vielen Dank für den gedanklichen Tritt, es hat gefruchtet.
Ich habe das 0-Array zur Initialisierung im Beispiel natürlich noch durch ein Initialize ersetzt. War auch interessant, zu beobachten, was hier der Unterschied ist, bzw. welche Daten wann geschrieben werden.

Wie gesagt, meine erste Variante, die kompliziertere, hab ich in einem Beispiel aufgeschnappt. Der Gedankengang dahinter ist für mich nicht ersichtlich.

Danke!

Will natürlich nicht vorenthalten, wie es nun ausschaut.
Geht bestimmt noch mehr, wobei die ganzen Schieberegister nun weg sind und ich meine, die ganze "Array-umformen-Seite" schaut gut aus. Mit den Funktionen "Umformen" usw. kam ich nicht klar. Vielleicht auch unnötig.
Hallo Patrick,

Zitat:Mit den Funktionen "Umformen" usw. kam ich nicht klar. Vielleicht auch unnötig.
Ja, die war hier unnötig…

Anmerkungen:
- Du verwendest "default if unwired"-Output-Tunnel bei deiner Event-Struktur. Das uss icht zwangsläufig schlecht sein, meist ist es aber besser, Messdaten etc. in jedem Case durchzuverdrahten…
- Diese FormulaNode ist etwas Overkill, alles was du hier brauchst ist eine Subtraktion und eine Multiplikation. Und vielleicht einen Kommentar zur Rechnung…
- Es gibt die CompoundArithmetik-Funktion zum Zusammenfassen gleichartiger Operationen. So kann man z.B. "a*b/c" mit einer Funktion erledigen…
- Der Compiler optimiert hier zwar auch ganz gut, aber man kann ihn ja unterstützen, indem man Operationen mit Konstanten selbst schon zusammenfasst (und einen Kommentar daneben schreibt), wie z.B. "a/10*4" zu "a*0.4" zusammenfasst…
- IndexArray zählt den Indexeingang selbst hoch, man muss also nicht "0", "1" und "2" anschließen, eine "0" reicht völlig aus…
- Das InitArray ist hier nett, erfüllt aber den selben Zweck wie die Konstante in meinem Bild oben. Der Compiler ersetzt sie sowieso durch eine Konstante. (Nett ist die kleine Schwester von ***. Big Grin)
(05.09.2014 08:53 )GerdW schrieb: [ -> ]Hallo Patrick,

Zitat:Mit den Funktionen "Umformen" usw. kam ich nicht klar. Vielleicht auch unnötig.
Ja, die war hier unnötig…

Anmerkungen:
- Du verwendest "default if unwired"-Output-Tunnel bei deiner Event-Struktur. Das uss icht zwangsläufig schlecht sein, meist ist es aber besser, Messdaten etc. in jedem Case durchzuverdrahten…
- Diese FormulaNode ist etwas Overkill, alles was du hier brauchst ist eine Subtraktion und eine Multiplikation. Und vielleicht einen Kommentar zur Rechnung…
- Es gibt die CompoundArithmetik-Funktion zum Zusammenfassen gleichartiger Operationen. So kann man z.B. "a*b/c" mit einer Funktion erledigen…
- Der Compiler optimiert hier zwar auch ganz gut, aber man kann ihn ja unterstützen, indem man Operationen mit Konstanten selbst schon zusammenfasst (und einen Kommentar daneben schreibt), wie z.B. "a/10*4" zu "a*0.4" zusammenfasst…
- IndexArray zählt den Indexeingang selbst hoch, man muss also nicht "0", "1" und "2" anschließen, eine "0" reicht völlig aus…
- Das InitArray ist hier nett, erfüllt aber den selben Zweck wie die Konstante in meinem Bild oben. Der Compiler ersetzt sie sowieso durch eine Konstante. (Nett ist die kleine Schwester von ***. Big Grin)

Hallo Gerd,

Danke für die Tipps!
Ja, der FormulaNode, der war mal größer:-)
Aber zum Init: Als ich einfach die Konstante hingesetzt habe, hab ich das Array beobachtet, und da wurde das erste Element (1,1) beim Start mit "0" beschrieben. Und der Counter war dann schon bei #1 bevor das Array erstellt wurde. Deshalb hab ich das Initialize hingesetzt.
Tja, das sind dann die Details, dass der Indexeingang selbst zählt:-).
Hallo Patrick,

Zitat:Tja, das sind dann die Details, dass der Indexeingang selbst zählt
Nein, falsch gedacht…
Der Index an einer Arraykonstante zählt nicht als Arrayelement (oder sonst wie)!

Zitat:Als ich einfach die Konstante hingesetzt habe
Ich glaube, du hast nicht "einfach" eine Konstante platziert…
Schau dir mein Bild oben genau an: das Element in der Arraykonstante ist ausgegraut. D.h. das Array hat dort kein gültiges Element, es ist also leer. Wenn du aber eine Arraykonstante erstellst und das Element editierst (anklicken, Wert eingeben), dann hat dieses Array ein gültiges Element und ist somit nicht mehr leer. Und wenn du an ein nicht-leeres Array etwas anhängst, steht da z.B. schon mal eine Null mit drin…

Einfache Lösung: Rechtklick auf die Arraykonstante -> Datenoperation -> Array leeren…
Seiten: 1 2
Referenz-URLs