Forum: Digitale Signalverarbeitung / DSP / Machine Learning Häufigkeitsverteilung der Maxima nach Upsampling/Filter


You were forwarded to this site from EmbDev.net. Back to EmbDev.net
von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Hallo,

ich beschreibe mal, was gemacht wird:

1. Ein ADC 8 Bit 1 GSample/s digitalisiert ein Analogsignal. Darin sind 
Impulse enthalten die ca. 10 ns bis 20 ns breit sind (stammen aus 
radioaktivem Zerfall).

Mit diesen wenigen Abtastwerten je Impuls erfasse ich statistisch 
natürlich nur sehr selten das tatsächliche Maximum der Analogspannung. 
Meine Idee war also da Upsampling zu betreiben. Ich habe die Abtastrate 
virtuell vervierfacht (verdoppelt) und dahinter Tiefpass gefiltert auf < 
1/2 der ursprünglichen Abtastrate. Bei virtuellen 4 GSample/s also auf < 
1/8 davon. Das gefilterte Signal sieht ausch schön glatt aus und in der 
FFT sehe ich wunderbar welcher Bereich durch kommt und wo gedämpft wird.
Für Upsampling wiederhole ich einfach nur die Abtastwerte und die 
Filterung erledigt ein Xilinx FIR IP dem ich Filterkoeffizienten gebe.

2. Für die Messung des Radioaktiven Zerfalls interessiert mich die Höhe 
des jeweiligen Impulses. Also habe ich eine Maximumerkennung gebaut die 
für jeden Impuls einen Wert ausgibt der eben der Maximalwert ist.

3. Aus diesen Werten baue ich am PC ein Spektrum. Nach rechts ist da die 
Amplitude aufgetragen, nach oben die Häufigkeit.

Tja und das sieht nicht gut aus. Ich bekomme seine seltsame Frequenz im 
Spektrum. Das sieht also so aus als wären nach Upsampling und Filterung 
manche Maximalwerte wahrscheinlicher und manche nicht.

Bei der Messung 0 war das 4x Upsampling, bei der Messung 1 2x 
Upsampling. Das hat also was damit zu tun.
Ganz ohne Upsampling ist diese Störung weg, aber ich bekomme dann auch 
nur eine geringere Auflösung insgesamt. Wenn ich einen gleitenden 
Mittelwert ohne Upsampling mache dann sind auch keine Störungen 
vorhanden.

Bei 4x Upsampling habe ich noch einen Ausschnitt mit 452 Bins, das sind 
14 Perioden der Störung. Also recht genau 32 Bins/Periode.

Beim 2x Upsampling im Aussschnitt sind 192 Bins und 24 Perioden, also 8 
Bins/Periode.

Kann mir jemand erklären wieso da bei jeweils 32 (8) Bins manche 
wahrscheinlicher/häufiger sind und manche nicht und wie ich das 
vermeiden kann?

Ich habe eine funktionierende Lösung ohne Upsampling und mit gleitendem 
Mitteilwert, aber ich würde gerne Upsampling machen weil ich mir damit 
eine bessere Auflösung erhoffe. Denn mit Upsampling und Filterung 
bekomme ich statt der initial 7 ADC Bits (das Signal ist nur positiv, 
der Eingang vom ADC aber bipolar) dann deutlich mehr Bits (ich würde auf 
16 beschränken). Mit dem Gleitenden Mittelwert über je 8 Abtastwerte 
bekomme ich 7+3=10 Bits. Reicht auch (siehe Anhang), mehr wäre aber 
nett. Vor allem interessiert mich aber wieso diese Störung entsteht, das 
würde ich gerne verstehen.

Vielen Dank!

: Bearbeitet durch User
von Detlef _. (detlef_a)


Lesenswert?

Interessant. Hab ich mich auch mal gefragt: Wie kriegt man aus 
abgetasteten Signalen, die Nyquist erfüllen, den Maximalwert? Keine 
Lösung gefunden.

Deine Einlassung verstehe ich nur bruchstückhaft. 'virtuell upsampeln' 
heißt wohl die Werte einfach zu wiederholen.

>>'Nach rechts ist da die Amplitude aufgetragen,' Bei einem Spektrum ist nach 
rechts die Frequenz aufgetragen, bei einer Amplitudendichteverteilung ist nach 
rechts die Amplitude aufgetragen ?!

So verstehe ich Deine Frage noch nicht.

Cheers
Detlef

von Frank K. (kibabalu)


Lesenswert?

Du hast also ein unterabgetastetes Signal wie auch immer 'geupsampelt` 
und hast plötzlich die Informationen, die im unterabgetasteten Signal 
nicht vorhanden waren. Donnerwetter, das ist revolutionär und stellt die 
Nachrichtentechnik auf ganz neu Füße.

von Gustl B. (-gb-)


Lesenswert?

Detlef _. schrieb:
> 'virtuell upsampeln'
> heißt wohl die Werte einfach zu wiederholen.

Exakt. Und danach wird das natürlich Tiefpass gefiltert weil sonst wäre 
nix gewonnen.

Detlef _. schrieb:
> Bei einem Spektrum ist nach
> rechts die Frequenz aufgetragen

Spektrum ist ein sehr allgemeiner Begriff. Hier ist es ein 
Energiespektrum aus Zerfallsenergien. Also nach rechts ist die 
Zerfallsenergie aufgetragen. Aber weil die hier er Höhe eines Impulses 
entspricht kann man auch sagen nach rechts ist die Höhe/Maximum der 
Impulse aufgetragen. Wenn also ein Bin im Spektrum bei x den Wert n hat, 
dann hab es während der Messzeit also n Impulse mit dem Höhe/Maximum x.

Frank K. schrieb:
> Du hast also ein unterabgetastetes Signal

Nein.

Mein Signal sind Impulse die ab und zu kommen und eine Breite von 10 ns 
bis 20 ns haben. Das ist vor dem ADC auf ca. 300 MHz begrenzt und wird 
mit 1 GSample/s abgetastet. 10 ns bis 20 ns sind eher 100 MHz bis 50 MHz 
Grundfrequenz in den Impulsen, aber die haben noch Buckel dran die ich 
auch digitalisieren möchte, daher die ca. 300 MHz.

Zum Verständnis:

So ein Impuls ist 10 ns bis 20 ns lang, analog. Jetzt hat der aber nur 
zu genau einem Zeitpunkt sein Maximum.
Ich taste das mit 1 GSample/s ab und bekomme 10 bis 20 Abtastwerte. Dann 
ist es sehr unwahrscheinlich, dass einer der Abtastwerte exakt das 
Maximum des analogen Signals repräsentiert. Exakt wird man das sowieso 
nur selten schaffen, aber wenn man die Abtastrate virtuell erhöht, dann 
ist der maximale Abtastwert statistisch näher an dem echten Maximum. 
Einfach weil die Zeitabstände zwischen den Abtastwerten kleiner werden.

von Detlef _. (detlef_a)


Lesenswert?

Das hab ich hier

>>>>>>https://www.matheplanet.de/matheplanet/nuke/html/viewtopic.php?topic=201773&start=0&lps=1496653#v1496653

mal die Kundigen gefragt. Die Antwort

|f(t)| < sqrt(2*B*E), B Bandbreite, E Energie

hab ich nicht nachvollziehen können, nicht ausprobiert und auch nicht 
geglaubt.

>>>ist der maximale Abtastwert statistisch näher an dem echten Maximum.
Einfach weil die Zeitabstände zwischen den Abtastwerten kleiner werden.

Nein. Wenn Du viermal 3.14 sagst bist Du doch auch nicht näher bei pi ?!

Cheers
Detlef

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Detlef _. schrieb:
> Nein. Wenn Du viermal 3.14 sagst bist Du doch auch nicht näher bei pi ?!

Natürlich nicht. Wenn alle Abtastwerte - wie in deinem Beispiel - 
konstant sind, dann braucht man das nicht und Upsampling ändert dann 
auch genau nix.

Aber hier geht es NICHT um konstante Abtastwerte (das wäre 
Gleichspannung, da bräuchte ich keinen schnellen ADC), sondern um 
Impulse.
Und da macht Upsampling tatsächlich, dass man näher an das Maximum 
kommt.

