Forum: Mikrocontroller und Digitale Elektronik Rekonstruktion eines Messignals


von AD (Gast)


Lesenswert?

Guten Abend zusammen, ich habe folgende "Problemstellung"

- Mein AD Wandler Sampelt mit 200 kSps
- Mein Signal ist ein Sinus mit 1 V 180 kHz, Nyquist-Shannon ist also 
eingehalten.

Wenn ich jetzt Sample, und das ganze visualisiere, dann habe ich 
standardmäßig eine Lineare Interpolation (bei Excel) der Messwerte. Wie 
aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass 
es eben wie ein richtiger Sinus aussieht? Wie macht man so etwas in der 
Praxis?

VG Bernd

von Wolfgang (Gast)


Lesenswert?

AD schrieb:
> - Mein AD Wandler Sampelt mit 200 kSps
> - Mein Signal ist ein Sinus mit 1 V 180 kHz, Nyquist-Shannon ist also
> eingehalten.
Nein, du hast die "2" übersehen

von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Nein, du hast die "2" übersehen

war das nicht >2?
https://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem

von AD (Gast)


Lesenswert?

Ach entschuldigt, das war ein Tippfehler. Das Signal liegt bei 80 kHz.

von Meseeks (Gast)


Lesenswert?

>Wie aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass
>es eben wie ein richtiger Sinus aussieht?

Ich glaube - GLAUBE - das geht gar nicht, ohne zu wissen, welcher Art 
das Ausgangssignal war denn

1.) könnte es ja auch ein periodisches Signal gewesen sein, dass zu den 
gesampelten Momenten zufällig die selben Werte hat, wie ein Sinus

2.) ich denke, das Shanon-Theorem bewart einen nur davor, dass man 
Urpsungssignale mit ganzen Vielfachen der Ursprungsfrequenz annehmen 
kann.
Ich meine - MEINE ;> - das wenn man z.B. einen Sinus genau mit der 
doppelten Samplingrate seiner Frequenz aufnimmt, man nicht weiß, ob der 
Sinus den man in die Messwerte hineininterpretiert "eben diese Frequenz" 
oder "eben diese Frequenz * 2" hatte


Gefährliches Halbwissen - bin sehr gespannt auf weitere Antworten :)

von AD (Gast)


Lesenswert?

Also entsprechend des Theorems hätte ich gesagt, dass Sinussignale immer 
rekonstruierbar sind, wenn ich mehr als 2 Messwerte pro Periode habe 
(Nyquist) und die Amplitude des Signals kenne. Letztendlich erkenne ich 
anhand der Messwerte welche Frequenz das Signal hat und kann darüber 
doch die Sinusfunktion als Stützfunktion legen.

von Sven B. (scummos)


Lesenswert?

Entweder du addierst diese sinc-Reihe, oder (ich glaube das ist 
einfacher) du upsampelst es mit FFT. Also RFFT berechnen, soviele Nullen 
anhängen wie du möchtest (um so viel wird das Ergebnis dann 
"verfeinert"), rücktransformieren, fertig.

von Sven B. (scummos)


Angehängte Dateien:

Lesenswert?

Hier ein Beispiel für das FFT-Upsampling durch Zero-Padding, die 
Normierung stimmt nicht ganz. Ist eigentlich ein Sinus -- der Fehler 
entsteht durch die Randbedingungen.

Wenn du weißt, dass es ein Sinus ist, bekommst du mit dem Fit eines 
einzelnen Sinus genauere Ergebnisse.

: Bearbeitet durch User
von Sven B. (scummos)


Lesenswert?

Meseeks schrieb:
>>Wie aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass
>>es eben wie ein richtiger Sinus aussieht?
>
> Ich glaube - GLAUBE - das geht gar nicht, ohne zu wissen, welcher Art
> das Ausgangssignal war denn
>
> 1.) könnte es ja auch ein periodisches Signal gewesen sein, dass zu den
> gesampelten Momenten zufällig die selben Werte hat, wie ein Sinus

Dann hast du aber das Shannon-Theorem verletzt.

> 2.) ich denke, das Shanon-Theorem bewart einen nur davor, dass man
> Urpsungssignale mit ganzen Vielfachen der Ursprungsfrequenz annehmen
> kann.

Nö. ;)

von AD (Gast)


Lesenswert?

Wie sieht das denn aus, wenn ich mehrere Frequenzanteile innerhalb eines 
Signals habe ? Klappt dann die FFT, Zeropadding , Fensterung und die 
Rückrechnung dann immer noch?

