Richtige Bedienung der Arrays
Правила форума
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:
hide XXX forums
Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
In unserem Forum ist es möglich Foren zu verbergen. Für jede Sprache gibt es eine Gruppe:
hide XXX forums
Wenn du also ein Forum in einer Sprache nicht sehen möchtest, dann musst du einfach in die richtige Gruppe(n) eintreten. Das kannst du in den Profileinstellungen machen.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 10 янв 2009, 18:19
- Версия LabVIEW: ----
- Контактная информация:
Richtige Bedienung der Arrays
Hallo an alle Forummitglieder,
bin neu im Forum, als auch beim Nutzen und Bedienen des LabViews. Versuche im Moment in meinen Übungsstunden etwas zu forschen, um das LabView etwas näher kennenzulernen. Nun sitze ich schon seit einigen Tagen an einem Problem, kom einfach nicht weiter. Aus diesem Grund stelle ich diese Frage an die Profis von Euch.
Hab 4 Array-Felder mit der Größe 5x5 (2D Array). Diese werden im Anschluß in ein 10x10 Array zusammengefügt. Nun zu der Hauptaufgabe. In jedem Array und somit in jedem Feld befinden sich verschiedene Zahlen. Nun möchte ich ZUERST in jedem von diesen 4 5x5 Arrays nach einer bestimmten Zahl suchen. Ist die Zahl in irgend einem Feld vorhanden, so muss dieses 5x5 Array mit nur einer Zahl komplett ausgefüllt werden. Das Gleiche mit allen anderen 3 5x5 Arrays auch. Und nun alle diese 5x5 Arrays in ein großes Array 10x10 zusammenschließen.
Wie kann ich das regeln, bitte um Hilfe. Beispiel VIs sind auch willkommen.
Danke und Gruß
Konstantin
bin neu im Forum, als auch beim Nutzen und Bedienen des LabViews. Versuche im Moment in meinen Übungsstunden etwas zu forschen, um das LabView etwas näher kennenzulernen. Nun sitze ich schon seit einigen Tagen an einem Problem, kom einfach nicht weiter. Aus diesem Grund stelle ich diese Frage an die Profis von Euch.
Hab 4 Array-Felder mit der Größe 5x5 (2D Array). Diese werden im Anschluß in ein 10x10 Array zusammengefügt. Nun zu der Hauptaufgabe. In jedem Array und somit in jedem Feld befinden sich verschiedene Zahlen. Nun möchte ich ZUERST in jedem von diesen 4 5x5 Arrays nach einer bestimmten Zahl suchen. Ist die Zahl in irgend einem Feld vorhanden, so muss dieses 5x5 Array mit nur einer Zahl komplett ausgefüllt werden. Das Gleiche mit allen anderen 3 5x5 Arrays auch. Und nun alle diese 5x5 Arrays in ein großes Array 10x10 zusammenschließen.
Wie kann ich das regeln, bitte um Hilfe. Beispiel VIs sind auch willkommen.
Danke und Gruß
Konstantin
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Richtige Bedienung der Arrays
Also am besten machst du aus den 4 2D-Arrays ein 3D Array (mit Build Array).
Dann startest du eine For-Schleife und schliesst dort dein 3D-Array an.
In der For-Schleife machst du noch eine For-Schleife und innerhalb der inneren For-Schliefe nimmst du das Search 1D-Array VI und suchst damit also nach deiner bestimmten Zahl.
Wenn du soweit bist können wir überlegen wie du das Array mit einer Zahl füllen und ausgeben kannst.
Dann startest du eine For-Schleife und schliesst dort dein 3D-Array an.
In der For-Schleife machst du noch eine For-Schleife und innerhalb der inneren For-Schliefe nimmst du das Search 1D-Array VI und suchst damit also nach deiner bestimmten Zahl.
Wenn du soweit bist können wir überlegen wie du das Array mit einer Zahl füllen und ausgeben kannst.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 10 янв 2009, 18:19
- Версия LabVIEW: ----
- Контактная информация:
Re: Richtige Bedienung der Arrays
Danke eg, bin zum Teil fertig!!!
Hab wie folgt gemacht
1) 4 5x5 Arrays erstellt
2) diese einzeln in ein Case eingefügt, und das Case in eine For-Schleife mit 4 Durchläufen
3) suche dann in jedem Array mit einer doppelten Forschleife den gesuchten Wert. Wenn eine Übereinstimmung statt findet, so wird ein neu erstelltes Array (alles mit einer Zahl gefüllt) in das 10x10 Array auf die richtige Stelle geschrieben
Und es funzt. Nun kann ich aus diesen allen 4 Arrays die beliebige Zahl suchen und wie gewünscht im Gesammtenarray ausgeben.
Ist etwas komplizierter geworden, ist jedoch ok . Wenn ich ehrlich bin, so mag ich dynamische Systeme. Werde also demnächst an diesem Programm arbeiten, damit der User via Einstellungsmöglichkeiten die Arraygrößen und Anzahl der Arrays noch bestimmen kann, merke aber schon, dass es sein wird.
Werde mich in den nächsten Tagen melden, wenn ich weitere Probleme bekommen. Und soweit schönen Abend!!!
Gruß
Konstantin :ru: :de: :uk:
Hab wie folgt gemacht
1) 4 5x5 Arrays erstellt
2) diese einzeln in ein Case eingefügt, und das Case in eine For-Schleife mit 4 Durchläufen
3) suche dann in jedem Array mit einer doppelten Forschleife den gesuchten Wert. Wenn eine Übereinstimmung statt findet, so wird ein neu erstelltes Array (alles mit einer Zahl gefüllt) in das 10x10 Array auf die richtige Stelle geschrieben
Und es funzt. Nun kann ich aus diesen allen 4 Arrays die beliebige Zahl suchen und wie gewünscht im Gesammtenarray ausgeben.
Ist etwas komplizierter geworden, ist jedoch ok . Wenn ich ehrlich bin, so mag ich dynamische Systeme. Werde also demnächst an diesem Programm arbeiten, damit der User via Einstellungsmöglichkeiten die Arraygrößen und Anzahl der Arrays noch bestimmen kann, merke aber schon, dass es sein wird.
Werde mich in den nächsten Tagen melden, wenn ich weitere Probleme bekommen. Und soweit schönen Abend!!!
Gruß
Konstantin :ru: :de: :uk:
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Richtige Bedienung der Arrays
Ich vermute so wie du es gemacht hast, ist es gar nicht dynamisch. Es wird echt schwierig sein alles vom User einstellbar zu machen.kongaa писал(а): 2) diese einzeln in ein Case eingefügt, und das Case in eine For-Schleife mit 4 Durchläufen
Jaeg, ist das eigentlich dein Forum?
-
- beginner
- Сообщения: 17
- Зарегистрирован: 10 янв 2009, 18:19
- Версия LabVIEW: ----
- Контактная информация:
Re: Richtige Bedienung der Arrays
Hallo eg,
nagut, über die Dynamik werden wir später noch sprechen. Sicher ist zumindest jetzt schon, dass es schwer sein wird die Eingabe- und Ausgabefelder in der Frontpanel auch dynamisch zu halten. Ich habe das jetzt so geregelt, dass die Felder einfache Matrizen sind, die dann in Arrays umgewandelt werden. Sieht einfach von der Struktur besser aus, als wenn ich eine einfache Tabelle verwenden würde. Lasse mich aber natürlich dem Besseren belehren.
Gruß
Konstantin
nagut, über die Dynamik werden wir später noch sprechen. Sicher ist zumindest jetzt schon, dass es schwer sein wird die Eingabe- und Ausgabefelder in der Frontpanel auch dynamisch zu halten. Ich habe das jetzt so geregelt, dass die Felder einfache Matrizen sind, die dann in Arrays umgewandelt werden. Sieht einfach von der Struktur besser aus, als wenn ich eine einfache Tabelle verwenden würde. Lasse mich aber natürlich dem Besseren belehren.
Gruß
Konstantin
-
- beginner
- Сообщения: 17
- Зарегистрирован: 10 янв 2009, 18:19
- Версия LabVIEW: ----
- Контактная информация:
Re: Richtige Bedienung der Arrays
Hallo eg,
nun kommen meine nächsten Fragen. Bin jetzt etwas weiter gekommen, jedoch stört mich ein Problem, wo ich noch keine Lösung habe. In C, C++, Java usw. fast in jeder Sprache, kannst man in jeder und von jeder Schleife aus Variablen definieren oder halt gleich an die Ausgangsperipherie weiterleiten. Dabei spiel es keine Rolle, wie viele Schleifen man in einander geschachtelt hat. Nun zu meinem Problem. Ich habe einige Schleifen.
Case, in diesem Case eine for-Schleife, in dieser for-Schleife noch ein Case. Meine Ausgangsmatrix (die mir eine visuelle Ansicht gewährt), befindet sich außerhalb des äußeren Case-Fensters. Der ganze und entscheidende Ablauf findet aber im mittleren, als auch im äußeren Case-Fenster. Wie kann ich das so erstellen, dass meine Ausgangsmatrix bei jedem Schleifendurchlauf den Wert aktualisiert? Oder wie arbeite ich mir Variablen (Arrayfelder)?
Gruß
Konstantin
nun kommen meine nächsten Fragen. Bin jetzt etwas weiter gekommen, jedoch stört mich ein Problem, wo ich noch keine Lösung habe. In C, C++, Java usw. fast in jeder Sprache, kannst man in jeder und von jeder Schleife aus Variablen definieren oder halt gleich an die Ausgangsperipherie weiterleiten. Dabei spiel es keine Rolle, wie viele Schleifen man in einander geschachtelt hat. Nun zu meinem Problem. Ich habe einige Schleifen.
Case, in diesem Case eine for-Schleife, in dieser for-Schleife noch ein Case. Meine Ausgangsmatrix (die mir eine visuelle Ansicht gewährt), befindet sich außerhalb des äußeren Case-Fensters. Der ganze und entscheidende Ablauf findet aber im mittleren, als auch im äußeren Case-Fenster. Wie kann ich das so erstellen, dass meine Ausgangsmatrix bei jedem Schleifendurchlauf den Wert aktualisiert? Oder wie arbeite ich mir Variablen (Arrayfelder)?
Gruß
Konstantin
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Richtige Bedienung der Arrays
Kannst du ein Screenshot von deinem Block Diagramm machen? Ich tippe einfach auf deine Unerfahrenheit, es gibt aber bestimmt eine Lösung für dein Problem.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 10 янв 2009, 18:19
- Версия LabVIEW: ----
- Контактная информация:
Temp
Hi eg,
hier das versprochene Screenshoot. Wie Du siehst, geht von der außeren If Schleife und auch von der inneren Case Schleife Werte in das Replace Array Subnet.
Und hier kommen leider nicht alle Daten nach einander an.
Hast Du einen Tipp?
Gruß
Konstantin
hier das versprochene Screenshoot. Wie Du siehst, geht von der außeren If Schleife und auch von der inneren Case Schleife Werte in das Replace Array Subnet.
Und hier kommen leider nicht alle Daten nach einander an.
Hast Du einen Tipp?
Gruß
Konstantin
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Richtige Bedienung der Arrays
Das große Problem ist der Vergleich zweier Zahlen. In Arrays hast du Kommazahlen stehen und willst diese mit einer anderen Zahl vergleichen.
z.B. 5.7489247824242 ist ungleich 5.7489247824243 bei der letzten Nachkommastelle. Ausserdem werden die Zahlen von Programmiersprachen nicht 100% genau interpretiert, denn es gibt eine Grenze der Genauigkeit beim Repräsentieren einer Kommazahl. Erkundige dich z.B. über die Machinenkonstante-Epsilon.
Du musst also die Zahlen entweder Ganzzahlig vergleichen oder Min/Max Grenzen beim Vergleichen definieren. Dazu kannst du z.B. In Range and Coarse.VI nehmen.
z.B. 5.7489247824242 ist ungleich 5.7489247824243 bei der letzten Nachkommastelle. Ausserdem werden die Zahlen von Programmiersprachen nicht 100% genau interpretiert, denn es gibt eine Grenze der Genauigkeit beim Repräsentieren einer Kommazahl. Erkundige dich z.B. über die Machinenkonstante-Epsilon.
Du musst also die Zahlen entweder Ganzzahlig vergleichen oder Min/Max Grenzen beim Vergleichen definieren. Dazu kannst du z.B. In Range and Coarse.VI nehmen.
-
- beginner
- Сообщения: 17
- Зарегистрирован: 10 янв 2009, 18:19
- Версия LabVIEW: ----
- Контактная информация:
Re: Richtige Bedienung der Arrays
Das Problem liegt nicht in dem Vergleicher! Vergleicher bekommt ein Int und vergleicht dann mit einem Float. Float wird dann intern auch in Int umgewandelt, wenn nötig dann auch gerundet. Das ist aber wirklich nicht das Problem. Problem ist in diesen verschachtelten Schleifen. Von unten links geht ein Array Strang in die grüne If-Anweisung. Wenn FALSE rauskommt, so werden die Daten direkt in das Replace Array Subnet (orange Feld links) übertragen, wenn nicht, dann geht das weiter in die For-Schleife und dann in die Case-Anweisung. Hier haben wir gleich 3 Schleifen über einander stehen. Jetzt hat aber jede Case-Anweisung eine Funktion. Diese Daten sollen an das Replace Array Subnet bei jedem Schritt übertragen werden, wenn Case jeden Schritt macht. Werden aber nicht, da alle Schleifen nicht komplett beendet werden, sondern erst nach dem, die oberster Case-Anweisung abgelaufen ist.
Meine Frage ist: Z.B. habe ich in meinem Programm ein Replace Array Subnet, denn ich von jeder Stelle des Programm füttern möchte. Egal ob es in oder außerhalb einer Schleife gemacht wird. Gemeint ist auch, dass ich es von mehreren Stellen des Programms gleich speisen kann. Wichtig ist nur, dass wenn ich ein Wert schreibe, dann diese sofort auch an den Replace Array Subnet übergeben wird. Geht das über eine Variable, wie das z.B. bei Feldern der Fall ist? Weil das mit Rechtsklick und Create habe ich nichts Passendes gefunden.
Meine Frage ist: Z.B. habe ich in meinem Programm ein Replace Array Subnet, denn ich von jeder Stelle des Programm füttern möchte. Egal ob es in oder außerhalb einer Schleife gemacht wird. Gemeint ist auch, dass ich es von mehreren Stellen des Programms gleich speisen kann. Wichtig ist nur, dass wenn ich ein Wert schreibe, dann diese sofort auch an den Replace Array Subnet übergeben wird. Geht das über eine Variable, wie das z.B. bei Feldern der Fall ist? Weil das mit Rechtsklick und Create habe ich nichts Passendes gefunden.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Richtige Bedienung der Arrays
Also erstens siehe den roten Punkt am Vergleich->Umwandlung des Datentyps, d.h. Int wird auf Double umgewandelt und nicht umgekehrt.
Rest später, habe jetzt keine Zeit.
Rest später, habe jetzt keine Zeit.
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
Re: Richtige Bedienung der Arrays
Also ich hätte es nach meiner Vorstellung ungefähr so gemacht:
- Вложения
-
- Arrays.vi
- (20.65 КБ) 160 скачиваний