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!
hab mal ne kurze Frage, ich vergleiche hier bei einem 2d array alle enthaltenen werte, sind bei mir 640 * 480,
bis ich zu einem Ergebnis komme dauert es bestimmt 8 - 10 Minuten gibt es eine Möglichkeit das schneller hinzubekommen???
Als Anhang mal wie ich es bisher gemacht habe.
(Verwende LabVIEW 8.6)
Vg
doch das Ding ist von mir, aber von Autoindexierung hab ich bisher noch nichts gehört,
und wenn ich sowas in java oder c++ programmiere funktionierts auch viel schneller aber auch da hab ich bisher noch nie was von Autoindexierung gehört.
wie kommst du auf die idee das ich das nicht selbst gemacht habe? 2 for-schleifen zu programmieren ist ja nun wirklich nicht ne große kunst,
aber da ich nunmal sonst mit anderen Programmiersprachen arbeite weiß ich nicht wie man das in LabVIEW beschleunigen kann.
' schrieb:aber von Autoindexierung hab ich bisher noch nichts gehört,
Kuck halt in der Hilfe nach. (bei Autoindizierung ist links an der Schleife kein ausgefülltes Viereck, sondern ein nicht-ausgefülltes). Verwendet man Autoindizierung, braucht man nicht manuell zu indizieren, also mit dem Element "Array indizieren".
Außerdem:
Verwende nicht bei beiden lokalen Variablen "Array 2" (einmal lesend, einmal schreibend - das dauert), sondern verwende Schieberegister!
Wenn du ein VI zum DownLoad bereit stellst, könnte man leichter das mit der Autoindizierung und dem Schieberegister erklären.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Anzeige
28.06.2009, 22:51 (Dieser Beitrag wurde zuletzt bearbeitet: 28.06.2009 22:53 von eg.)
Vergiss dass LabVIEW langsamer als Java oder C++ ist, es kann nur minimal, also um Millisekunden langsamer sein, aber nicht viel mehr. Manchmal sorar schneller. Es hat nur mit der "richtigen" Programmierung zu tun. Du solltest zumindest bei Arrayoperationen lokale und globale Variablen vergessen.
Autoindizierung hast du bestimmt abgeschaltet mit Rechtsklick auf den Eingang der Schleife, deshalb bin ich davon ausgegangen, dass du zumindest das Wort "Autoindexing" im Menü gesehen hast, weil absichtlich ausgeschaltet.
Autoindexierung macht aus deinem 2D Eingangsrray ein 1D Array in jedem Schleifendurchgang. Pro Schleifendurchgang bekommst du also eine Zeile deines 2D Arrays. Genauso in der inneren Schleife kannst du durch Autoindexing in jedem Schleifendurchgang auf das entsprechende Element zugreifen.
Somit kannst du gleichzeitig deine lokalen Variablen wegbekommen, die also richtig viel Speicher und CPU fressen.
.. und ein Beispiel sagt mehr als 1000 Worte. Das Ganze wäre in 5 Minuten erledigt und Du hättest ein sauschnelle Variante frei Haus geliefert bekommen, wenn Du Dich hättest entschließen können, dieses einfache VI direkt zu posten, statt dieses Screenshots.
Beispieledaten sollten aber gleich mit enthalten sein. Also: das Einzeigeelement links oben mit den Daten in Bedienelement umwandeln. Vor dem Abspeichern Menüleiste/bearbeiten/aktuelle Werte als Standard anklicken, dann posten.
Ich habe mal eine kleine Frage.
Du hast einen 2d-Array der Größe 640x480. Aber warum laufen die Schleifen bei dir nur 639 bzw. 479 mal? Unabhängig vom der Geschwindigkeitsgeschichte ziehst du den letzten Wert jeder Dimension nicht mehr für deinen Vergleich heran?! Ist das so gewollt? Falls ja ignore meinen Beitrag ruhig...