Seite 1 von 1

Histogramm

Verfasst: Sonntag 21. März 2010, 20:04
von darkdestroyer
Hallo, zunächst einmal meinen Dank an die Entwickler für dieses hervorragende Programm. Einfach zu bedienen und effektvoll in der Anwendung!
Meine Frage bzw. Anregung: Gibt es eine Funktion, die mir ein Histogramm der Amplitudenverteilung eines Eingangssignals darstellt, ähnlich wie es in L**V**W möglich ist? Oder hat mich meine Suchfuntion betrogen und soetwas is bereits direkt oder über Umwege vorganden. Konkret geht um die Amplitudenverteilung des Signals eines Szintillations-Gamma-Detektors, also um die Realisierung einer Gammaspektroskopie-Anwendung.

Beste Grüße...

Pedro

Re: Histogramm

Verfasst: Montag 22. März 2010, 08:58
von abacom
Ist dies nicht letztlich "nur" ein "X/Y-Plot" ?

Re: Histogramm

Verfasst: Montag 22. März 2010, 09:21
von darkdestroyer
Hallo,

der X/Y Schreiber liefert mir einen Punkt für jede Paarung von Werten, beispielsweise für eine grafische Umsetzung von Spannung als X-Parameter und Druck als Y-Parameter. Soweit mein Verständnis. Ein Histogramm würde mir eine Darstellung liefern, in der die Verteilung oder besser Auftrittshäufigkeit einzelner Druckstufen angezeigt wird. Dazu soll der Y-Wert (Druck) innerhalb des Meßbereiches, sagen wir 0 bis 100 Bar, in bestimmte Intervalle (Klassen), von sagen wir jeweils 10 Bar Breite, unterteilt werden. Somit hätten wir Klassen von 0...10 Bar, 11... 20 Bar, 21... 30 Bar usw.
Das ist hier gut erklärt:

http://de.wikipedia.org/wiki/Histogramm

Wenn das mit einem X/Y Plot machbar ist, muss ich aber die Klassierung des Signals irgendwo vornehmen, und da bin ich nicht weitergekommen...+
Sorry, falls das etwas verwirrend ist...

Gruß Pedro

Re: Histogramm

Verfasst: Montag 22. März 2010, 12:16
von KAKTUS
Geht so wie im Beispiel im Moment nur über Exel. Du kannst deine Messwerte mit DDE exportieren nach EXEL und dort jedes beliebiges Diagramm auswählen. Einfach mal Beispiele ansehen.
Wenn man etwas Aufwand treibt, müsste es aber auch im X/Y oder Y/t Schreiber gehen.

Re: Histogramm

Verfasst: Montag 22. März 2010, 12:32
von darkdestroyer
Hmmmm, das hatte ich erwartet, oder eigentlich nicht. Der Weg über Excel ist schon klar, ne native Lösung wäre mir aber lieber, weil das als Standalone Anwendung laufen soll, ohne den Office-Kram im Hintergrund.
Und eine Lösung "hinzufricklen" ist bei ner Klassenanzahl von > 100 wohl ziemlich aufwendig...
Na gut, vielleicht fällt mir was ein...
Beste Grüße

Pedro

Re: Histogramm

Verfasst: Montag 22. März 2010, 12:44
von Mike D
Idee für einen Ansatz:

Man nimmt als Speicher für die Werte einen Ram-Baustein. Den gerundeten und speziell skallierten Messwert nimmt man als Adresse der Ram-Zelle in der man dann zeitlich getacktet aufaddiert.

Vermutlich ist das Auslesen und Darstellen aufwändiger als das Sammeln der Messwerte.

2. Ansatz: eine DLL

3. Ansatz: Messwerte in einer Datei sammeln, im Hintergrund durch kleines Standaloneprogramm aus Messwertedatei eine Histogrammdatei erzeugen und diese mit PL wieder einlesen.

Mike

Re: Histogramm

Verfasst: Montag 22. März 2010, 12:51
von darkdestroyer
Ja, das sind interessante Ansätze. Das mit dem RAM muss ich erstmal verstehen :-), Variante 2 und Variante 3 muss ich erstmal durchdenken.

Vielen dank erstmal für die Anregungen..

Pedro
Mike D hat geschrieben:Idee für einen Ansatz:

Man nimmt als Speicher für die Werte einen Ram-Baustein. Den gerundeten und speziell skallierten Messwert nimmt man als Adresse der Ram-Zelle in der man dann zeitlich getacktet aufaddiert.

