Datenverarbeitung - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Datenverarbeitung (/Thread-Datenverarbeitung) Seiten: 1 2 |
Datenverarbeitung - Fliecha - 22.07.2010 10:02 Hallo liebes Forum, es ist lange her das ich das letzte Mal auf eure Unterstützung angewiesen war. Da das damals aber traumhaft funktioniert hat, versuche ich es einfach nochmal: Ich denke, dass mein Problem für die meisten von euch lächerlich ist. Folgender Sachverhalt: Ich habe ein Array aus 52 Zahlen. Also den Zahlen 0-52 ist jeweils ein Wert zugeordnet. Manche von diesen Werten sind Nuller. Was ich machen will ist, dass ich diese Werte sortieren will. Das heisst alle Werte nicht null in ein Array und alle Werte gleich null in ein anderes Array. Wollte das mit einem Vergleich =0? machen und einer Case Struktur. Irgendwie haut das aber nicht hin, keine Ahnung warum. Zusätzlich muss es doch irgendwie möglich sein, dass ich dann jeweils die Inidices im URSPRÜNGLICHEN Array angezeigt kriege. Also soll heissen: Bei welchem Index im 0 bis 52 Array liegen denn die Werte, die NICHT null sind. Ich hänge mal mein Programm dran, wobei da schon einiges anderes vorher gemacht wurde. Der entscheidende Teil ist logischerweise der letzte, wo ich bereits diese Case Struktur eingebaut habe. Ich sage schonmal vorträglich Danke, da ihr Checker bestimmt über die Einfachkeit lachen werdet. Bin mir etz auch net ganz sicher, wo im Forum diese Anfrage hingehört. Ich habe zwar auch Vision verwendet in dem VI, das geschilderte Problem hat aber eigentlich nicht direkt was mit Vision zu tun. Daher hoffe ich, dass ich hier richtig bin. Meine LV Version ist die 8.2 !!!!! Datenverarbeitung - kaiman - 22.07.2010 10:34 Hallo Fliecha, ich kann dein VI leider nicht öffnen(hab nur 7.1), aber ich hab mal ein bissel drüber nachgedacht... Ich würde das Array wie du schon gesagt hast auf =0 überprüfen und dann in einer Schleife alle Elemente auseinander sortieren. Ich habs mal zusammen gebaut. Ich hoffe das ist das was du brauchst. Du musst am Ende nur noch das 2D Array aufteilen. Gruß, Kai EDIT: Hab grad gesehen, dass du eigentlich den Index suchst... Dazu musst du einfach nur den Schleifenindex der inneren Schleife mit dem Build Array verbinden. Datenverarbeitung - GerdW - 22.07.2010 10:43 Hallo Fliecha, da du ja auch noch die ursrünglichen Indices deiner sortierten Werte wissen willst, hier noch ein Vorschlag: [attachment=28081] Ich bin beim Array splitten davon ausgegangen, dass du keine negativen Werte im Array hast... P.S.: "52 Zahlen" <> "Zahlen 0-52" Datenverarbeitung - kaiman - 22.07.2010 10:52 Hallo Gerd, sehr schöne Lösung!:dais:War mir bisher unbekannt, dass man Array of Cluster sortieren kann. Gut zu wissen! Wird immer nach dem ersten Cluster Element sortiert? Datenverarbeitung - GerdW - 22.07.2010 10:54 Hallo kaiman, es wird nach der Reihenfolge der Clusterelemente (Tabbing-Order) sortiert. Also nach dem ersten Cluster-Element - wenn die gleich sind, dann nach dem nächsten... Datenverarbeitung - Fliecha - 22.07.2010 12:17 Hi Gerd, Hi Kaiman, erstmal vielen Dank für die unfassbar schnelle Antwort. Besonders freut es mich, dass anscheind auch Kaiman noch was lernen konnte, hahahahaha! Hab jetzt mal die Version vom Gerd nachgebaut und siehe da, es funktioniert. Die Aufgabe für mich ist nun zu verstehen WARUM es funktioniert...! Das wird mich (mir) wahrscheins meinen Arbeitstag heute ko(s)ten...! Bin auf jeden Fall begeistert von der Hilfsbereitschaft...! Muchas Gracias Rob Datenverarbeitung - Lucki - 22.07.2010 13:09 Die Aufgabe läßt sich leicht in einer einzigen For-Schleife erledigen: [attachment=28097] [attachment=28096] Datenverarbeitung - Fliecha - 22.07.2010 14:00 oha, ein weiterer Vorschlag, wirklich fantastisch hier, dieses Forum...! Ursprünglich wollte ich es ja auch mit so einer "Case"-Struktur lösen. Da werde ich mich gleich mal ran machen das auch noch zu verstehen. Vielen, vielen Dank Grüße Rob Datenverarbeitung - Fliecha - 22.07.2010 14:14 Hi Lucki, Danke schonmal für deinen Vorschlag. Da hab ich etz aber doch noch ne Frage dazu: Mein Array geht in die Forschleife und wird unterteilt nach Elementen gleich null bzw. ungleich null. Was sind aber denn die beiden Anschlüsse an die Schieberegister? Bin mir da sehr unklar, wie dieses VI gemeint ist?! Im Endeffekt hast du da ja Eingaben angeschlossen oder nicht? Wäre ein feiner Zug, wennst mich da nochmal aufklären könntest. Sonnige Grüße aus dem Frankenland Rob Datenverarbeitung - Lucki - 22.07.2010 14:49 Zitat:Sonnige Grüße aus dem FrankenlandAlso in Dresden fängt es jetzt nach 38° Hitze gerade an zu regnen. Die linksseitigen Anschlüsse an den Schieberegister sind doch einfach Konstanten, bei denen es sich um leere Arrays handelt. Dies dient nur der Initialisierung. Ansonsten werden alle Array-Elemente in der Schleife abgegearbeitet. Wenn das Element null ist, wird der Index dieses Elementes als Arrayelement dem Schieberegister 1 hinzugefügt. Ist es ein Element ungleich Null, dann wird ein Cluster gebildet, betehend aus Index und Wert, und dieser Cluster wird als Array-Element dem Schieberegister 2 hinzugefügt. Ich bin davon ausgegangen, daß bei den Nullelementen der Index allein genügt, der Wert ist ja bekannt. Es ist also in dem Fall keine Clusterbildung mit den Elementen "Index" und "Wert" erforderlich - aber möglich wäre das natürlich. |