INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Array auf gleiche Zeilen durchsuchen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

25.10.2007, 16:14
Beitrag #1

shamu Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2007

2009 SP1
2003
DE

85649
Deutschland
Array auf gleiche Zeilen durchsuchen
Erstmal ein herzliches "Hallo" !

Ich stehe im Moment irgendwie auf der Leitung. Ich benutze LabVIEW zwar seit längerer Zeit immer mal wieder, aber mit Arrays habe ich leider (noch) keine tiefgreifenden Erfahrungen gemacht, auch die Suchfunktion hat mich auf keine zündende Idee gebracht.

Ich habe einen 2D-Array mit Byte-Werten (0-255) gefüllt und möchte diesen auf identische Zeilen durchsuchen und dann die erste gefunden Zeile behalten, die danach gefunden Zeilen löschen. Wenn LabVIEW dann eine gefunden hat und die verbleibenden Zeilen nach oben nachrücken, soll eine Zeile unter der letzen gefundenen Zeile weitergesucht werden, ohne die davor nochmals in die Suche einzubeziehen.Hmm

Später sollen dann auch ähnliche Zeilen gefunden, also z.B. wenn bei übereinstimmenden Spaltenpositionen das Byte um einen kleinen Wert X abweicht, aber das ist erstmal Zukunft...

Arrays nach einzelnen Werten duchsuchen ist kein Problem, aber wie kann ich ganze Zeilen vergleichen?

Vielen Dank im Voraus.

Viele Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
25.10.2007, 16:27 (Dieser Beitrag wurde zuletzt bearbeitet: 25.10.2007 16:30 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
Array auf gleiche Zeilen durchsuchen
Die Vergleichs-Operationen (=,>,<,...) können in LV auch auf Arrays angewendet werden. Dabei kann man einstellen (per Rechter-Mausklick auf Operator), ob ein elementweiser Vergleich (->Ausgang ist ein Boolean-Array) oder ein Komplett-Vergleich (Ausgang ist eine Boolean) vorgenommen werden soll.

Ich würde grob folgendes vorschlagen:

Erste Zeile aus 2D-Array nehmen, dann Rest des Arrays von "hinten nach vorne (also hier bis zur 2. Zeile)" in For-Schleife durchsuchen, dabei bei Bedarf Zeilen löschen (Delete from Array), Array wird hierbei per Shift-Register von einem Durchlauf zum nächsten weitergegeben.
Dann dasselbe mit den weiteren Zeilen iterativ, bis du durch alle Zeilen durch bist.

MfG, Jens

EDIT: Eindimensional hatten wir sowas ähnliches erst diese Woche: http://www.LabVIEWforum.de/index.php?showtopic=7466

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.10.2007, 19:06 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2007 21:26 von jg.)
Beitrag #3

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Array auf gleiche Zeilen durchsuchen
Das ist ja direkt mal ein interessantes Problem. Z.B ginge es so (verstehen mußt Du es selber)
   

(VI LV 8.2)


Angehängte Datei(en)
Sonstige .vi  Zeilen_L_schen.vi (Größe: 13,82 KB / Downloads: 490)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.10.2007, 10:26
Beitrag #4

shamu Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2007

2009 SP1
2003
DE

85649
Deutschland
Array auf gleiche Zeilen durchsuchen
Hallo,

erstmal tausend Dank für Eure schnelle und vor allem aufschlussreiche Hilfe! Das ist ja der Wahnsinn !!!

@Jens G: Dass man Vergleichsoperatoren auch auf Arrays anwenden kann... das hätte ich im Leben nicht probiert!

@Lucki: Diese minimalistischen Schleifen funktionieren absolut einwandfrei. Auf ein so kompakte Lösung wäre ich glaube ich in den nächsten 10 Jahren nicht gekommen! Absolut spitze!

