Hallo,
nach einer längeren Pause konnte ich mich nun wieder mit diesem Programm auseinander setzen.
Ich habe mittlerweile die Messung der Photonen implementiert und das Speichern in ein CSV-File.
Im Anhang ist eine solche CSV-Datei, deren Werte allerdings nicht repräsentativ sind, da ich den Scan-Vorgang abgebrochen habe. Dennoch erkennt man die Struktur daran: X-Wert;Y-Wert;Z-Wert;detektierte Photonen. Bei diesem Beispiel ist nur die XY-Ebene gescannt worden. Das Z-Scannen ist erstmal außen vor.
Jetzt geht es um die Visualisierung dieser Daten. Da komme ich gerade nicht weiter. Ein Intensitätsgraph bzw. ein farbiges 2D-Histogramm wäre schön. In zwei Threads habe ich Inspirationen gefunden, die mir sehr gut gefallen:
https://forums.ni.com/t5/LabVIEW/How-can...836/page/3
https://forums.ni.com/t5/LabVIEW/add-ele...42#M504073
Die entsprechenden Bilder befinden sich auch im Anhang.
Und so oder so ähnlich würde ich das auch ganz gerne visualisieren. Also einmal gerne als "klassische Intensitätsverteilung 2D" und einmal diese 3D-Darstellung, bei der man die Intensität sowohl an der Farbe als auch an der Höhe erkennt. Allerdings sind dabei einige Fragen entstanden.
1. Wo genau muss ich das einfügen?
Das Scannen wird über eine Ereignisstruktur gestartet. Also wenn der Scan-Button betätigt wird, wird der True-Case in der Ereignisstruktur ausgeführt. Und darin befinden sich zwei geschachtelte For-Schleifen für X und Y. Meine Vermutung ist, dass das Visualisieren innerhalb dieses True-Case aber außerhalb der zwei Vorschleifen sein muss? Wenn der Scan-Vorgang beendet ist, sollen die Graphen angezeigt werden oder alternativ währen des Scannens schon. Allerdings stelle ich mir das dann mit der Skalierung schwierig vor, wenn noch nicht alle Positionen und Werte bekannt sind. Deswegen würde ich da zu ersterem tendieren.
2.Welche Funktionen muss ich für dieses Ziel benutzen? Und wie ist das mit den Daten/Achsen/Skalen?
Die Beispiele bestehen denke ich aus einer Kombination von "3D-Oberfläche" und "Intensitätsgraph". Sehe ich das richtig?
Und die Daten werden ja passend in das CSV-File geschrieben. Im Endeffekt soll ja der vierte Wert aus dem File gegen den X- und Y-Wert aufgetragen werden. Skalieren die entsprechenden Funktionen die Achsen selbst? Und für die Intensität muss die Farbdarstellung ja auch normiert werden. Wie macht man das? Also das die Farbskala auf die maximale Anzahl der Photonen skaliert werden. Dabei finde ich auch blau für kleine Werte und rot für große Werte gut. Wie stellt man das ein?
3. Womit muss ich die Funktionen verbinden?
Bei jeder Iteration der Schleife wird mit den vier Werten ein Array erstellt, das in eine Tabelle geschrieben wird. Das Ergenis sieht man auf einem der Anhänge. Jetzt habe ich gedacht, dass ich die X-Werte, die bei jeder Iteration an erster Stelle des Arrays sind, an den X-Vektor Eingang von "3D-Oberfläche" ziehe. Y analog. Und für die Z-Matrix entsprechend den vierten Wert aus dem CSV-File.
(Im Anhang im Bild "visualisierung" sieht man meine Idee)
Aber anscheinend stimmt das so nicht. Was ist daran falsch und wie kann man das lösen?
Auch frage ich mich, warum der Intensitätsgraph nur einen Eingang hat. Woher kennt er da die X-und Y-Werte?
Und zu guter letzt:
4. Wie kann ich die Bilder anzeigen lassen und speichern?
Der Intensitätsgraph wird ja direkt auf dem Frontpanel angezeigt. Kann ich den 3D-Graph auch dort anzeigen lassen?
Und wie kann ich sowohl Intensitätsgraph als auch den 3D-Graph als Bilddatei speichern?
Es ist etwas länger geworden und es sind einige Fragen. Ich würde mich freuen, wenn wir da Licht ins Dunkel bringen :-)
Vielen Dank!