von A. S. (Gast)


Lesenswert?

Du kannst den sinus dann drüberlegen. Aber er ergibt sich nicht aus den 
Messwerten, sonder ist implizit bekannt. Wenn du kleiner als 2 bist, 
passen auch andere Frequenzen.

von Sven B. (scummos)


Lesenswert?

AD schrieb:
> Wie sieht das denn aus, wenn ich mehrere Frequenzanteile innerhalb eines
> Signals habe ? Klappt dann die FFT, Zeropadding , Fensterung und die
> Rückrechnung dann immer noch?

Jo das klappt immer und ist immer die exakte Lösung.

von AD (Gast)


Lesenswert?

Prima, danke dir !

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

AD schrieb:
> Wenn ich jetzt Sample, und das ganze visualisiere, dann habe ich
> standardmäßig eine Lineare Interpolation (bei Excel) der Messwerte. Wie
> aber kann aber das Signal möglichst detailgetreu rekonsturieren, sodass
> es eben wie ein richtiger Sinus aussieht? Wie macht man so etwas in der
> Praxis?

Du hast das Rekonstruktionsfilter vergessen, ein Tiefpass. Idealerweise 
ein idealer Tiefpass. Den gibt es praktisch nicht, also ein "guter" 
Tiefpass der oberhalb der Abtastfrequenz abschneidet.

Zero-padding alleine reicht nicht, nicht bei Signalen mit beliebiger 
Form. Für korrektes Upsampling brauchst du schon einen Tiefpass.

Einfach einen Sinus mit bekannter Frequenz und Amplitude drüber legen 
weil man weiß das er es ist ist unsinnig. Wenn man weiß was es ist muss 
man nicht mehr messen.

von AD (Gast)


Lesenswert?

Ich bins wieder, ich habe jetzt folgendes Messignal. Dieses würde ich 
nun gerne über die FFT, Fensterung, Zeropadding und wieder 
zurückrechnen.

Ich hattte mir überlegt es in Matlab zu realisieren, bin darin aber noch 
recht neu. Habt ihr Tipps dazu oder ggf. Vorlagen wie dies gemacht wird? 
Ich hatte bereits nach Lösungen im Netz gesucht, bisher waren die aber 
alle noch nicht zielführend.

von AD (Gast)


Angehängte Dateien:

Lesenswert?

Auf der angefügten Abbildung ist das Signal als Graph und einmal als 
Rohdateoi hinterlegt. Die erste Spalte ist der Zeitstempel in Sekunden, 
die Spalte 2 und 3 sind die jeweiligen Messdaten. Allerdings ist 
zunächst die dritte Spalte zu vernachlässigen. Ich würde gern ersteinmal 
das Signal der zweiten Spalte bearbeiten.

von AD (Gast)


Angehängte Dateien:

Lesenswert?

Irgendwie habe ich wohl was beim hochladen des Graphen falsch gemacht, 
sollte jetzt klappen. Tut mir leid für die Doppelposts, kann diese 
allerdings leider nicht editieren, da ich wohl nicht registriert bin.

von Joe F. (easylife)


Lesenswert?

Das sind aber auch keine 80 KHz, oder? Eher so um die 25 KHz...

von AD (Gast)


Lesenswert?

Ja genau, etwa 25 kHz

von Joe F. (easylife)


Lesenswert?

Und reichen dir die 25 KHz jetzt, oder sollen auch 80 KHz rekonstruiert 
werden, so wie ursprünglich dargestellt?
Und die Samplerate scheint auch 433 KHz zu sein, und nicht 200 wie am 
Anfang...

: Bearbeitet durch User
von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

128-fach upgesampled, TP gefiltert, 16-fach downgesampled...
Beim Filter hab ich mir nicht viel Mühe gegeben, ist ein 1st-order IIR 
4x hintereinander.

: Bearbeitet durch User
von AD (Gast)


Lesenswert?

Oh das schaut richtig gut aus. Ja ich weiß die Eigenschaften der Messung 
(Samplefrequenz etc.) weicht von den Angaben oben ab. Es handelt sich 
auch nur um eine Testmessung. Hast du die Ergebnisse über Matlab 
berechnet ?

von Joe F. (easylife)


Angehängte Dateien:

Lesenswert?

AD schrieb:
> Hast du die Ergebnisse über Matlab
> berechnet ?

Ne, Matlab habe ich nicht. Aber einen C Compiler ;-)

: 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.