LabVIEWForum.de - Logarithmische Signaldarstellung

LabVIEWForum.de

Normale Version: Logarithmische Signaldarstellung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4 5 6 7
Hallo Adaephon,

Zitat:Dann hab ich anstatt einer variablen Bin-Breite die gewünschte 0,0001 bzw. 10000 Bins pro Sekunde gesetzt.
Dann erstell dir doch ein Array mit der Länge 10k, in welchem du dann einfach indizierst und hochzählst…

Zitat:Danach müsste ich mich etwas bauen, was immer genau 10000 entgegennimmt und in die Autokorrelations-VI wirft.
Das hätte sich mit dem Array fester Länge erledigt…

Zitat:Kann man ein Cluster aus den Histogramm Daten erstellen, welches 10.000 Spalten hat in denen je die Bins für die Sekunde kommen, jede Zeile würde dann eine Sekunde präsentieren. Die Daten aus dem Histogramm werden fortlaufend eingefügt und immer wenn eine Zeile voll ist werden die Einträge und die Autocorr geworfen, mit den Autocorrelationen der anderen anderen Zeilen dann addiert und durch die Anzahl der Zeilen geteilt.
Ein Cluster ist etwas anderes als ein Array. Willst du ein 2D-Array haben, in dem jede Spalte (oder besser Zeile wg. Autoindizierung) ein Histogramm darstellt?
Wie oben auch schon: nicht einfügen, sondern Array größenmäßig definieren und Spalten/Zeilen ersetzen!

Was heißt "werden die Einträge und die Autocorr geworfen"? Wenn oder was willst du damit treffen? Big Grin
Hallo GerdW,

(08.04.2014 12:14 )GerdW schrieb: [ -> ]Dann erstell dir doch ein Array mit der Länge 10k, in welchem du dann einfach indizierst und hochzählst…
Über Initialize Array habe ich mir ein Array mit 10.000 erstellt. Dadurch das ich aus dem Histogramm heraus weiß, wieviel Zeit ein Bin darstellt, reicht sogar ein 0D Array, weil die Spalten-Zahl die fortlaufende Bin-Nummer ist und jedes Bin mindestens den Wert 0 haben wird, wenn in dem Zeitabschnitt kein Photon gemessen wurde.

Zitat:Das hätte sich mit dem Array fester Länge erledigt…
Gesagt, getan. Big Grin [attachment=49274]

Zitat:Ein Cluster ist etwas anderes als ein Array. Willst du ein 2D-Array haben, in dem jede Spalte (oder besser Zeile wg. Autoindizierung) ein Histogramm darstellt?
Wie oben auch schon: nicht einfügen, sondern Array größenmäßig definieren und Spalten/Zeilen ersetzen!

Eigentlich hatte ich mir gedacht, dass jede Zeile ein Histogramm mit jenen 10.000 Bins enthält. Welches dann Zeilenweise in die Autocorr-VI gegeben wird.
Zitat:Was heißt "werden die Einträge und die Autocorr geworfen"? Wenn oder was willst du damit treffen? Big Grin
Treffen will ich die richtigen Werte Big Grin

Ich habe auch etwas mit der Divide-Funktion gespielt. Wenn als Divisor später die aufsummierten Auto-Correlationen einfließen, kann ich diese mit einem Dividenden teilen, welche nur eine "Zahl" ist. Das lässt die VI nicht zu.
Aus der AutoCorr-VI kommt auch wieder ein 1D Array. Besteht die Möglichkeit Einträge der 1D-Arrays der jeweiligen Korrelationen zu addieren? Insert Array klappt ja nicht.
Auch muss ich dann später jeden Eintrag teilen können durch den Index des aufindizierten Arrays
Hallo Adaephon,

was soll es bringen, wenn du nach der Histogrammberechnung in deiner Schleife nur ein Element herauspickst und davon dann ein 10k-Array erstellst? Schau mal ins Attachment, wo ich u.a. trotz schon erfolgtem Hinweis mal wieder die zwei Case-Strukturen zu einer zusammengefasst habe…