Im Anhang ein paar Bildchen:

4GHz_upsample.png
Zeigt eine Periode eines Sinus ohne Upsampling und mit Upsampling (das 
ist simuliert).

puls_roh.png
Zeigt wie die Impulse aussehen wenn die direkt vom ADC kommen, echte 
Messwerte, mehrere Impulse überlagert.

puls_fir.png
Zeigt Impulse nach dem Upsampling und Filerung auf virtuelle 4 
GSample/s. Das sind ebenfalls echte Messwerte, aber andere Impulse als 
im anderen Bildchen. Wie man sieht ist das schön glatt und man kommt 
näher ans Maximum.

: Bearbeitet durch User
von Dergute W. (derguteweka)


Lesenswert?

Moin,

Wie schauen denn deine Impulse aus, die du da aktuell anguckst? Sind das 
abklingende e-Funktionen oder was gaussfoermiges oder nochwas anderes?

Gruss
WK

von Gustl B. (-gb-)


Lesenswert?

Siehe Bildchen.
Dergute W. schrieb:
> Sind das
> abklingende e-Funktionen

Einigermaßen. Das sind die Impulse aus der Anode eines Photomultipliers.

Und nochmal als Erklärung:
Diese Zacken mit einer Frequenz im Energiespektrum bedeuten, dass im 
gefilterten Signal wie hier puls_fir.png zu sehen manche 
Höhen/Amplituden der Impulse wahrscheinlicher/häufiger sind und manche 
weniger. Und das sollte nicht sein.

Klar, weil das radioaktiver Zerfall ist sind tatsächlich manche 
Höhen/Amplituden häufiger, aber nicht mit dem Abstand von 32 (8) sondern 
so wie in gleitender_Mittelwert.png zu sehen.

: Bearbeitet durch User
von Egon D. (Gast)


Lesenswert?

Detlef _. schrieb:

> Interessant. Hab ich mich auch mal gefragt: Wie
> kriegt man aus abgetasteten Signalen, die Nyquist
> erfüllen, den Maximalwert? Keine Lösung gefunden.

Ich kann Dir nicht folgen.

Es gilt ja wohl die Aussage, dass der Verlauf ZWISCHEN
den Abtastpunkten durch die (Summe der) Stoßantwort(en)
des AA-Filters festgelegt ist.

Also wird man wohl mit ebendieser Stoßantwort
(näherungsweise) interpolieren und die Extrema dieser
Interpolanten bestimmen müssen...

Was übersehe ich?

von Gustl B. (-gb-)


Lesenswert?

Egon D. schrieb:
> Also wird man wohl mit ebendieser Stoßantwort
> (näherungsweise) interpolieren und die Extrema dieser
> Interpolanten bestimmen müssen...

Exakt so habe ich das auch verstanden. Was ich nicht verstehe ist, wieso 
im gefilterten Signal manche Maximalwerte der Impulse wahrscheinlicher 
sind als andere. Welche Eigenschaft/mathematisches Detail eines 
Filters/Implementation von dem Xilinx FIR IP führt dazu, dass das so 
ist?

Ich würde gerne hören, dass das nicht am Filter liegen kann, sondern an 
dem IP von Xilinx liegt^^ dann würde ich selber einen paralelisierten 
FIR schreiben. Aber bisher glaube ich einfach, dass Xilinx das mit dem 
FIR schon richtig macht.

: Bearbeitet durch User
von Detlef _. (detlef_a)


Lesenswert?

>>Aber hier geht es NICHT um konstante Abtastwerte (das wäre
>>Gleichspannung, da bräuchte ich keinen schnellen ADC), sondern um
>>Impulse.
>>Und da macht Upsampling tatsächlich, dass man näher an das Maximum
>>>kommt.

Du wiederholst die vier Abtastwerte. Das bringt nix Neues.

>>>Es gilt ja wohl die Aussage, dass der Verlauf ZWISCHEN
>>>den Abtastpunkten durch die (Summe der) Stoßantwort(en)
>>>des AA-Filters festgelegt ist.

Ja genau. Die Summe bestimmen, Ableitung 0 setzen, die Maxima bestimmen, 
das größte raussuchen. So gehts' theoretisch, aber wie praktisch?

Cheers
Detlef

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Gustl B. schrieb:
>> Sind das
>> abklingende e-Funktionen
>
> Einigermaßen. Das sind die Impulse aus der Anode eines Photomultipliers.

Dann wuerd' ich sagen: Du hast schlechte Karten. Kleines Beispiel:
"In echt" sieht dein Eingangssignal z.b. mal so aus:
[0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1]
Du haettest jetzt also gerne den Wert 1024 an Information aus diesen 
Samples gezogen.

Jetzt ist dein Wandler aber langsamer, also kriegt der nur jedes 4. 
Sample mit. Also je nach Zeitpunkt kriegst du dann solche Werte 
tatsaechlich in deinem System nach dem ADC - welche der 4 haengt jetzt 
nur vom Zufall, bzw. dem Zeitpunkt der Wandlung deines Wandlers ab:
1
downsample([0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1],4,0)
1
downsample([0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1],4,1)
1
downsample([0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1],4,2)
1
downsample([0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1],4,3)
Also jedes dieser Ergebnisse kann also potentiell rauskommen, wenn die 
Originalfolge am ADC Eingang ansteht.
Aber wie willst du da rausfinden, was tatsaechlich am Eingang anstand?
1
downsample([0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1],4,2)
2
ans =
3
4
     0   256    16     1
Ist ja das selbe Ergebnis wie:
1
downsample([0,0,0,0,512,256,128,64,32,16,8,4,2,1,0],4,1)
2
ans =
3
4
     0   256    16     1

Nur war diesmal der Originalimpuls halt nur halb so hoch...
Da kannst du wieder upsamplen wie du willst, die Information kriegst du 
nicht raus, weil dein e-Impuls immer hoeher und frueher angefangen haben 
koennte oder niederige und spaeter - und beides fuehrt zu den selben 
Samples.

Gruss
WK

von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Detlef _. schrieb:
>> Bei einem Spektrum ist nach rechts die Frequenz
>> aufgetragen
>
> Spektrum ist ein sehr allgemeiner Begriff.

Naja, die übliche Bedeutung hängt auch von der
Fachrichtung ab. Unter einer "Spektralnorm" oder
dem "Spektrum einer Matrix" kann sich der Techniker
i.d.R. auch nix vorstellen...

Wenn wir HIER über eine Häufigkeitsverteilung
diskutieren, würde ich vorschlagen, sie auch
"Häufigkeitsverteilung" oder meinetwegen "Histogramm"
zu nennen.


Gustl B. schrieb:
> aber wenn man die Abtastrate virtuell erhöht,

Bei allem Respekt -- aber ich finde diesen inflationären
Gebrauch von "virtuell" furchtbar. Entweder die Abtast-
rate IST erhöht, oder sie ist NICHT erhöht -- eine
"scheinbare" Erhöhung ist... naja. Lassen wir das.


> dann ist der maximale Abtastwert statistisch näher
> an dem echten Maximum. Einfach weil die Zeitabstände
> zwischen den Abtastwerten kleiner werden.

Wir haben das, glaube ich, schon mal diskutiert, und
ich glaube mich zu erinnern, dass ich das schon damals
Murx fand... :)

Die Stoßantwort des AA-Filters muss sich durch irgendwas
gut Handhabbares approximieren lassen, z.B. durch einen
Spline.
Von dem Spline sollte man analytisch das Extremum des
mittleren Segmentes berechnen können, so dass man im
Endeffekt Höhe (und ggf. zeitliche Lage) dieses Extremums
als Funktion der k Abtastwerte erhält.
Als Input verwendet man natürlich die ORIGINALEN Abtast-
werte, nix Hochgesampeltes.

von Egon D. (Gast)


Lesenswert?

Detlef _. schrieb:

>>>>Es gilt ja wohl die Aussage, dass der Verlauf ZWISCHEN
>>>>den Abtastpunkten durch die (Summe der) Stoßantwort(en)
>>>>des AA-Filters festgelegt ist.
>
> Ja genau. Die Summe bestimmen, Ableitung 0 setzen, die
> Maxima bestimmen, das größte raussuchen. So gehts'
> theoretisch, aber wie praktisch?

Exakte Summe durch Spline-Interpolation von k aufeinander-
folgenden Abtastpunkten ersetzen (die Fehlerabschätzung
wird dem Praktikanten als Übungsaufgabe überlassen :),
analytisch ableiten, Extremum als Funktion der k Stütz-
stellen darstellen. Das wäre zumindest mein hemdsärmeliger
Ansatz.

So ähnlich wie bei den Integrationsverfahren höherer
Ordnung, nur eben umgedreht -- nicht für die Fläche,
sondern für das Extremum.

von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Was ich nicht verstehe ist, wieso im gefilterten
> Signal manche Maximalwerte der Impulse wahrscheinlicher
> sind als andere. Welche Eigenschaft/mathematisches
> Detail eines Filters/Implementation von dem Xilinx
> FIR IP führt dazu, dass das so ist?

Das kann ich leider nicht beantworten -- ich vermute
aber, dass es sich um einen mathematisch sehr grund-
sätzlichen Effekt handelt: Ich habe mit der
rechnerischen Schärfung von Digitalbildern (Dekonvo-
lution) experimentiert und dabei auch festgestellt, dass
die Schärfung Artefakte in der Häufigkeitsverteilung
hervorruft, die ich nicht erklären kann. Es entstehen
lokale Häufigkeitsmaxima und Minima.

Es liegt aber nicht (offensichtlich) an der Numerik
der Dekonvolution, denn das Verfahren konvergiert
ausreichend gut, und rein subjektiv ist der Effekt
auf das Bild absolut überzeugend.


> Ich würde gerne hören, dass das nicht am Filter liegen
> kann, sondern an dem IP von Xilinx liegt^^

Hehe... das kann ich mir vorstellen! :)

von Gustl B. (-gb-)


Lesenswert?

Detlef _. schrieb:
> Du wiederholst die vier Abtastwerte. Das bringt nix Neues.

Da noch nicht. Aber danach wird das Tiefpass gefiltert. Und das bringt 
Neues.

Detlef _. schrieb:
> Ja genau. Die Summe bestimmen, Ableitung 0 setzen, die Maxima bestimmen,
> das größte raussuchen. So gehts' theoretisch, aber wie praktisch?

Praktisch nimmt man einen FIR Filter, lädt da die Koeffizienten für 
einen Tiefpass rein und dann macht man die Maximumerkennung auf dem 
Tiefpass gefilterten Signal.

Dergute W. schrieb:
> Jetzt ist dein Wandler aber langsamer, also kriegt der nur jedes 4.
> Sample mit.

Nein, so krass ist das nicht wie in deinem Beispiel. Ich bekomme schon 
ein paar mehr Abtastwerte, nämlich so 10 bis 20. Und welche Werte der 
Impuls in echt hat ist unklar - jedenfalls hat der in echt unendlich 
viele Werte, nicht nur viermal so viele.

Dergute W. schrieb:
> weil dein e-Impuls immer hoeher und frueher angefangen haben
> koennte oder niederige und spaeter - und beides fuehrt zu den selben
> Samples.

Das ist nur in deinem Beispiel weil du einen nicht bandbreitenbegrenzten 
e-Impuls verwendest. Bei mir ist der aber bandbreitenbegrenzt.

Egon D. schrieb:
> Wenn wir HIER über eine Häufigkeitsverteilung
> diskutieren, würde ich vorschlagen, sie auch
> "Häufigkeitsverteilung" oder meinetwegen "Histogramm"
> zu nennen.

Dann nennen wir das doch so wie man es üblicherweise tut: 
Zerfallsspektrum

Jedes Spektrum ist eine Häufigkeitsverteilung. Ob das jetzt Frequenzen 
sind, deren Häufigkeiten/Amplituden aufgetragen werden oder irgendwelche 
anderen Dinge ist egal.

Egon D. schrieb:
> ntweder die Abtast-
> rate IST erhöht, oder sie ist NICHT erhöht

Die Abtastrate des ADCs ist natürlich nicht erhöht. Im FPGA wird sie 
durch Samplestuffing erhöht.

Egon D. schrieb:
> dass ich das schon damals
> Murx fand... :)

Mag sein, aber so richtig begründen kannst du das offensichtlich auch 
nicht.

Egon D. schrieb:
> Die Stoßantwort des AA-Filters muss sich durch irgendwas
> gut Handhabbares approximieren lassen, z.B. durch einen
> Spline.

Klar, so könnte man das machen. Und welche Implementierung schlägst du 
vor die die Datenrate in Echtzeit schafft?

Upsampling durch Samplestuffing und danach eine Tiefpassfilterung ist 
eine Interpolation. Dadurch kommt man näher an die tatsächlichen Werte 
eines bandbreitenbegrenzten Signals.

Ich will da jetzt auch keine Grundsatzdiskussion führen ob mein Ansatz 
Sinn macht oder nicht. Ich möchte verstehen wieso hinter einem 
upgesampleten und gefilterten Signal manche Maximumwerte häufiger sind 
als andere.

Egon D. schrieb:
> ich vermute
> aber, dass es sich um einen mathematisch sehr grund-
> sätzlichen Effekt handelt: Ich habe mit der
> rechnerischen Schärfung von Digitalbildern (Dekonvo-
> lution) experimentiert und dabei auch festgestellt, dass
> die Schärfung Artefakte in der Häufigkeitsverteilung
> hervorruft, die ich nicht erklären kann. Es entstehen
> lokale Häufigkeitsmaxima und Minima.

Genau das vermute ich ebenfalls, aber ich wüsste auch gerne wieso das so 
ist.
Hier bekomme ich ja auch lauter Artefakte, nur eben nicht in 2D wie in 
einem Bild, sondern in 1D. Aber fein, wenn du sowas auch beobachten 
konntest.

: Bearbeitet durch User
von Egon D. (Gast)


Lesenswert?

Dergute W. schrieb:

> Dann wuerd' ich sagen: Du hast schlechte Karten.
> Kleines Beispiel: "In echt" sieht dein Eingangssignal
> z.b. mal so aus:
> [0,0,0,0,1024,512,256,128,64,32,16,8,4,2,1]
> Du haettest jetzt also gerne den Wert 1024 an Information
> aus diesen Samples gezogen.

Ein Signal mit einer "unendlich" steilen Flanke ist
ziemlich sicher nicht bandbegrenzt. Wir brauchen also
nicht weiter zu diskutieren, weil bei Abtastung nicht
bandbegrenzter Signale das Abtasttheorem sowieso nicht
gilt.

Warum nur wird ZWANGHAFT das Abtastfilter ignoriert?

von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Egon D. schrieb:
>> dass ich das schon damals Murx fand... :)
>
> Mag sein, aber so richtig begründen kannst du
> das offensichtlich auch nicht.

Natürlich nicht -- hätte ich es gekonnt, hätte ich
die Begründung schon damals geschrieben.

Es ist halt nur so, dass ich schon früher die
Erfahrung gemacht habe, dass man durch subjektive
"Verschönerung" von Messwerten ganz fix Artefakte
produziert, die man nicht erklären kann -- die aber
von jetzt an auf Dauer in den "Messwerten" stecken.

Deswegen bin ich da skeptisch...


> Egon D. schrieb:
>> Die Stoßantwort des AA-Filters muss sich durch irgendwas
>> gut Handhabbares approximieren lassen, z.B. durch einen
>> Spline.
>
> Klar, so könnte man das machen. Und welche Implementierung
> schlägst du vor die die Datenrate in Echtzeit schafft?

Noch gar keine -- vor der Implementierung kommt erstmal
die theoretische Klärung, OB das so klappt, und WIE man
es machen muss.


> Upsampling durch Samplestuffing und danach eine
> Tiefpassfilterung ist eine Interpolation.

Ja -- aber:

1. Ich nehme an, Du hast das Augenmerk nicht darauf
   gerichtet, dass die Stossantwort Deines Tiefpasses
   identisch ist mit der des AA-Filters, oder?
   Es entsteht also ein Interpolationsfehler.

2. Du kommst zwar NÄHER an das Maximum heran, triffst
   es aber i.d.R. auch nicht --> zweite Fehlerquelle.


> Dadurch kommt man näher an die tatsächlichen Werte
> eines bandbreitenbegrenzten Signals.
>
> Ich will da jetzt auch keine Grundsatzdiskussion
> führen ob mein Ansatz Sinn macht oder nicht.

Naja, das habe ich schon damals nicht verstanden:
Wenn man solches Zeug macht wie Du, dann kann man die
Mathematik doch gar nicht so sehr hassen, dass man
nicht wenigstens versuchen würde, durch vier Punkte
eine kubische Parabel zu legen, davon die Ableitung
zu bestimmen, die entstehende quadratische Gleichung
zu lösen und schließlich das Extremum zu berechnen.
(Das alles natürlich mit den originalen Messwerten,
nicht den upgesampelten.)

Du BESTEHST darauf, dort zu suchen, wo es hell ist,
und nicht dort, wo Du den Groschen verloren hast.


> Egon D. schrieb:
>> ich vermute
>> aber, dass es sich um einen mathematisch sehr grund-
>> sätzlichen Effekt handelt: Ich habe mit der
>> rechnerischen Schärfung von Digitalbildern (Dekonvo-
>> lution) experimentiert und dabei auch festgestellt, dass
>> die Schärfung Artefakte in der Häufigkeitsverteilung
>> hervorruft, die ich nicht erklären kann. Es entstehen
>> lokale Häufigkeitsmaxima und Minima.
>
> Genau das vermute ich ebenfalls, aber ich wüsste auch
> gerne wieso das so ist.
> Hier bekomme ich ja auch lauter Artefakte, nur eben
> nicht in 2D wie in einem Bild, sondern in 1D. Aber
> fein, wenn du sowas auch beobachten konntest.

Mir ist klar, dass Dir das nur bedingt weiterhilft,
aber ich habe, wie schon geschrieben, solche Effekte
auch beobachtet. Das Schlimmste ist, dass ich zu
wenig von Statistik verstehe, um eine passable Idee
zu haben, wo man mit Suchen anfangen muss.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Egon D. schrieb:
> Warum nur wird ZWANGHAFT das Abtastfilter ignoriert?

Ganz einfach: Weil ich hier nix darueber lese.
Das kann wiederum 2 Gruende haben:
1.) Ich hab's ueberlesen.
2.) Es steht tatsaechlich nix da.

Gruss
WK

von Egon D. (Gast)


Lesenswert?

Dergute W. schrieb:

> Egon D. schrieb:
>> Warum nur wird ZWANGHAFT das Abtastfilter ignoriert?
>
> Ganz einfach: Weil ich hier nix darueber lese.
> Das kann wiederum 2 Gruende haben:
> 1.) Ich hab's ueberlesen.
> 2.) Es steht tatsaechlich nix da.

Okay, stattgegeben.

Die Diskussion über Gustls Radioaktivitätsgeschichte
flammt alle halbe Jahre mal wieder auf; mir war noch
erinnerlich, dass die Frage der Bandbegrenzung auch
schon durchgehechelt und halbwegs positiv beantwortet
wurde. Die Zählrohrimpulse können bauartbedingt nicht
beliebig kurz werden, so dass eine Bandbegrenzung
einigermaßen als gegeben angesehen werden kann.
Konntest Du natürlich nicht wissen...

von Gustl B. (gustl_b)


Lesenswert?

Gustl B. schrieb:
> Mein Signal sind Impulse die ab und zu kommen und eine Breite von 10 ns
> bis 20 ns haben. Das ist vor dem ADC auf ca. 300 MHz begrenzt und wird
> mit 1 GSample/s abgetastet. 10 ns bis 20 ns sind eher 100 MHz bis 50 MHz
> Grundfrequenz in den Impulsen, aber die haben noch Buckel dran die ich
> auch digitalisieren möchte, daher die ca. 300 MHz.

Ja, ist bandbreitenbegrenzt.

von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Tja und das sieht nicht gut aus. Ich bekomme seine
> seltsame Frequenz im Spektrum. Das sieht also so
> aus als wären nach Upsampling und Filterung manche
> Maximalwerte wahrscheinlicher und manche nicht.

Ich glaube, ich hatte eben eine Eingebung...

Abschweifung: Ich denke, es könnte sich lohnen, eine
geisteswissenschaftliche Dissertation o.ä. zum Thema
"Die Bedeutung des Badezimmers für den Fortschritt
in Wissenschaft und Technik" zu verfassen.
Zum Beispiel berichtete der NASA-Ingenieur, der die
bahnbrechende Idee zur Rettung des Weltraumteleskops
"Hubble" hatte, dass ihm die zündende Idee unter der
Dusche im Hotel kam.
Der Entstehungsort meines nachfolgend dargestellten
Einfalls soll aus Gründen des Anstandes dennoch
verschwiegen werden...


Also: Einfaches Upsampling (durch Wiederholen von
Abtastpunkten) verändert die Häufigkeitsverteilung
nicht, SOFERN die Wortbreite dabei erhalten bleibt.

Natürlich ändern sich im Histogramm alle ABSOLUTEN
Häufigkeiten, denn wenn z.B. Upsampling um Faktor 4
durchgeführt wird, steigt natürlich die Besetzung
jeder Klasse um ebendiesen Faktor 4, und auch die
Gesamtzahl an Messwerten wird um diesen Faktor größer.
Die relative VERTEILUNG auf die Klassen bleibt aber
gleich.

Wenn aber gleichzeitig die WORTBREITE erhöht wird,
ÄNDERT sich jedoch das Histogramm -- von den z.B.
10 Bit jedes Messwertes sind ja nur die obersten 8
signifikant, so dass auf eine Klasse im Histogramm,
die tatsächlich Messwerte enthält (deren unterste
beiden Bits immer "00" sind), immer drei Klassen
folgen, die leer sind -- nämlich die Klassen mit
den Bits "01", "10" und "11" unten.

Nimmt man das Upsampling einfach durch Wiederholen
von Werten vor, sind die eingefügten Werte
(trivialerweise) zeitlich stark korreliert -- sie
folgen nämlich direkt aufeinander.

Infolge dieser zeitlichen Korrelation entsteht im
Frequenzspektrum also eine falsche Linie mit der
Frequenz fs/4, und wenn der folgende Tiefpass bei
dieser Frequenz nicht gerade eine Nullstelle hat,
findet sich diese Frequenz -- wenn auch abgeschwächt --
im geglätteten gefilterten Signal wieder.

Soll heißen: Wenn schon die Ungleichverteilung
innerhalb der GESAMTMENGE der Messwerte nicht
vollständig unterdrückt wurde, dann ist es kein
Wunder, dass auch die MAXIMA ungleich verteilt
sind -- sie sind ja nur eine TEILMENGE aller
Messwerte.

Mögliche Abhilfe: Man nimmt das Upsampling nicht durch
einfaches Wiederholen vor, sondern interpoliert linear:
Aus der Folge "a_alt, a_neu" wird nicht einfach die
Folge "a_alt, a_alt, a_alt, a_alt, a_neu, ..." gemacht,
sondern "a_alt, (3*a_alt+1*a_neu)/4, (2*a_alt+2*a_neu)/4,
(1*a_alt+3*a_neu)/4, a_neu".

von Detlef _. (detlef_a)


Lesenswert?

Egon D. schrieb:
> Exakte Summe durch Spline-Interpolation von k aufeinander-
> folgenden Abtastpunkten ersetzen

Spline Interpolation ist kein Modell für ein Anti-Aliasing Filter oder 
ein Rekonstruktionsfilter. Für die Anwendung von Splines gibt es null 
physikalische Evidenz. Da kommt dann irgendwas raus, 42 oder so.

Cheers
Detlef

von Gustl B. (gustl_b)


Lesenswert?

