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!
Hallo LVF-User!
..war lange nicht hier.
Ich wußte damals schon das dieses Forum sich rasch entwickeln wird.
aber nun zu meinem Problem:
Ich habe einen Meßzyklus, welcher innerhalb einer While-Schleife mit integrierter Casestruktur und For-Schleifen
abläuft und ein Meßgerät gibt nach jedem Durchlauf einen Wert heraus.
Nun soll aber als Bedingung nach jeweils N-Schritten(Durchläufen) an ein 1-D-Array ein zweites daruntergelegt werden,
aber: Werte sollen jetzt von rechts beginnend (also anders herum beginnend) eingetragen werden. ..und nach
wiederum N-Schritten ein3.Array, wo wieder von links nach rechts eingetragen wird.
...sorry für die etwas eigenartige Umschreibung meines Problems!
Ein gutes Beispiel wäre vielliecht: Elektronenstrahl einer Bildröhre ..der arbeitet ja auch eine Matrix ab.
Meine Matrix beträgt maximal 100x100Punkte und sollte dann als Matrixtabelle abgespeichert werden.
Es wäre nett wenn sich jemand dieses Problems annehmen könnte.
' schrieb:P ...ich hab den Verdacht, dass der "alte Logiker" :idee:Lucki da auch noch was vorschlagen könnte...
So direkt angesprochen, muß ich ja wohl...
Ganz klar ist die Fragestellung nicht, z.B was den "Case" betrifft. Auch wird nicht gesagt, ob die Zeilen immer gleich lang sind oder nicht und was die Abbruchbedingung der While-Schleife ist.
Ich nehme mal einfach eine For-Schleife.
Möglichkeit 1: Mit 2 verschachtelten Schleifen (Bild links)
(Der Code dient einfach zur Erzeugung fortlaufender Zahlen)
Möglichkeit zwei: Gar nichts machen, hinterher den Array umformen (Bild rechts)
Entschuldige Achim, daß ich Dein VI jetzt noch gar nicht getestet habe...
Nachtrag: Sollte die Anzahl Messwerte in jeder Zeile unterschiedlich sen, dann ist das Ergebnis nicht als Matrix darstellbar. Dann müßte man Cluster ins Spiel bringen.
08.08.2007, 10:23 (Dieser Beitrag wurde zuletzt bearbeitet: 08.08.2007 21:55 von Lucki.)
Jetzt habe ich Achims VI angesehen. Ich habe nur den Satz vom Elektronenstrahl der Bildröhre für Ernst genommen, der Vergleich ist aber falsch. Besser wäre der Vergleich mit einem vor- rückwärts druckendem Drucker gewesen.
Man müßte dann die VIs so modifizieren:
(Mit der Ganzzahldivision wird geprüft, ob i gerade oder ungerade ist)
Das Vi von Achim hat die Eigenschaft, daß jeder einzelne Messwert sofort in der Matrix eingetragen wird. Bei mir wird die Matrix hingegen immer zeilenweise aktualisiert. (Wenn auf die Resultate erst am Ende des gesamten Messzyklus zugegriffen wird, ist der Unterscheid egal)
Etwas Genaueres könnte man vorschlagen, wenn der Sinn der Worte "...innerhalb einer While-Schleife mit integrierter Casestruktur und For-Schleifen..." nicht so rätselhaft wäre...
Hallo Achim und Lucki;
Achim ..ja, genau so meinte ich das mit der Art und Weise des Aufbaus der Matrix.
Lucki .. ja, in jeder Zeile, nenne sie mal x-richtung, wird die gleiche Anzahl von Messpunkten eingetragen.
Die Größe der Matrix(n x m = x*y)) wird vorher im Menü abgefragt und dann durchgereicht.
Natürlich war der Vergleich mit der Braunröhre nicht korrekt; sorry.
AchimsModell macht aber das ganze schon richtig.
Mein Problem jetzt: dei Messdaten werden in einer Stapelsequenz erzeugt, welche von einer For-Schleife umgeben ist und dann noch von einer Whileschleife.
Bis jetzt habe ich aber nur ein 1-D-Array, welches ich herausführen kann.
Es wäre natürlich schön, wenn ich, so wie in Achims Modell den Aufbau der Matrix mitverfolgen könnte; ..ist ja dann auch irgendwie ein Indikator für die Restdauer des Ablaufs.
Dies widerspricht natürlich dem Vorschlag ..erst am Ende das 1-D-Array entsprechend zu zerlegen und dann jede 2.Zeile "umzukehren".
Wie kann ich das denn realisieren?
(schaue mir jetzt gleich erst mal die zwei vi`s von Achim an)
1. Ich glaube du kannst auch in der While-Schleife(also nicht nur in der For-Schleife) Indexing mit dem Rechtsklick einschalten. (wenn ich dein letztes Problem richtig verstanden habe, wirst du dann statt 1D Array ein 2D Array erhalten).
2. Zu den Lösungen von Achim und Lucki und zur Fragestellung:
wenn es wichtig ist nicht nach gerade/ungerade, sondern beliebige Zeile-eine Richtung, nächste Zeile-andere Richtung zu haben, dann würde ich es in einem boolschen Schieberegister mit Negation in jeder Iteration lösen und nicht mit dem Remainder.
hi eq,
ich schicke dir am besten mal ein snapshot des betreffenden teils.
vielleicht erklärt dies das problem treffender.
wenn ich den datenfluss weiter herausführe (mit indexing), so gibt dies einen fehler ..nach außen (wg. typ).
das mit dem boelschen schieberegister klingt sehr interessant!
...vielleicht kann man dann, wenn du mein snapshot gesehen hast, nochmals darauf eingehen.
insbesondere wäre es auch interessant zu wissen wie es sich verhält, wenn man mal so einfach 10.ooo werte hat und ein 1-D-array rausschiebt (wie schon angesprochen).
' schrieb:wenn es wichtig ist nicht nach gerade/ungerade, sondern beliebige Zeile-eine Richtung, nächste Zeile-andere Richtung zu haben, dann würde ich es in einem boolschen Schieberegister mit Negation in jeder Iteration lösen und nicht mit dem Remainder.
Mit dem Remainder ist nicht optimal. Aber ein dritte Methode wäre auch gut: Test der Einerstelle von i, siehe Bild:
' schrieb:Mit dem Remainder ist nicht optimal. Aber ein dritte Methode wäre auch gut: Test der Einerstelle von i
Hm, was habt ihr damit für ein Problem? Gerade/ungerade ist doch sofort getauscht...und das geht ja auch während der Laufzeit, z.B. mit nem vorangestellten Select oder Case...
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)