Zitat:reicht sogar ein 0D Array
Was soll das sein? Ein skalarer Wert?
Hallo GerdW,
danke für deinen Hinweis und die Hilfe.
Wenn ich den Code aber richtig verstehe teilst du jetzt die ankommenden Daten aus der Queue durch 0,0001 bzw. Multiplizierst sie damit mit 10.000 und erstellst dann ein Array mit 10.000 Einträgen daraus welches dann autokorreliert wird. Warum dividierst du an dieser Stelle?

Ich denke ich müsste das Histogramm noch vor die Arrayinitialisierung packen und dann aus den histogrammierten Daten das Array erstellen.

Wird in LabVIEW das Array erst weitergereicht wenn es wirklich voll ist? Sprich gelangt erst das 10.000er Array in die Autokorrelations-VI wenn das letzte Element eingetragen wurde und dann von vorn wieder angefangen wird zu besetzten?
Dann könnte ich das "I" der Schleife als Zähler nehmen, wie oft das Array neu besetzt wurde.

Oh,
dann habe ich das 0D mit dem 1D verwechselt. Ich dachte auch hier zählt LabVIEW die 0 als 1. Wobei, dass klingt jetzt selbst für mich komisch Big Grin
Mir ist gerade ein- bzw. aufgefallen, dass die Schleife ja für jeden Eintrag einmal durchlaufen muss. Also ist der i-Index der Schleife nach jedem voll besetzten Array bei 10.000.
Somit muss ich das fortlaufende I durch 10.000 Teilen und ich habe die ganzzahlige Anzahl an vollbesetzten 10.000er Arrays.
Den DAQ-Assistant habe ich heute durch normale Tasks ersetzt. Indem ich dann die Buffergroeße etwas angehoben habe, scheint er erstmal keine Error mehr zu erzeugen.

Dann habe ich versucht das 10.000er Array mit den Daten aus dem zweiten Histogramm zu füllen, aber das will mir nicht so recht gelingen. Bisher ist das Histogramm und das Array jeweils in einer eigenen Schleife. Die Daten kommen zwar aus dem Histogramm, aber das Array füllt sich nicht. Sollten beide eventuell in die selbe Schleife hinein?

[attachment=49312]
Hallo Adaephon,

Zitat:Dann habe ich versucht das 10.000er Array mit den Daten aus dem zweiten Histogramm zu füllen, aber das will mir nicht so recht gelingen. Bisher ist das Histogramm und das Array jeweils in einer eigenen Schleife. Die Daten kommen zwar aus dem Histogramm, aber das Array füllt sich nicht. Sollten beide eventuell in die selbe Schleife hinein?
Ich habe mal in Ermangelung deiner Mess-Hardware den DAQ-Teil entfernt und die Messwerte simuliert.
Dann habe ich einen "vernünftigen" "Bin"-Wert eingestellt und als Standard hinterlegt. Jetzt bekomme ich ein Histogramm des Histogramms…
Hallo GerdW,
ah, jetzt habe ich auch meine Fehler gefunden. Wenn ich 10000 Bins haben will, dann muss ich auch nicht 10.000 eingeben, sondern 0,0001, weil das eben 1/10.000 ist. Und das ist die Array Initialisieren Funktion aus der Schleife rausnehmen muss, hätte mir auch auffallen müssen.

Derzeit werden zwar noch alle Werte in das erste Element eingetragen, aber das bekomm ich noch hin *g*

[attachment=49315]

Ich habe nochmal eine VI mit Messwerten angehangen.

Derzeit ist die "Messzeit" mein Stopp-Kriterium. Die Messung stoppt auch sobald der gewünschte Wert erreicht wird. Da es so programmiert wurde hält auch das Programm dann an, nur werden die Daten bis dahin nicht mehr nachfolgend komplett ausgewertet. Da muss ich wohl auch noch eine andere Art der Messzeit-Bestimmung finden oder ein anderes Stopp-Kriterium.
Seiten: 1 2 3 4 5 6 7
Referenz-URLs