Gute Idee! Was dagegen spricht:

Beim Upsampling wird die Breite nicht erhöht. Aber im FIR wird die 
erhöht. Da gehen die Samples mit 8 Bit und die Koeffizienten mit 16 Bit 
rein. Vom Ergebnis nehme ich die 13 MSBs.

Dann kann man das im Xilinx FIR auch als Interpolationsfilter bauen 
lassen. Da mache ich selber also gar kein Upsampling, sondern das macht 
das Filter. Irgendwie. Das Ergebnis hat die gleichen Fehler.

Die Idee ist aber erstmal super, ich gucke mal in die 
Hardwarebeschreibung, vielleicht habe ich da ja Fehler.

von Egon D. (Gast)


Lesenswert?

Detlef _. schrieb:

> Egon D. schrieb:
>> Exakte Summe durch Spline-Interpolation von k
>> aufeinanderfolgenden Abtastpunkten ersetzen
>
> Spline Interpolation ist kein Modell für ein
> Anti-Aliasing Filter oder ein Rekonstruktionsfilter.

Erstens war das Stichwort "Spline" nur ein Vorschlag,
weil man für die Berechnung des Extremums die erste
Ableitung braucht -- und die ist bei einem kubischen
Spline halt eine quadratische Funktion, die sich noch
vernünftig lösen lässt.


> Für die Anwendung von Splines gibt es null
> physikalische Evidenz.

Zweitens ist mir nicht klar, was ich Dir getan habe,
dass Du dermaßen angefressen reagierst. Für das Nähern
des Sinus durch eine Gerade gibt es auch keinerlei
PHYSIKALISCHE Evidenz -- trotzdem ist es unter den
passenden Randbedingungen (nämlich für kleine Winkel)
gängige Praxis. Das ist, wie jede Approximation, eine
rein MATHEMATISCHE Sache.

von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Beim Upsampling wird die Breite nicht erhöht. Aber
> im FIR wird die erhöht.

Naja, zumindest für Faktor-2-Upsampling kannst Du
das leicht selbst ausprobieren: Nicht einfach
jeden Wert zweimal ausgeben, sondern die Folge
"2*a_alt, a_alt+a_neu, 2*a_neu, ..." verwenden.

Da die Messwerte, wie Du oben schreibst, ohnehin nur
7 Bit haben, hast Du das LSB ja noch zur Verfügung...

von Jan (Gast)


Lesenswert?

Kp ob es hilft, aber diese ganze spline Geschichte kann man auch direkt 
als fir Filter verpacken, sogar als fertig abgeleitete Funktion. Nennt 
sich savitzky golay Filter.

von Mario H. (rf-messkopf) Benutzerseite


Lesenswert?

Gustl B. schrieb:
> Kann mir jemand erklären wieso da bei jeweils 32 (8) Bins manche
> wahrscheinlicher/häufiger sind und manche nicht und wie ich das
> vermeiden kann?

Leider nicht -- auf den ersten Blick und ohne groß darüber nachgedacht 
zu haben finde ich das erstaunlich. Wenn man davon ausgeht, dass die 
Impulse im wesentlichen gleich aussehen und sich nur in der Höhe 
unterscheiden, d.h. durch einen Faktor, dann sollten sich auch die 
Impulse hinter dem Upsampler und Filter nur durch diesen Faktor 
unterscheiden (und insbesondere deren Höhe), da es sich um lineare 
Operationen handelt. Zumindest in der Theorie.

Hast Du mal versucht, Impulse z.B. aus einem Impulsgenerator einzeln 
einzuspeisen, deren Höhe Du variieren kannst? Die gemessene Höhe sollte 
dann ja nichtlinear von der tatsächlichen Höhe abhängen.

Jan schrieb:
> Kp ob es hilft, aber diese ganze spline Geschichte kann man auch direkt
> als fir Filter verpacken, sogar als fertig abgeleitete Funktion. Nennt
> sich savitzky golay Filter.

Man könnte vielleicht auch eine sin(x)/x-Interpolation machen, wie in 
Digitaloszilloskopen. Das geht meines Wissens nach auch als FIR-Filter. 
Das kommt der Shannon-Whittaker-Rekonstruktion am nächsten: wenn x(t) 
das zeitkontinuierliche Signal ist und x_n = x(nT) die Samples sind, 
dann gilt bekanntlich
für ein bandbegrenztes Signal mit Bandbreite kleiner 1/2T. Das kann man 
mit endlich vielen Samples machen und so x(t) an beliebigen Punkten 
auswerten (das ist immer eine Approximation, weil ein bandbegrenztes 
Signal zeitlich notwendig unbegrenzt ist). Die 
Signalverarbeitungsexperten können zur Implementierung sicher mehr 
sagen.

von Detlef _. (detlef_a)


Lesenswert?

Egon D. schrieb:
> Erstens war das Stichwort "Spline" nur ein Vorschlag,
> weil man für die Berechnung des Extremums die erste
> Ableitung braucht -- und die ist bei einem kubischen
> Spline halt eine quadratische Funktion, die sich noch
> vernünftig lösen lässt.
>
>> Für die Anwendung von Splines gibt es null
>> physikalische Evidenz.
>
> Zweitens ist mir nicht klar, was ich Dir getan habe,
> dass Du dermaßen angefressen reagierst. Für das Nähern
> des Sinus durch eine Gerade gibt es auch keinerlei
> PHYSIKALISCHE Evidenz -- trotzdem ist es unter den
> passenden Randbedingungen (nämlich für kleine Winkel)
> gängige Praxis. Das ist, wie jede Approximation, eine
> rein MATHEMATISCHE Sache.

Lieber Egon, ich bin absolut nicht angefressen. Ich schätze Deine 
Beiträge sehr, die lese ich immer und bewege Sie in meinem Herzen und 
Kopf :) . Ich glaube, ich muss mal an meiner Aussenwirkung arbeiten, mir 
war nicht bewußt, daß das nicht so rüberkommt wie gedacht, sry. Und ja, 
Splines als Interpolation sind genauso unevident wie Geraden ;).

Cheers
Detlef

von Gustl B. (-gb-)


Lesenswert?

Mario H. schrieb:
> Hast Du mal versucht, Impulse z.B. aus einem Impulsgenerator einzeln
> einzuspeisen, deren Höhe Du variieren kannst? Die gemessene Höhe sollte
> dann ja nichtlinear von der tatsächlichen Höhe abhängen.

Tja so einen Generator habe ich leider nicht.

Egon D. schrieb:
> Infolge dieser zeitlichen Korrelation entsteht im
> Frequenzspektrum also eine falsche Linie mit der
> Frequenz fs/4, und wenn der folgende Tiefpass bei
> dieser Frequenz nicht gerade eine Nullstelle hat,
> findet sich diese Frequenz -- wenn auch abgeschwächt --
> im geglätteten gefilterten Signal wieder.

Wie erzeugt man sich denn Koeffizienten für ein FIR das a) eine 
gewünschte Frequenzcharakteristik und b) Nullstellen an der richtigen 
Stelle hat?

Egon D. schrieb:
> Naja, zumindest für Faktor-2-Upsampling kannst Du
> das leicht selbst ausprobieren: Nicht einfach
> jeden Wert zweimal ausgeben, sondern die Folge
> "2*a_alt, a_alt+a_neu, 2*a_neu, ..." verwenden.

Das schreibe ich gerade. Danke!

Egon D. schrieb:
> Da die Messwerte, wie Du oben schreibst, ohnehin nur
> 7 Bit haben, hast Du das LSB ja noch zur Verfügung...

Ne, also es sind 8 Bits signed. Aber das SIgnal ist unipolar, also 7 
nutzbare Bits für mich. Ich filtere aber die vollen 8 Bits.

Jan schrieb:
> Nennt
> sich savitzky golay Filter.

Danke, werde ich mir mal angucken.

von Gustl B. (-gb-)


Lesenswert?

So, ich habe etwas weiter getestet.

Nicht mit richtigen Messungen weil Messzeit begrenzt und wertvoll ist, 
aber mit einem Signalgenerator. Das ist auch so ein Ding:

Meine beiden Oszis haben einen eingebaut.
Das neuere Rigol MSO5000 kann Pulse ausgeben, aber nur bis minimal 10% 
Dutycycle. Ernsthaft? Ich brauche so 100 mis macimal 1000 
Impulse/Sekunde. Und hätte gerne < 20 ns Breite. Geht also nicht? Doch. 
Man kann die Signalform auf Arb. stellen und dann selber das Signal 
editieren. Das geht aber unfassbar schlecht und das Oszi stürzt dabei 
zuverlässig reproduzierbar ab. Da geht dann nix mehr ausser der 
Neustart. Immerhin, wenn man Glück hat, dann kann man da Pulse mit um 
die 20 ns. erzeugen.

Mein älteres Oszi, ein DSO-X 2000 von Keysight kann auch Pulse und zwar 
kann man da die Breite direkt einstellen. Und zwar bis minimal 20 ns 
egal mit welcher Frequenz die Pulse ausgegeben werden. Tolle Sache! 
Leider kann man die Polarität der Pulse nicht einstellen - aber dann 
dreht man eben einfach die Breite auf das Maximum und schon ist der 
kurze Teil negativ. Geht also wunderbar und ohne Geräteabsturz.

Die Idee von Egon habe ich jetzt eingebaut und das Ergebnis überzeugt 
leider nicht. Es ist leicht besser geworden, aber nicht so gut wie ohne 
Upsampling.
Da das Ergebnis ohne Upsampling aber schon deutlich besser ist als die 
Messtechnik die hier bisher genutzt wird (bessere Energieauflösung und 
sehr viel genauere Zeitinformation) werde ich das jetzt ohne Upsampling 
verwenden.

Vielen Dank für die Wortmeldungen, ich werde irgendwann^^ die Hardware 
und Ergebnisse vorstellen im dafür vorgesehenen Unterforum.

von mh (Gast)


Lesenswert?

Gustl B. schrieb:
> So, ich habe etwas weiter getestet.
>
> Nicht mit richtigen Messungen weil Messzeit begrenzt und wertvoll ist,
> aber mit einem Signalgenerator. Das ist auch so ein Ding:

Wie wärs, wenn du mit Zettel und Stift, oder einem Pythonskript testest?

von Gustl B. (-gb-)


Lesenswert?

mh schrieb:
> Wie wärs, wenn du mit Zettel und Stift, oder einem Pythonskript testest?

Gute Idee, aber wie soll ich das umsetzen?

Im Spektrum sieht man diese periodischen Zacken, wenn die Statistik gut 
wird, also die Anzahl je Bin hoch ist. Sagen wie so ab 100/Bin. Bei 
mehreren vielen Bins sind das dann auch gleich sehr große Anzahlen an 
analogen Impulsen die ich simulieren müsste. Tja, das war mir dann zu 
mühsam. Vor allem weiß ich aber auch nicht was mir das Ergebnis dann 
bringt. Wenn ich sehe, dass die Simulation in Python gut aussieht. Tja. 
Dann weiß ich, dass das irgendwie durch den Xilinx IP kommt. Wenn es 
schlecht aussieht, dann weiß ich nicht mehr wie jetzt.

von mh (Gast)


Lesenswert?

Gustl B. schrieb:
> Tja, das war mir dann zu mühsam.
Ich gehe davon aus, dass du weißt wie die Signale theoretisch aussehen 
sollen und wie sie tatsächlich aussehen. Wenn nicht musst du das zuerst 
rausfinden.

Wenn du weißt, wie die Signale aussehen sollen, ist das Erzeugen in 
Software der einfache Teil. Und wenn du drei erzeugen kannst, ist der 
Schritt zu 3 Millionen sehr sehr klein.

Danach jeden Filter nacheinander einzeln in Software nachbilden, auf die 
Testsignale anwenden und idealerweise testen, ob die Ergebnisse mit der 
Realität übereinstimmen.

> Vor allem weiß ich aber auch nicht was mir das Ergebnis dann
> bringt. Wenn ich sehe, dass die Simulation in Python gut aussieht. Tja.
> Dann weiß ich, dass das irgendwie durch den Xilinx IP kommt. Wenn es
> schlecht aussieht, dann weiß ich nicht mehr wie jetzt.

Kann man den Xilinx IP nich in Software am PC testen? Oder ist 
wenigstens irgendwo beschrieben, welche Operation er genau durchführt, 
so dass man ihn in Software selbst nachbauen kann?

von Gustl B. (-gb-)


Lesenswert?

mh schrieb:
> Wenn du weißt, wie die Signale aussehen sollen, ist das Erzeugen in
> Software der einfache Teil. Und wenn du drei erzeugen kannst, ist der
> Schritt zu 3 Millionen sehr sehr klein.

Na klar kann ich das machen, aber wo ist der Mehrwert gegenüber der 
Implementierung in Hardware?
Ich habe das in Hardware gemacht, verschiedene Möglichkeiten für 
Upsampling und Filterung, und das dann jeweils mit echten analogen 
Signalen getestet. Weil es nur um die Höhe des Pulses geht ist das 
genaue aussehen egal. Oder anders:
Wenn man solche seltsamen Häufigkeitsverteilungen auch bei anders 
aussehenden Pulsen erkennen kann, dann werden die vermutlich auch bei 
den zu messenden Pulsen da sein. Das ist ja keine Eigenschaft vom Puls, 
sondern von der Verarbeitung dahinter.

mh schrieb:
> Kann man den Xilinx IP nich in Software am PC testen?

Klar, in der Simulation. Ist aber langsam. Zumindest kenne ich da keinen 
anderen Weg als eine VHDL Testbench zu schreiben und dort sehr viele 
Pulse hineinzufüttern.

Ich vermute aber, dass es nicht am Xilinx IP liegt und auch nicht an 
einem Fehler meiner HDL Beschreibung sondern dass das was ich da sehe 
eine Eigenschaft ist die mathematisch begründbar ist und ihre Ursache im 
Upsampling hat.
Ich kann das jetzt nicht bestätigen oder widerlegen, ich habe nur 
gesehen, dass diese Fehler weg sind sobald ich Upsampling vermeide.
Upsampling und Filterung wäre nice to have, ist aber keine Pflicht. Die 
Lösung übertrift auch so schon die Erwartungen (gewünscht waren so >= 5 
Bit Auflösung, jetzt sind das ca. 7) und erfüllt meine Abbruchbedingung 
da weiter Zeit hinterher zu werfen.

von Mark B. (Gast)


Lesenswert?

Detlef _. schrieb:
> Interessant. Hab ich mich auch mal gefragt: Wie kriegt man aus
> abgetasteten Signalen, die Nyquist erfüllen, den Maximalwert? Keine
> Lösung gefunden.

Aus meiner Kenntnis heraus ist das ein Widerspruch. Entweder wird 
Nyquist (durch die Abtastung!) erfüllt oder nicht. Den Verlauf erhält 
man durch das Rekonstruktionsfilter. Auch eventuelle Spitzen zwischen 
zwei Abtastwerten.

von Gustl B. (-gb-)


Lesenswert?

Ich bin auch der meinung, dass das funktionieren müsste. In der Theorie.
In der Realität hat man nach dem Upsampling mit Samplestuffing oder 
Zerostuffing erstmal periodisch Lücken in der Häufigkeitsverteilung. Das 
Rekonstruktionsfilter sollte die einzelnen Bins sie Werte enthalten so 
"verschmieren", dass die Lcken aufgefüllt werden. Ist das 
Rekonstruktionsfilter perfekt, dann kann man dahinter nicht mehr 
erkennen wo vorher Lücken waren und wo nicht.
Tja und in der Praxis habe ich das nicht geschafft. Das FIR hatte 56 
Koeffizienten, danach waren alle DSPs belegt.
Wie man ganz oben in den Bildchen sieht hat ja eine "Verschmierung" 
schon stattgefunden. Nur eben lange nicht perfekt.
Das sind eben zei getrennte Dinge:
1. Das gefilterte Signal soll glatt aussehen.
2. Die Werte im gefilterten Signal sollen gleich häufig sein.

1. Erreicht das Filter so gut, dass es glatt aussieht. 2. ist scheinbar 
deutlich schwieriger. Glatt aussehen tut es auch wenn statistisch manche 
Stufen deutlich seltener/häufiger sind.

: Bearbeitet durch User
von mh (Gast)


Lesenswert?

Gustl B. schrieb:
> Na klar kann ich das machen, aber wo ist der Mehrwert gegenüber der
> Implementierung in Hardware?

Dann verstehe ich dein Problem nicht. Es kommt doch anscheinend nicht 
das raus was du erwartet hast.

Gustl B. schrieb:
> Ich vermute aber, dass es nicht am Xilinx IP liegt und auch nicht an
> einem Fehler meiner HDL Beschreibung sondern dass das was ich da sehe
> eine Eigenschaft ist die mathematisch begründbar ist und ihre Ursache im
> Upsampling hat.
> Ich kann das jetzt nicht bestätigen oder widerlegen, ich habe nur
> gesehen, dass diese Fehler weg sind sobald ich Upsampling vermeide.
> Upsampling und Filterung wäre nice to have, ist aber keine Pflicht.

Du weißt also nicht so wirklich was rauskommen soll?

von Gustl B. (-gb-)


Lesenswert?

mh schrieb:
> Dann verstehe ich dein Problem nicht. Es kommt doch anscheinend nicht
> das raus was du erwartet hast.

Wie so oft probiert man Dinge aus, auch Dinge die nicht zwingend 
funktionieren müssen, aber von denen es schön wäre wenn die 
funktionierten.
Um genau sowas geht es. Ich hatte die Vermutung, dass ich durch 
Upsampling und Filterung die Auflösung erhöhen kann. In der Theorie geht 
das auch. Ob es in der Praxis mit den begrenzten 
Bauteilen/Rechenleistung geht weiß ich nicht.
Es kommt auf der einen Seite das raus was ich erwartet hatte: Das 
gefilterte Signal sieht glatt aus und die Auflösung ist höher. Aber wenn 
ich von diesem Signal die Maxima nehme, dann ist das keine Verteilung 
wie ich sie erwartet hatte - und wie das theoretisch bei einem perfekten 
Rekonstruktionsfilter seien müsste - sondern manche sind 
häufiger/seltener.
Ich würde das natürlich gerne verstehen und habe daher hier gefragt. Da 
kamen gute Antworten und ich habe das mit der linearen Interpolation vor 
dem Rekonstruktionsfilter implementiert.
Lösen konnte ich das nicht, aber ich habe es verstanden oder glaube es 
verstanden zu haben. Damit bin ich zufrieden.

mh schrieb:
> Du weißt also nicht so wirklich was rauskommen soll?

Klar weiß ich was raus kommen soll wenn ich ein perfektes 
Rekonstruktionsfilter hätte. Habe ich aber nicht, leider sind meine DSP 
Slices endlich. Ich hatte gehofft, dass mein Filter ausreicht/gut genug 
ist, denn für mich sieht das gefilterte Signal schön glatt aus und in 
der FFT sind bei 4x Upsampling die Frequenzen > 1/8 der neuen virtuellen 
Samplerate schön abgeschwächt.
Ich habe da jetzt genug Zeit verwendet, glaube den Grund verstanden zu 
haben und verwende jetzt eine deutlich einfachere Lösung die auch mehr 
als gut genug ist. Aber sie ist eben schlechter als Upsampling mit 
idealem Filter.

von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Es kommt auf der einen Seite das raus was ich
> erwartet hatte: Das gefilterte Signal sieht
> glatt aus und die Auflösung ist höher. Aber wenn
> ich von diesem Signal die Maxima nehme, dann ist
> das keine Verteilung wie ich sie erwartet hatte -
> und wie das theoretisch bei einem perfekten
> Rekonstruktionsfilter seien müsste - sondern
> manche sind häufiger/seltener.

Ich habe darüber nochmal nachgedacht.

Stell Dir eine symmetrische, offsetfreie Dreiecks-
schwingung vor. Diese werde mit einem 8bit-Wandler
abgetastet; die Amplitude sei klein genug, so dass
der ADC nicht übersteuert.

Wenn man lange genug abtastet, so dass Randeffekte
keine Rolle spielen, wird das Histogramm innerhalb
der Amplitude eine Gleichverteilung zeigen und
außerhalb dieses Bereiches Null.

Jetzt schickt man diese Folge durch ein FIR-Filter
mit Hochpasscharakteristik.
Bei passender Grenzfrequenz entsteht aus dem
Dreieck eine Rechteckschwingung.

Bestimmt man aber von der Rechteckschwingung das
Histogramm, dann erhält man eine ganz ausgeprägt
bimodale Verteilung!

Die Erwartung, dass die ursprüngliche Häufigkeits-
verteilung "ungefähr" erhalten bleibt, ist also
falsch. Das liegt daran, dass es für das Histogramm
der ungefilterten Daten keine Rolle spielt, ob es
bestimmte "zeitliche Muster" gibt -- siehe das
Beispiel mit der Dreiecksschwingung. Wichtig sind
nur die reinen Häufigkeiten, d.h. die unbedingten
Wahrscheinlichkeiten für das Auftreten eines
bestimmten Wertes.

Ein Filter reagiert aber auf die zeitlichen
Strukturen im Signal, d.h. es berücksichtigt auch
zeitliche Ableitungen bzw. Integrale. So bildet
ein Hochpass u.U. die Änderung von 75 auf 72 auf
denselben Ausgangswert ab wie eine Änderung von
13 auf 10. Am Filterausgang spielen daher NICHT
NUR die unbedingten Wahrscheinlichkeiten eine
Rolle, sondern auch die BEDINGTEN.

Im einfachen Histogramm des (ungefilterten)
Eingangssignales sind aber die bedingten Wahr-
scheinlichkeiten bzw. die Verbundhäufigkeiten
überhaupt nicht zu erkennen. Wenn wir das
Histogramm der ungefilterten Eingangswerte sehen,
betrachten wir also von vornherein nur einen Teil
der Wahrheit.

Schlussfolgerung: Wir wissen jetzt immer noch nicht,
welche Ursache die beobachteten Schwankungen in der
Häufigkeit tatsächlich haben -- wir wissen jetzt aber,
dass die Erwartung, das Histogramm der gefilterten
Werte müsse "ungefähr" so aussehen wie das der
ungefilterten, nicht zutrifft. Sie ist m.E. für den
allgemeinen Fall falsch.

von Gustl B. (-gb-)


Lesenswert?

Egon D. schrieb:
> Das liegt daran, dass es für das Histogramm
> der ungefilterten Daten keine Rolle spielt, ob es
> bestimmte "zeitliche Muster" gibt -- siehe das
> Beispiel mit der Dreiecksschwingung. Wichtig sind
> nur die reinen Häufigkeiten, d.h. die unbedingten
> Wahrscheinlichkeiten für das Auftreten eines
> bestimmten Wertes.

Exakt!

Tja ... ist interessant und stimmt natürlich. Ich weiß aber nicht was 
das zu meinen Pulsen sagt.
Da ist die Zeit ja auch egal. Es interessiert nur der höchste Wert eines 
Impulses, der wird gezählt, der Rest nicht. Und da hatte ich vorher 
naiverweise vermutet/gehofft, dass bei Upsampling und 
*Tiefpass*-Filterung die Maxima feiner aufgelöst werden und sich deren 
Verteilung nicht ändert. Also dass ich ein paar Bits dazu bekomme weil 
das Ergebnis ja ein gleitender gewichteter Mittelwert ist.

Vielleicht müsste ich mir das wirklich mal simulieren. Aber welche 
Impulse nehme ich dafür? Wenn ich die rein künstlich erzeuge, dann 
entspricht das ja auch nicht dem was ich in der Realität habe. 
Vielleicht sollte ich mal viele Impulse aufnehmen. Also jeweils so 100 
Abtastwerte/Impuls und die für eine Simulation nutzen. Ist nur irre 
aufwändig ...

: Bearbeitet durch User
von Egon D. (Gast)


Lesenswert?

Gustl B. schrieb:

> Tja ... ist interessant und stimmt natürlich. Ich
> weiß aber nicht was das zu meinen Pulsen sagt.

In gerader Linie gar nix :)

Die indirekte Aussage ist aber: Man darf so nicht
argumentieren, wie wir es getan haben -- denn die
Erwartung, die Histogramme vor und nach der Filterung
müssten "ungefähr gleich" aussehen, ist durch nichts
begründet (außer durch unsere Intuition).

Es kann also sein, dass in Deiner Anordnung gar kein
Fehler steckt -- auch wenn die Resultate unerwartet
sind.


> Da ist die Zeit ja auch egal.

Sicher -- DU weisst das, aber weiss das auch Dein
FIR-Filter?

Natürlich nicht. Der reagiert auch auf zeitliche
Strukturen in den Messwerten, von deren Existenz Du
gar nix ahnst...


> Es interessiert nur der höchste Wert eines Impulses,
> der wird gezählt, der Rest nicht. Und da hatte ich
> vorher naiverweise vermutet/gehofft, dass bei
> Upsampling und *Tiefpass*-Filterung die Maxima feiner
> aufgelöst werden und sich deren Verteilung nicht
> ändert. Also dass ich ein paar Bits dazu bekomme
> weil das Ergebnis ja ein gleitender gewichteter
> Mittelwert ist.

Ja -- anschaulich ist das völlig klar und überzeugend,
was Du willst.

Ich habe ja schon von meinen gelegentlichen Experimenten
mit der Dekonvolution zur Schärfung von Graustufenbildern
erzählt. Dabei habe ich eine interessante Beobachtung
gemacht: Wenn ich ein verlustfrei gespeichertes Bild nehme,
funktioniert die Schärfung. Verwende ich aber ein Bild als
Input, das zwischendurch mal als JPG verlustbehaftet
gespeichert wurde, funktioniert die Schärfung subjektiv
ganz schlecht -- obwohl man im unbehandelten Bild noch
überhaupt keinen Qualitätsunterschied erkennt.

Meine Schlussfolgerung daraus: Die Algorithmen reagieren
auf Strukturen in den Messdaten, die der Mensch so
einfach per Augenschein nicht wahrnimmt -- die aber
nichtsdestotrotz vorhanden sind.


> Vielleicht müsste ich mir das wirklich mal simulieren.

Darauf wird es hinauslaufen.


> Aber welche Impulse nehme ich dafür? Wenn ich die rein
> künstlich erzeuge, dann entspricht das ja auch nicht
> dem was ich in der Realität habe.

Das macht ja erstmal nix. Es geht ja erstmal nur darum,
ein Gefühl dafür zu bekommen, welches Filter aus welchem
Input welchen Output macht.


> Vielleicht sollte ich mal viele Impulse aufnehmen. Also
> jeweils so 100 Abtastwerte/Impuls und die für eine
> Simulation nutzen. Ist nur irre aufwändig ...

Klar.
Genau das ist der Grund, warum meine Experimente mit der
Dekonvolution im Moment feststecken: Ich müsste erstmal
mit synthetischen Daten experimentieren, um ein Gefühl
für die ganze Sache zu bekommen, aber das schiebe ich
wegen des Aufwandes schon monatelang vor mir her...

von Gustl B. (-gb-)


Angehängte Dateien:

Lesenswert?

Egon D. schrieb:
> Es kann also sein, dass in Deiner Anordnung gar kein
> Fehler steckt -- auch wenn die Resultate unerwartet
> sind.

Stimmt.

Egon D. schrieb:
> Sicher -- DU weisst das, aber weiss das auch Dein
> FIR-Filter?
>
> Natürlich nicht. Der reagiert auch auf zeitliche
> Strukturen in den Messwerten, von deren Existenz Du
> gar nix ahnst...

Damit meinte ich, dass die einzelnen Impulse voneinander unabhängig 
sind. Das sollte auch mit Filter für jeden Impuls egal sein wie der 
vorherige Impuls aussah. Ein Impuls sind vielleicht 100 Abtastwerte, 
also 100 ns mit den Schwingern dahinter. Aber es sind nur so 10 ... 100 
Impulse/s. Zwischen je zwei Impulsen ist also sehr lange Pause, sehr 
viel länger als der FIR.

Egon D. schrieb:
> Meine Schlussfolgerung daraus: Die Algorithmen reagieren
> auf Strukturen in den Messdaten, die der Mensch so
> einfach per Augenschein nicht wahrnimmt -- die aber
> nichtsdestotrotz vorhanden sind.

Jap, sehe ich auch so.
Nach dem Upsampling/Samplestuffing gibt es ja diskrete Linien im 
Histogramm.
Nach dem Tiefpassfilter sind die Häufigkeiten dann verschmiert. Also die 
Bins zwischen denen die beim Upsampling schon da waren wurden auch 
gefüllt. Allerdings nicht so gut, dass die alle gleichmäßig gefüllt 
sind.
Für den Menschen, mich, sieht das Signal über die Zeit aber wunderbar 
glatt aus. Obwohl da ja offensichtlich weiterhin die Stufen/höhere 
Frequenzen drinnen sind.

Egon D. schrieb:
> Genau das ist der Grund, warum meine Experimente mit der
> Dekonvolution im Moment feststecken:

Dann mache ich das auch so und schiebe das vor mir her^^ nein, ich bin 
ja doch sehr zufrieden.
Im Anhang ein Bildchen dazu. Das zeigt ein Spektrum (blau, hatte ich 
schon oben gepostet). In dem sind zwei Alpha Zerfälle enthalten, Po212 
und Po214. Die passieren hinter einem Betazerfall der Mutter.
Also zuerst zerfällt die Mutter, dabei entstehen Po212 und Po214 und 
diese zerfallen dann wieder.
Das was ich da gebaut habe und weshalb ich den schnellen ADC brauchte 
war, um die Impulse zu trennen (und zwar auch wenn die nur so 30 ns 
nacheinander kommen, noch weniger wäre besser). Po212 zerfällt schon ca. 
300 ns (im Durchschnitt) nach dem Mutterzerfall. Das ist schnell und 
wenn ich da den klassischen Weg über Pulseshapingverstärker gehe, dann 
werden Mutter und Tocherzerfall zu einem Impuls geshaped. Jetzt 
digitalisiere ich direkt die Anode vom Photomultiplier, gebe jedem 
Impuls einen Zeitstempel und kann dann nachträglich filttern. Hier 
wurden alle Impulse die > 30 ns und < 500 ns nach einem vorausgehenden 
Impuls auftraten herausgefiltert und in das grüne Spektrum geschrieben. 
Alle die 3 us bis 1 ms nach einem vorausgehenden Impuls kamen wurden in 
das orangene Spektrum geschrieben.
Man kann schön sehen, dass ich die fast alle erwischt habe. Das 
Restspektrum, lila, hat nur zwei kleine Hubbel an den Stellen. Aber ist 
eben leider nicht so einfach. Meine untere Schwelle von 30 ns ist schon 
recht weit entfernt vom Mutterzerfall. Wenn die Halbwärtszeit grob 300 
ns ist, dann zerfallen doch schon einige in den ersten 30 ns.
Ausserdem reicht die Auflösung. Die Peaks im Spektrum sind nun mal so 
breit, das sind Lichtimpulse in einem Szintillator vor einem 
Photomultiplier. Je nach Ort und Richtung des Zerfalls kommt da mehr 
oder weniger Licht an - auch bei gleicher Zerfallsenergie. Bessere 
Auflösung, also mehr Bits wären zwar vielleicht schön, aber bringen 
eigentlich nix weil die Breite der Peaks im Spektrum andere Ursachen 
hat.

Edit:
Das was ich da gemacht habe machte bis ein analoger Komparator. Da 
konnte man Schwellen per Poti einstellen. Aber die waren für die Messung 
dann eben auch fest.
Meine Lösung in der jeder Impuls einen Zeitstempel erhält ist also 
flexibler weil man nachträglich mit beliebigen Bedingungen für Zeit und 
Energie filtern kann.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.