Hallo Adaephon,
Zitat:meintest du mit der Waveform Autocorrealtion die eigene VI? Diese TSA Auto-Correlation Function VI ? Weil bei dieser Autocorrelation wird direkt eine Darstellung gegen das Tau, also die Zeitverschiebung angeboten.
Nein, das meinte ich nicht.
Ich meinte es genau so, wie die LabVIEW-Hilfe zur "normalen" Autokorrelationsfunktion die Erstellung eines Waveforms beschreibt. Siehe Bild oben…
Diese Art der Programmierung wie laut Kontext-Info hatte ich schon getestet, und gerade habe ich so noch einmal nachgebaut:
Zum testen hatte ich eine 10s Messung gemacht, dabei kamen diese Daten heraus:
[
attachment=49182]
Code:
Bins - Plot 0 Photonenanzahl - Plot 0
0 13492
1 13490
2 13787
3 13706
4 13866
5 13881
6 14083
7 14360
8 14734
9 14601
Aber die graphische Darstellung war nicht so wie man es erwarten würde.
Korreliert mit Igor sieht das kurze Beispiel so aus:
[
attachment=49184]
Hallo Adaephon,
du korrelierst über ein Histogramm deiner Messwerte. Wenn wir jetzt noch wüssten, wie es aussieht…
Oder willst du sagen, dass du die Autokorrelation aus den gezeigten 10 Bin-Werten berechnest?
Leider enthält dein VI keinerlei Messwerte oder sonstige Vorgabewerte: VI durchlaufen lassen, Bearbeiten-Menü->"Werte als Standard", speichern, hier als Attachment bereitstellen…
Wir können dein VI mangels Hardware auch nicht laufen lassen!
Ich was ja nicht, was dieser Igor da berechnet, aber LabVIEW macht aus deinen Werten dieses hier:
[
attachment=49185]
Ah,okay. Dann weiß ich wie ich eine Messreihe für hier speichern kann. Werde ich direkt morgen früh machen!
Das die Autokorrelation hinter das Histogramm geschalten ist, ist korrekt und soll auch so sein. Das Histogramm stellt einen Intensitätsverlauf über die Zeit dar. Durch die Autokorrelation dieser Daten können Rückschlüsse über die mittlere Diffusionszeit errechnet werden.
Ja, ich habe nur diese 10 Werte korrelieren lassen. Und die gleiche Anzeige bekommen wie du sie hast in LabVIEW. Wie man auf dem Bild sieht sind die Werte bei Sekunde 9 vertikal gespiegelt, dort würde man eigentlich die 0 setzen und alle Werte links davon ignorieren, Skala der x-Achse setzt man dann auf logarithmisch und dann erhält man das gewünschte Korrelogram. Idealerweise.
Kursios an ist eben auch, dass die Amplitude der Korrelation so riesige Werte hat. Erwarten würde man die 1 auf Höhe der Null von der x-Achse, da hier die Daten unverschoben eben am "selbstähnlichstem" sind.
Ein Nachtrag:
Ich habe mal ein Beispiel rausgesucht:
[
attachment=49193]
Links ist das Histogramm wie es in der VI erstellt wird. Im Beispiel mit 100 bins und die zugehörigen gezählten Photonen / Counts. (Das Beispiel ist im Gegensatz zu meinem Bespiel oben mit den 10 bin viel genauer und auch sensitiver, dass liegt aber daran, dass ich einen hochkonzentrierten Farbstoff zum testen genommen habe. Später sind auch die Ausschläge im hiesigen Histogramm wesentlich sensitiver)
Und nur aus diesen 100 Bins wird dann direkt die Autokorrelation erstellt, gegen eine logarithmische Achse um die erste halbe Sekunde/ den ersten Zeitabschnitt ziemlich genau betrachten zu können.
Sorry,
da hab ich eben etwas falsches geschrieben. Das Korrelogram läuft natürlich nicht gegen die absolute Zeit oder die Bins, sondern gegen das Tau der Autokorrelationsfunktion. Und das ist das was ich meinte, irgendwie sehe ich keine Möglichkeit dieses Tau abzugreifen mit die Autocorr-VI, in der TSA Auto-Corr-VI steht direkt im Kontext drin, dass das Correlogram gegen das Tau / den Lag erstellt wird.
Hallo Adaephon,
Zitat:Das Korrelogram läuft natürlich nicht gegen die absolute Zeit oder die Bins, sondern gegen das Tau der Autokorrelationsfunktion.
Die Autokorrelation vergleicht den aktuellen Datensatz mit einem verschobenen Abbild dieses Datensatzes. Du bekommst als Darstellung das Ergebnis dieser Korrelation über dem Tau der Verschiebung…
Hast du dir die Hilfe zur Autokorrelationsfunktion durchgelesen? Da steht das beschrieben unter Angabe mehrerer Formeln!
Zitat:Kursios an ist eben auch, dass die Amplitude der Korrelation so riesige Werte hat. Erwarten würde man die 1 auf Höhe der Null von der x-Achse, da hier die Daten unverschoben eben am "selbstähnlichstem" sind.
Auch hier muss ich auf die Hilfe zur Funktion verweisen, dort wird die Möglichkeit und Art der Normalisierung beschrieben!
Hallo GerW,
entschuldige bitte. Du hattest natürlich recht.
Ich habe vorhin an den NI-6210 zum testen mal einen Funktionsgenerator gehangen und Messwerte aufgenommen, welche ich auch direkt in der VI mit gespeichert habe.
[
attachment=49211]
Das Korrelogramm sollte nun passen, es war noch etwas an der Achsen-Einstellung herumzustellen und dann hat die Darstellung gepasst. Danke dir!
Die nächste Anpassung hat direkt wieder fragen aufgeworfen:
- der Feedback-Node speichert die aufaddierte Messzeit der letzte Schleife, dadurch passiert es mir, dass das Programm bei einer gewünschten Messzeit von sagen wir 2 Sekunden abbricht. Beim nächsten Start des Programms aber direkt wieder abbricht weil noch ein Wert wohl zwischengespeichert ist.
Dann passiert es auch, dass die Messzeit teils erst nach erneutem Drücken des Run-Buttons korrekt angezeigt wird, wenn das Programm wieder abbricht.
- Gibt es eine Möglichkeit die Aufnahme und Integration der Daten in eine eigene Schleife zu packen, um damit immer in einem gewünschten Zeitintervall, sagen wir 1 Sekunde, Daten an die nachgeschaltenen Funktionen (Histogramm und Autokorrleation) weitergegeben wird?
- Derzeit ist mein Stopkriterium der Vergleich der Aufaddierten Messzeiten was relativ der Messzeit entspricht. Gibt es auch eine Möglichkeit direkt dem Programm zu sagen ich möchte 2Sekunden oder 20Sekunden messen und dann stoppen?
(02.04.2014 13:41 )Adeaphon schrieb: [ -> ]- der Feedback-Node speichert die aufaddierte Messzeit der letzte Schleife, dadurch passiert es mir, dass das Programm bei einer gewünschten Messzeit von sagen wir 2 Sekunden abbricht. Beim nächsten Start des Programms aber direkt wieder abbricht weil noch ein Wert wohl zwischengespeichert ist.
Dann passiert es auch, dass die Messzeit teils erst nach erneutem Drücken des Run-Buttons korrekt angezeigt wird, wenn das Programm wieder abbricht.
Lösung: Feedbacknode/Shift-Register initialisieren!
Gruß, Jens
Hallo Adaephon,
Zitat:- Gibt es eine Möglichkeit die Aufnahme und Integration der Daten in eine eigene Schleife zu packen, um damit immer in einem gewünschten Zeitintervall, sagen wir 1 Sekunde, Daten an die nachgeschaltenen Funktionen (Histogramm und Autokorrleation) weitergegeben wird?
Producer-Consumer-Schema?
Zitat:- Derzeit ist mein Stopkriterium der Vergleich der Aufaddierten Messzeiten was relativ der Messzeit entspricht. Gibt es auch eine Möglichkeit direkt dem Programm zu sagen ich möchte 2Sekunden oder 20Sekunden messen und dann stoppen?
Dein DAQ-Assi ist auf 1kS/s Samplerate eingestellt. Wenn du also die Anzahl der zu lesenden Samples auf (Zeit in s)*Samplerate einstellst, dauert die Messung genau die gewünschte Zeitdauer…
(02.04.2014 14:06 )GerdW schrieb: [ -> ]Hallo Adaephon,
Producer-Consumer-Schema?
Hallo GerdW,
Du hattest das schon einmal geschrieben.
Du meinst
so etwas? Das ich in einer While-Schleife die For-Schleife der Integration laufen lasse und in einer anderen While-Schleife die Verarbeitung.
Das meinte ich auch, nur bin ich mir unschlüssig wie ich eine Taktung bekomme, dass nach jeweils 1s Daten aus dem Producer-Schema ausgegeben werden.
Zumal ich stets wieder zwei Ausgaben brauche, die der letzten Sekunde und die die Daten aller Sekunden.
Zitat:Dein DAQ-Assi ist auf 1kS/s Samplerate eingestellt. Wenn du also die Anzahl der zu lesenden Samples auf (Zeit in s)*Samplerate einstellst, dauert die Messung genau die gewünschte Zeitdauer…
Das Problem hierbei ist, dass der DAQ-Assistent öfters einen Fehler ausgibt wegen ungenügender Buffer-Größe. Beim Continiouse-Modus ist der Sample-to-Read die Buffer-Größe. Da ich bei meinen Messungen vorher nicht weiß wieviele Messwerte reinkommen, muss ich den Buffer entsprechend groß setzten.