Vermutlich ist das Auslesen und Darstellen aufwändiger als das Sammeln der Messwerte.

2. Ansatz: eine DLL

3. Ansatz: Messwerte in einer Datei sammeln, im Hintergrund durch kleines Standaloneprogramm aus Messwertedatei eine Histogrammdatei erzeugen und diese mit PL wieder einlesen.

Mike

Re: Histogramm

Verfasst: Montag 22. März 2010, 15:06
von Mike D
Hier ein kleines Testprojekt. Nichts Fertiges, nur zur Erläuterung meiner Idee.

Mike

Re: Histogramm

Verfasst: Montag 22. März 2010, 18:32
von Mike D
noch ein paar kleine Hinweise zu histogramm_test_1:

1. der A/D-Wandler an den Adressleitungen des Ram bestimmt zusammen mit einem passend zum Messbereich eingestellten Vorverstärker die Anzahl der Klassen.

2. die beiden anderen A/D und D/A-Wandler mit dem Addierer bilden den Incrementierer der Klassen. Immer wenn eine fallende Flanke am R/W-Eingang des Ram kommt wird eine ausgewählte Klasse um 1 erhöht.

3. Der Vergleicher vor besagten R/W-Eingang in diesem Beispiel ist eine unglückliche Notlösung. Ich habe das so gemacht um Einspeichern und Auslesen der Werte ohne Multiplexer zu erreichen. Eigentlich müsste das incrementieren Zeit- oder Ereignisgesteuert erfolgen und das Auslesen der Kurve abwechselnd dazu mit eigener Steuerung. Dieses Beispiel soll aber so einfach wie möglich nur die Art der Speicherung des Histogramms im Ram zeigen.

4. soll das Histogramm relativ sein bräuchte man noch einen Messwertezähler und eine Formel/Berechnung der relativen Werte hinter dem Ausgang des Speichers und eine dynamische Skalierung der Y-Achse.

Viel Spaß beim weiteren Tüfteln

Mike D

Re: Histogramm

Verfasst: Dienstag 23. März 2010, 07:52
von darkdestroyer
Hallo, na das is ja ne Wucht. Nun muss ich das erstmal verdauen. Aber Deine Erklärungen haben meine nexten Fragen schon beantwortet.
Jetzt werd ich mal weiterdenken und vielleicht kommt ja das raus, was ich brauche. Vielen Dank erstmal, aber da kommen bestimmt noch weitere Fragen ;-)

Gruß Pedro

Re: Histogramm

Verfasst: Dienstag 23. März 2010, 10:48
von darkdestroyer
So, ich habs mal weitergdacht. Ein Makros simuliert meine Eingangsimpulse mit zufälligen Pulsfolgezeiten und zufälligen Impulshöhen. Zusätzlich kann man mit einem Schieberegler die Baseline verändern, ab der die Schaltung Impulse registriert. Damit kann man überprüfen, inwieweit das Histogramm auf den Wegfall der niedrigen Pegelwerte reagiert.
Die Histogrammerstellung basiert auf der Idee von Mike mit einigen Erweiterungen. Als Anzeige wurde jedoch ein X/Y-Schreiber anstelle des Stiftplotters genommen. Damit funktioniert das eigentlich so, wie ich mir das vorstelle.
Da der A/D-Wandler im Vorliegend Fall nur 255 Schritte auflöst, wurde ein Reset eingefügt, der nach 255 Messungen das RAM mit Nullen füllt und eine neue Darstellung startet. Da ist mir nix besseres eingefallen. Kann man das RAM resetten ohne die Verbiegung, die ich gemacht habe?

Grüße Pedro

Re: Histogramm

Verfasst: Dienstag 23. März 2010, 12:00
von abacom
Noch ein Vorschlag...
Histo.prj
(9.64 KiB) 504-mal heruntergeladen

Re: Histogramm

Verfasst: Dienstag 23. März 2010, 14:04
von darkdestroyer
So ähnlich war mein erster Ansatz. Nur scheint mir diese Variante bei hohen Klassenzahlen unübersichtlich zu werden.

Gruß

Pedro

Re: Histogramm

Verfasst: Dienstag 23. März 2010, 21:38
von Mike D
fur mehr als 255 counts brauchst du nur die A/D D/A-Wandler auf 16bit bringen und ein 2. Ram parallel schalten. kein großer Aufwand.

Mike

Re: Histogramm

Verfasst: Mittwoch 24. März 2010, 08:38
von darkdestroyer
Jo, schon klar, mein Einwand bezog sich auf das "histo.prj" von gestern...

Pedro