|
|
Probleme bei der FFT eines Rechtecksignals |
|
Phtagen |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.03.2016, 10:58
Titel: Probleme bei der FFT eines Rechtecksignals
|
|
|
|
|
Hallo liebes Forum,
ich beschäftige mich gerade mit den Grundlagen den Signalverarbeitung und bin auf ein Problem gestoßen. Zwar benutze ich nicht Matlab sondern Octave 3.8.2, aber ich denke ich bin hier trotzdem richtig aufgehoben.
Ich erzeuge mir mit rectpuls(
) ein Rechtecksignal im Intervall [-Pi, Pi] und möchte anschließend hiervon eine FFT durchführen (Details siehe Code).
Das Amplitudenspektrum welches ich erzeuge jedoch, wirft einige Fragen bei mir auf.
1) Ich erwarte als FFT eines Rechtecksignals eigentlich die sinc-Funktion. Das Spektrum sieht jedoch anders aus.
2) Die Höhe der Amplitude kann ich mir nicht erklären. Ich hätte bei einem Einheitsrechteckimpuls auch eine Amplitude von 1 erwartet. Habe ich hier evtl. falsch normiert?
3) Wie verfahre ich in diesem konkreten Fall mit dem Gleichanteil bei omega = 0?
4) Die Frage ist wieder eher Octave spezifisch und von untergeordnetem Interesse. Beim Plotten mit Gnuplot wird die Achsenskalierung am linken Bildrand abgeschnitten. Was kann ich dagegen tun?
Ok, das wären soweit meine drei (vier) Problemchen. Wäre echt froh, wenn mir da jemand helfen könnte. Ach, nebenbei noch: Bitte nicht wundern, ich habe den Frequenzvektor als Kreisfrequenz formuliert, da das in dem Beispiel was ich gerade nachvollziehe auch so gemacht wird und ich die Vergleichbarkeit der Ergebnisse gewärhrleisten wollte.
Ok, hier noch der Code. Viele Grüße
Phtagen
Beschreibung: |
|
Download |
Dateiname: |
RechteckSpek.pdf |
Dateigröße: |
15.31 KB |
Heruntergeladen: |
462 mal |
Beschreibung: |
|
Download |
Dateiname: |
RechteckSpek.pdf |
Dateigröße: |
15.31 KB |
Heruntergeladen: |
430 mal |
|
|
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 04.03.2016, 11:40
Titel:
|
|
Hallo,
ich habe zwar kein Octave...wenn aber die Umsetzung der FFT wie in Matalb erfolgt, ist deine Skalierung auf jeden Fall falsch. Da du ein zweiseitiges Spektrum erstellst, darf der Betrag nicht mit 2 multipliziert werden. Das gilt nur für ein einseitges Spektrum.
Siehe: http://www.gomatlab.de/fft-umfassendes-beispiel-t777.html
Der Verlauf ist für mich nach einem kurzen Blick mal abgesehen von der Normierung einleuchtend.
Gruß DSP
|
|
|
Phtagen |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.03.2016, 15:45
Titel:
|
|
|
|
|
Hallo DSP,
danke für deine schnelle Antwort.
Bist du dir mit der Skalierung sicher? Warum mache ich das nur bei dem einseitigen Spektrum. Ich hätte gedacht, dass das einseitige Spektrum (in der Matlab-Hilfe mit P1 bezeichnet) tatsächlich nur die erste Hälfte des P2-Spektrums ist: http://de.mathworks.com/help/matlab/ref/fft.html?!?!?!? Nichts desto trotz, meine Amplitude beträgt ja nur irgendwas um 0.14. Würde ich das noch halbieren wäre ich bei ca. 0.7. Das ist von meiner erwarteten Amplitude von 1 immer noch sehr weit weg. Oder habe ich einfach falsche Erwartungen ?
Und zum Verlauf. In dieser Internetquelle https://www.akustik.tu-berlin.de/fi.....alverarbeitung_gesamt.pdf auf S. 47 findet sich einmal die Darstellung des Amplitudenspektrums eines Rechteckimpulses als sinc-Funktion und darunter ein ähnlicher Verlauf wie ich ihn erhalten habe. Kann mir jemand erklären, worin der Unterschied besteht und wieso mein Verlauf so aussieht wie er aussieht?
Vielen Dank und viele Grüße
Phtagen
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 05.03.2016, 13:24
Titel:
|
|
|
|
|
Hallo,
bei der Skalierung bin ich mir 100% sicher. Die FFT Doku ist hier schon seit Jahren nicht ganz korrekt. Erstens fehlt eine Unterscheidung, ob das Signal ein Impuls ist oder nicht. Der fouriertransformierte Impuls hat über alle Frequenzen den Betrag = 1. Diese Ergebnis erhält man aus dem Matlab Beispiel aber nicht. Zur Darstellung des positiven Freq.-bereichs ist die Doku auch nicht korrekt, da der Betrag von Gleichsignalanteil und Nyquistfrequenz ebenfalls falsch skaliert wird.
Wie du die Amplituden richtig skalierst, findest du in dem Link aus meinem vorherigen Post.
Nun zu der Frage der Amplitudehöhe. Das Beispiel in dem Buch beschreibt ein Rechteckfenster (über alle t -> y = 1) und kein Rechtecksignal wie in deinem Beispiel. Für das Rechteckfenster mit der Amplitude 1 ergibt sich auch im Betragsspektrum eine 1 für die Amplitude. Teile ich nun das Rechtecksignal gleichmäßig in High und Low auf, ergibt sich nur noch 0.5 als Amplitude im Betragsspektrum. Die Abweichung wird höher, je kleiner der High Anteil ist.
Gruß DSP
|
|
|
Phtagen |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.03.2016, 16:28
Titel:
|
|
|
|
|
Hallo DSP,
nochmals vielen dank für deine Erläuterungen. Das mit der Amplitude klingt ziemlich einleuchtend.
Dann hätte ich aber noch mal eine Frage zum einseitigen Spektrum. Wie gehe ich mit dem Gleichanteil und dem von dir erwähnten Betrag der Nyquistfrequenz um? Und auch auf die Gefahr hin, dass meine (wiederholte) Frage ziemlich rum nervt, aber der Verlauf meines Ergebnisses ist keine sinc-Funktion. Woran liegt das?
Ich habe mir einen Rechteckimpuls gebastelt von 0 - 1 welcher von 0 - 0.5 gleich 1 ist und im weiteren Verlauf 0. Ich erwarte eine Amplitude von 0.5 im Spektrum. Für das zweiseitige Spektrum passt das dann auch aber das einseitige Spektrum muss ich doch noch mit 2 multiplizieren. Dann habe ich aber eine Amplitude von 1 im einseitigen Spektrum (siehe Pdf und Code).
Sorry im Übrigen für mein ständiges Nachhaken, aber der ganze Vorgang mit der FFT-Umsetzung in Matlab ist mir doch noch nicht 100% klar und ich habe festgestellt, dass man zwar sehr leicht irgend was fouriertransformiert bekommt, das aber nicht gleichbedeutend ist mit dem Generieren eines sinnvollen Ergebnisses Wenn du verstehst *g
Vielen Dank auf jeden Fall für deine Hilfe.
Gruß Phtagen
Beschreibung: |
|
Download |
Dateiname: |
SpekRechteck1seitig.pdf |
Dateigröße: |
9.98 KB |
Heruntergeladen: |
445 mal |
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 06.03.2016, 17:01
Titel:
|
|
Das verlinkte Skript zeigt doch genau wie ein einseitiges Spektrum zu skalieren ist.
Die Nyquistfreq. (= fs/2) wird hier wie auch in deinem Beispiel nicht dargestellt. Ansonsten müsste sie auch durch N geteilt werden. Die fft berechnet ein zweiseitiges Spektrum,welches N+1 Messwerte hat. Gleichsignalanteil und Nyquistfreq.anteil kommen nur einmal in dem Ergebnisvektor der fft vor. Die anderen Signalfreq. kommen doppelt vor (konjugiert komplex)...eben für negativen und positiven Bereich. Daher muss unterschiedlich skaliert werden.
Zitat: |
Und auch auf die Gefahr hin, dass meine (wiederholte) Frage ziemlich rum nervt, aber der Verlauf meines Ergebnisses ist keine sinc-Funktion. Woran liegt das?
|
Der Verlauf ist für mich stimmig. Was erwartest du denn?
Gruß DSP
|
|
|
Phtagen |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2016, 11:30
Titel:
|
|
|
|
|
Hallo DSP,
die Zeile hab ich doch glatt überlesen
Ok, dann hab ich das ganze noch mal durch exerziert und den Gleichanteil entsprechend normiert.
Entsprechend erhalte ich angehängte erste Grafik Rechteck1seitig). Dass der Gleichanteil betragsmäßig kleiner ist als der Peak direkt daneben verwundert mich halt. Ist das korrekt?
Ich hätte laut div. Literaturangaben einen Verlauf des Amplitudenspektrums erwartet wie er in der zweiten Abb. angedeutet ist (hat mit dem Spektrum des Rechteckimpulses nichts zu tun, dient nur der Veranschaulichung dessen, was ich meine), halt der Verlauf der sinc-Funktion (oder Si-Funktion). Stattdessen sieht das von mir erhaltene Spektrum anders aus. Es ist halt keine glatte Si-Funktion.
Hoffe du verstehst was ich meine. Vielen Dank auf jeden Fall für deine Erklärungen.
Gruß Phtagen
Beschreibung: |
|
Download |
Dateiname: |
erwarteter Verlauf.pdf |
Dateigröße: |
49.13 KB |
Heruntergeladen: |
418 mal |
Beschreibung: |
|
Download |
Dateiname: |
Rechteck1seitig.pdf |
Dateigröße: |
10.86 KB |
Heruntergeladen: |
461 mal |
|
|
|
DSP |
Forum-Meister
|
|
Beiträge: 2.117
|
|
|
|
Anmeldedatum: 28.02.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014b
|
|
|
|
|
|
Verfasst am: 07.03.2016, 12:01
Titel:
|
|
|
|
|
Hallo,
der erwartete Verlauf ist schon mal wegen der Betragsbildung unmöglich. Für mich ist es nicht nachvollziehbar wie hier negative y-Werte vorkommen sollen. Schon in dem von dir verlinkten Buch, wird angeblich ein lineares Spektrum mit ähnlichem Verlauf gezeigt. Eine Beschriftung der Achsen ist dort auch nicht vorhanden. Daher ist für mich dieser lineare Verlauf des Spektrums nicht nachvollziehbar.
Zitat: |
Dass der Gleichanteil betragsmäßig kleiner ist als der Peak direkt daneben verwundert mich halt. Ist das korrekt? |
Ja, das ist korrekt. Der Gleichsignalteil ist nichts weiter als eine Mittelwertbildung aller Messwerte. Bei einer Amplitude von 1 und gleichem Anteil high/low muss da 0.5 rauskommen. Für die eigentliche Signalamplitude müsste ja eigentlich 1 herauskommen. Das hatte ich aber schon bereits erklärt wieso nicht.
Wenn du dir mal die Messpunkte im Plot darstellen lässt, wird auch klar, warum es einen zackigen Verlauf gibt. Es sind einfach zu wenige Punkte um einen runden Verlauf zu erzeugen.
Gruß DSP
|
|
|
Ptagen |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2016, 12:23
Titel:
|
|
Hallo DSP,
mhmmmpfff
Das mit der Betragsbildung ist wohl
ziemlich offensichtlich. Manchmal sehe ich halt den Wald vor lauter Bäumen nicht. Ich hab mir auch noch mal
geplottet. Die Ähnlichkeit zu meiner aller ersten Grafik ist schon frappierend .
Ok, dann habe ich zumindest etwas mehr Sicherheit bei der FFT/DFT bekommen.
Ich danke dir auf jeden Fall für die Diskussion. Hat mir sehr weitergeholfen. Dann werde ich mich mal mit dem nächsten Thema auf meiner Agenda beschäftigen und behaupte jetzt einfach mal, dass ich mich sicherlich demnächst wieder hier melden werde.
Viele Grüße
Phtagen
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|