LabVIEWForum.de
MathScript Schleife sehr langsam - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Module (/Forum-LabVIEW-Module)
+---- Forum: LabVIEW MathScript RT (/Forum-LabVIEW-MathScript-RT)
+---- Thema: MathScript Schleife sehr langsam (/Thread-MathScript-Schleife-sehr-langsam)



MathScript Schleife sehr langsam - horscht(i) - 27.03.2012 12:42

Hallo allerseits,

ich habe hier einen MathScript-Knoten, in dem per while-Schleife ein 2D-Array reihenweise mit Werten befüllt werden soll. Ich definiere hier Werte für ein numerisches Gitter mit den Schrittweiten dx (Spalten) und dy (Reihen).
Die Werte, die den einzelnen Elementen zugeordnet werden, werden dabei aus ein paar simplen Angaben einer Textdatei zusammengesetzt.

Das klappt auch soweit so gut alles. Allerdings ist die Schleife äußerst langsam. Das Array besitzt ungefähr die Größe 100x500, also absolut nichts Großes, aber die Ausführung dauert ewig.

Hier die Schleife
Code:
while (i-1)<=Nx,
  array_nref(j,i)=complex(array_struct(m,3),array_struct(m,4)/(20000*k0)),
  i=i+1,
end
j=j+1,
i=1,
Ich lese also aus array_struct zwei Werte aus, baue daraus eine komplexe Zahl und stecke die als Element in array_nref. Das ganze gehe ich spaltenweise durch, springe in die nächste Reihe und fülle wieder auf. Rund um die Schleife kommt noch ein if-else, dass dafür sorgt, dass den Zähler m überwacht, so dass aus array_struct auch die richtigen Werte ausgelesen werden.
Hier mal der gesamte Code:
Code:
while (j-1)*dy<=Ly,
  if (j-1)*dy<=thickness_act,
    % Fill the current row of array_nref (representing the x-direction) completely
    while (i-1)<=Nx,
      array_nref(j,i)=complex(array_struct(m,3),array_struct(m,4)/(20000*k0)),
      i=i+1,
    end
    % Row completley filled. Increase j to jump to the next column.
    j=j+1,
    i=1,
  else
    % The column is in the next layer, so thickness_act has to be updated.
    % m is increased so the ref. index values of the next layer are used.
    m=m+1,
    thickness_act=thickness_act+array_struct(m,2),
  end
end
Entweder ist MathScript einfach verdammt lahm oder aber ich habe einen programmiertechnischen Bock geschossen. Ich tippe ja auf letzteres. In Mathematica erzeuge ich mit einem ähnlichen Code das Array in Sekundenbruchteilen.

Hat jemand eine Idee?


RE: MathScript Schleife sehr langsam - GerdW - 27.03.2012 12:53

Hallo horscht,

Zitat:In Mathematica erzeuge ich mit einem ähnlichen Code das Array in Sekundenbruchteilen.
Wenn du das direkt in LabVIEW (und nicht im Mathscript-Node) machst, ist es wahrscheinlich ähnlich schnell...


RE: MathScript Schleife sehr langsam - horscht(i) - 27.03.2012 13:41

Oha...also ist das tatsächlich so lahm?
Ich werde mal das Programm umbauen.