Jetzt, da das einfache Modell so gut funktioniert, werde ich mal versuchen, das ganze etwas auszuweiten. Ich hoffe mal, ich schaffe es, Lucki's Lösung dahingehend umzubauen, dass ich auf der linken Seite zwei Arrays gleicher Größe habe, bei denen ich aus dem einen immer eine Zeile nehme und dann mit den Zeilen des anderen Arrays vergleiche. Das Ergebnis soll der komplette 1. Array und angehängt das, was vom zweiten Array übrigbleibt, sein. Also sozusagen ein hoffentlich etwas größerer Array als Resultat.

Also nochmal vielen Dank für Eure Hilfe, ich werde mich jetzt mal ans Tüfteln machen... wenn ich eine Lösung gefunden habe, werde ich sofort berichten.

Vielen Grüße shamu
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.10.2007, 20:57 (Dieser Beitrag wurde zuletzt bearbeitet: 03.12.2007 21:26 von jg.)
Beitrag #5

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Array auf gleiche Zeilen durchsuchen
Es geht sogar noch etwas minimalistischer, wenn man den Vergleichsoperator "Leeres Array" zum Schleifenabbruch verwendet.
Man kann auch den Vorschlag von Jens bzw. des Links aufgreifen und die mehrfachen Zeilen aus dem vorhandenen Array sukzessive herauslöschen. Das ist vielleicht noch etwas schneller. Im unten stehenden Bespiel durchsuche ich ganz normal mit aufsteigenden Index. Der Index aller Zeilen mit höherem Index rutscht beim Herauslöschen um einen Wert nach unten. Dem trage ich Rechnung, indem der Suchindex in einem solchen Fall nicht inkrementiert wird.
   

(VI LV 8.2)


Angehängte Datei(en)
Sonstige .vi  Zeilen_Loeschen1.vi (Größe: 12,7 KB / Downloads: 363)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.10.2007, 19:09
Beitrag #6

shamu Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Oct 2007

2009 SP1
2003
DE

85649
Deutschland
Array auf gleiche Zeilen durchsuchen
Hallo Lucki,

also ich muss schon sagen, Du bist ein Virtuose im Umgang mit Arrays!!! Top2Guru2

Jetzt wollte ich Deine letzte Lösung mal etwas erweitern. Die Suche soll identisch bleiben, aber wenn eine identische Zeile gefunden wird, soll alles zwischen den beiden Zeilen (inklusive der 2. gleiche Zeile) gelöscht werden. Also z.B. greife ich mir Zeile 3 und durchsuchen den weiteren Array, finde jetzt in Zeile 7 eine identische Zeile, soll am Ende nur noch Zeile 1 bis 3 übrig bleiben und Zeile 8 - x an die 4. Stelle rücken.

Das kann doch nur eine kleine Änderung sein... :pccrash:Ich glaube ich denke zu kompliziert...

Tüftelnde Grüße und noch mal vielen Dank für die Klasse Hilfe!!!
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.10.2007, 23:29 (Dieser Beitrag wurde zuletzt bearbeitet: 31.10.2007 06:55 von Lucki.)
Beitrag #7

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Array auf gleiche Zeilen durchsuchen
' schrieb:Jetzt wollte ich Deine letzte Lösung mal etwas erweitern. Die Suche soll identisch bleiben, aber wenn eine identische Zeile gefunden wird, soll alles zwischen den beiden Zeilen (inklusive der 2. gleiche Zeile) gelöscht werden. Also z.B. greife ich mir Zeile 3 und durchsuchen den weiteren Array, finde jetzt in Zeile 7 eine identische Zeile, soll am Ende nur noch Zeile 1 bis 3 übrig bleiben und Zeile 8 - x an die 4. Stelle rücken.
Das ist tatsächlich nur eine ganz kleine Änderung.
Bisher wurde, wenn im Rest-Array am Index i ein doppeltes Element X(i) gefunden wurde, dieses Element gelöscht.
Jetzt müssen alle Elemente 0..i gelöscht werden (Also Löschen bei Index 0 mit der Länge = i+1)


