www.mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP Fouriertransformation (Verständnis) Problem


Autor: Electribe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe ein Problem beim Verständnis einer FFT Analyse, die ich am 
Rechner gemacht habe. Ich habe mit einem Oszillogramm eines Oszilloskops 
(Eingangssignal: 400mVpp Sinus, 10Hz, +1V offset) in Excel eine 
Fouriertransformation gemacht. Sicher wäre Matlab oä besser geeignet - 
aber das hatte ich leider nicht zur Hand.
Wende ich auf meine Eingangsdaten (es sind 4096 Werte mit 1MS 
abgetastet) die Fouriertransformation an, bekomme ich genau so viele 
komplexe (fourier)Werte wieder raus. Von diesen habe ich den Betrag 
ausgerechnet und ihn durch die Anzahl der Werte geteilt (den letzten 
Schritt mache ich nur, weil ich ihn in einem fertigen Excel Script 
gesehen habe).
Lasse ich mir das Ergebnis grafisch darstellen, sieht auf den ersten 
Blick alles richtig aus. Die "Amplitude" bei 0Hz sollte ja dem 
arithmetischen Mittelwert meiner Eingangswerte entsprechen - genau das 
macht er auch, bis auf die letzte Kommastelle. Rechne ich aber von Hand 
aus, wie hoch die Amplitude des Sinuspeaks in der Fourierdarstellung 
sein müsste (Effektivwert des 400mVpp Sinus etwa bei 142mV), stimmt sie 
nicht mit der angezeigten von 105mV überein.

Irgendwo habe ich einen Denkfehler, da ich davon ausgehe, dass die 
Transformation richtig ist ;)

Ich wäre jedem sehr dankbar, der mir weiter helfen würde!

Viele Grüße, Electribe

Autor: schroeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also, 4096 Werte eines 10Hz Signals bei 1MHz Abtastung - das macht 4.1ms 
Signalausschnitt bei einer eigentlichen Periodenlänge von 100ms. D.h., 
du analysierst garnicht den Sinus. Erhöhe die Anzahl der Eingangswerte.

Autor: Electribe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey, erstmal vielen Dank für deine Antwort. Ich hab mich ein bisschen 
blöd ausgedrückt: Ich bekomme aus dem Oszilloskop (beim Speichern des 
aktuellen Screens) immer 10000 Werte, es nimmt den Sinus mit 1s/Div auf. 
Da Excel für die Fourierberechnung max. 4096 Werte verarbeiten kann, 
habe ich also etwa die Hälfte der Messwerte über Bord geschmissen und 
die anderen transformiert. Hoch genau aufgelöst müsste das Signal doch 
so trotzdem sein, oder?

Autor: schroeder (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hatte mich schon gewundert, dass du da überhaupt einen Peak bekommst.

Also verstehe ich recht, dass du 100 Perioden (der Screeen hat 10 Divs, 
bei 10Hz und 1s/Div also 100 Perioden) auf insgesamt 10kSamples 
bekommst? Im Plot das Ergebnis von MATLAB.

> Rechne ich aber von Hand
> aus, wie hoch die Amplitude des Sinuspeaks in der Fourierdarstellung
> sein müsste (Effektivwert des 400mVpp Sinus etwa bei 142mV), stimmt sie
> nicht mit der angezeigten von 105mV überein.

Angezeigt wo?

Autor: Electribe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Also verstehe ich recht, dass du 100 Perioden (der Screeen hat 10 Divs,
> bei 10Hz und 1s/Div also 100 Perioden) auf insgesamt 10kSamples
> bekommst?

Genau so. Von diesen 10kSamples benutze ich (wegen der Beschränkung in 
Excel) die besagten 4096. Der Wert von etwa 105mV im Peak bei 10Hz wird 
mir von meinem Excel Plot angezeigt/von Excel ausgerechnet... aber wie 
ich an deinem Matlab Plot sehe kommt ja nahezu das gleiche raus - warum 
ist der Peak bei 0.1V? Müsste er nicht dem Effektivwert der 
Wechselspannung entsprechen? Ich sehe nicht den Zusammenhang zwischen 
400mVpp und dem 100mV Peak in der Fouriertransformation?

PS: Danke für deine Hilfe und das du's in Matlab geplottet hast - eines 
Tages gibt's ein Bier dafür! ;)

Autor: schroeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso den Effektivwert? Der Betrag der komplexen Schwingung ist der 
Scheitelwert, hier also 200mVp. Im Spektrum teilt sich dieser Betrag auf 
zwei Spektralanteile auf, um es mal salopp zu formulieren - also 2 mal 
100mVp.

Deine kleine Abweichung kann durch Rauschen etc. kommen.

Autor: Electribe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aaaah! So macht's natürlich Sinn. Ich war ursprünglich vom Scheitelwert 
ausgegangen und bin dann davon abgekommen, weil die Werte so weit 
auseinander lagen ;) Dann wild mit irgendwelchen Faktoren multiplizieren 
ums schön zu rechnen ist zugegeben nich der beste Weg.

Eine letzte Frage noch: Um mein Excel Script fertig zu machen, würde ich 
die Frequenzachse nur bis zur Nyquistfrequenz (in dem Fall 500kHz) 
darstellen und dann einfach alle Spektralanteile mit 2 multiplizieren.
Der Gleichanteil ist aber doch auch ohne diese Umrechnung "richtig"? 
(Anders gesagt, wenn ich ihn auch mal 2 nehme wird er falsch) Was ich 
meine: z.B. in deinem Matlab Plot ist 1V bei 0Hz angezeigt - teilt sich 
dieser Wert denn nicht auf 2 Spektralanteile auf?

Autor: schroeder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was ich meine: z.B. in deinem Matlab Plot ist 1V bei 0Hz angezeigt -
> teilt sich dieser Wert denn nicht auf 2 Spektralanteile auf?

Der bei n = 0 und n = N/2 "teilen sich nicht auf". Das kann man sich am 
Einheitskreis deutlich machen (konjugiert komplex).

Autor: Electribe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe!

Autor: Faber (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen, interessante Konversation. Noch zu meinem Verständnis, 
weshalb teilt sich die Grundschwingung in 2 Spektrallinien auf? Ist das 
wegen dem Abtasten?

Autor: Niels (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi. Besser spät als gar nicht:
Nein, nicht wegen des Abtastens. FT gibt als Ergebnis komplexe 
Schwingungen (Zeiger) an. Bedenke dabei:
cos(w) = 0.5e^(jw) + 0.5e(-jw)
Darauf solltest du auch beim Skalieren/Ablesen der Amplitude im Spektrum 
achten.
Viele Grüße, Niels.

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hallo zusammen, interessante Konversation. Noch zu meinem Verständnis,
> weshalb teilt sich die Grundschwingung in 2 Spektrallinien auf? Ist das
> wegen dem Abtasten?

Du hast in der Regel reellwertige Zeitsignale vorliegen, die Du als 
Summe von komplexe e-Funktionen darstellen willst.

Das geht nur dann, wenn sich die Imaginärteile der komplexen 
e-Funktionen bei der Summation aufheben. Diese Aufgabe übernimmt der 
"zweite" Peak. Sein Wert ist konjugiert komplex zum ersten Peak.


Gruß,
  Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.