LabVIEWForum.de - Berechnung Verteilung

LabVIEWForum.de

Normale Version: Berechnung Verteilung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

bei einer Datenauswertung möchte ich die Datenverteilung in einem Histogramm darstellen.
Der Kanal hat ~200000 Werte.
Ich verwende wie im Programm ersichtlich die LabVIEW eigene Routine zum Erstellen des Histogramms.
Leider habe ich hier sehr hohe Durchlaufzeiten (~ 4 Minuten) !

Das Datenarray ist schon vorher per Dateimenü geladen worden und sollte eigentlich schon im
Speicher sein.

Was dauert hier so lange ?

Hat mir jemand einen Tip?

Vielen Dank für eure Antworten.

Gruß
Christian
Und wieso verwendest du diese PtbyPt-Funktion?

Mach doch direkt das Histogramm in einem Aufwasch mit diesem VI:
[attachment=16217]

Dauert bei mir bei 200000 Zufallswerten und 50 Klassen nur wenige Millisekunden.

MfG, Jens
Hallo Jens,

vielen Dank für die Antwort.
Ich habe es getestet, das ist wirklich viel schneller.
Irgendwie kam ich nicht auf die Idee unter der Sparte Mathematik zu suchen.
Leider ist mir nicht ganz klar, was den Geschwindigkeitsvorteil der einen Funktion bringt.
Die aufgerufene DLL muß doch sicherlich auch das ganze Array abarbeiten und den Klassen zuordnen.

Gruß
Christian
Morgen!

' schrieb:Die aufgerufene DLL muß doch sicherlich auch das ganze Array abarbeiten und den Klassen zuordnen.

Punkt-für-Punkt-Funktionen sind dafür gedacht, nacheinander Punkte zu verarbeiten, die so in LabVIEW ankommen, z.B. Filterung von sequentiell eintreffenden Daten etc. Das wird in einer anderen Datenverarbeitungskette resultieren und ein VI, dass halt nicht für Punkt-für-Punkt-Funktionalitäten gedacht ist, ist ggf. schneller. Woran das jetzt genau liegt, mmh, könnte ich nur raten... Lassen wir das lieber...;)Aber für realistisch halte ich es schon, dass es (auch deutlich) unterschiedliche Laufzeiten gibt...

ch
' schrieb:Leider ist mir nicht ganz klar, was den Geschwindigkeitsvorteil der einen Funktion bringt.
Die aufgerufene DLL muß doch sicherlich auch das ganze Array abarbeiten und den Klassen zuordnen.
Das ist jetzt wieder so ein Fischen im Trüben:
1. Was macht denn das selbstgeschriebene VI vor der For-Loop?
2. In der For-Loop hast du den Index an einen Indicator angeschlossen, der somit im FP bei jedem Durchlauf aktualisiert wird, das kostet...
3. Die PtbyPt Funktion ist komplett in LV geschrieben, das ist häufig langsamer als eine DLL.
4. Als PtbyPt-Funktion weiss der Algorithmus ja nicht, wie groß das Min & das Max in deinem Array sind. Somit wird da garantiert dauernd umsortiert.
5. etc. etc. etc.

Gruß, Jens
Hallo Jens,


zu 1: Das Vi vor der For-Loop hat mir nur die Daten etwas komprimiert, gibts jetzt aber nicht mehr.
zu 2: Der Index wurde nur zu Testzwecken dargestellt, gibts auch nicht mehr, war aber auch nicht das Problem.
zu 4: Ich bin deiner Meinung, dass die DLL wohl einen besseren Algorithmus zur Sortierung hat.

Bis dann und Gruß

Christian
Referenz-URLs