Angehängte Datei(en)
Sonstige .vi  Zeilen_Loeschen2.vi (Größe: 13,39 KB / Downloads: 353)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2015, 13:02 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2015 13:04 von Dustin.)
Beitrag #8

Dustin Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2015

2014
2015
DE



RE: Array auf gleiche Zeilen durchsuchen
Hallo zusammen,

das Thema ist zwar schon etwas älter aber hatte das gleiche Problem (gleiche Zeilen sollen gelöscht werden) - dank Lucki auch gelöst. Jetzt möchte ich noch mit einem Zähler ausdrücken, wie oft die gleiche Zeile vorgekommen ist. Also wenn eine Zeile 5 mal gelöscht wurde, soll da stehen, dass die Zeile 6 mal vorkam.
Hab mal meine fehlerhafte Lösung als Screenshot angehängt. Bei mir zählt auch etwas hoch, aber leider komplett fehlerhaft und ohne Zusammenhang zur eigentlichen Lösung.

Meine Idee war dabei, dass wenn 2 Zeilen gleich sind und somit eine gelöscht wird, an der 9. Stelle meines Arrays eine Zahl hochgezählt und zurückgeführt wird.

Wäre froh, wenn mir jemand helfen könnte.
Gruß


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2015, 13:10 (Dieser Beitrag wurde zuletzt bearbeitet: 11.08.2015 13:13 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Array auf gleiche Zeilen durchsuchen
Hallo Dustin,

wie sollen wir helfen? Sollen wir mit Paint in deinem Bild herummalen?
Häng doch mal das VI an…

Ansonsten ein genereller Tipp: Schieberegister sollte man initialisieren!

Zitat:Meine Idee war dabei, dass wenn 2 Zeilen gleich sind und somit eine gelöscht wird, an der 9. Stelle meines Arrays eine Zahl hochgezählt und zurückgeführt wird.
Warum an der neunten Stelle? Hmm
Erklär doch bitte etwas genauer, was da gemacht werden soll…
Ansonsten: 9. Element indizieren, inkrementieren, 9. Element ersetzen. In dieser Reihenfolge, ohne FeedbackNode!

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.08.2015, 13:48
Beitrag #10

Dustin Offline
LVF-Grünschnabel
*


Beiträge: 18
Registriert seit: Jun 2015

2014
2015
DE



RE: Array auf gleiche Zeilen durchsuchen
Hallo GerdW

VI anhängen darf ich leider nicht, da ich mit gekauften (und vom Hersteller passwortgeschützten) VIs arbeite.
An der 9. Stelle nur, weil ich vorher im Array 8 Datenwerte pro Zeile habe, und an der 9. soll dann eben stehen, wie oft diese Zeile vorkam.
Habe es jetzt so rum wie du meinst gemacht, ändert aber leider nichts.
Ich möchte, dass wenn der Vergleich der beiden Arrays True ist, also die gleiche Zeile noch einmal vorkommt, dass diese gelöscht wird und der Zähler in dieser Zeile an der 9. Stelle um einen hochgezählt wird. Das mit dem Löschen klappt problemlos, nur zählt er komplett willkürlich hoch.

Kann ich überhaupt aus der Schleife die Bedingung für meine Case-Struktur ziehen?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  2D Array einzelne Zeilen in anderes Array michi96 2 3.584 15.12.2021 10:53
Letzter Beitrag: michi96
  Array durchsuchen hulk 16 10.498 29.09.2020 19:47
Letzter Beitrag: hulk
  Bestimmte Zeilen im Array löschen wenn Bedingung nicht erfüllt ist bachatero18 4 5.372 31.03.2020 14:49
Letzter Beitrag: bachatero18
  2d-array durchsuchen Jolle 5 4.879 06.11.2019 15:54
Letzter Beitrag: jg
  2D Array durchsuchen und bestimmte Werte ersetzen sara2211 4 5.756 13.01.2017 10:59
Letzter Beitrag: sara2211
  Zeilen einer Tabelle ausblenden chrissy 6 6.030 19.07.2016 07:38
Letzter Beitrag: Freddy

Gehe zu: