mikrocontroller.net

Forum: Digitale Signalverarbeitung / DSP FFT: die "N"s und die Frequenzen


Autor: Florian H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tach,

Grundlagen Fragen zur FFT:

Meine "N"s bestimmen ja in wie viele "Spalten" mein Spektrum zerlegt 
wird.
Nehmen wir an mein Signal wäre Sprache und ich räume ihm eine Bandbreite 
von 2.8 kHz ein. Das maximale N was mein DSP zulässt ist 255.
Ergo steht eine "Spalte" für ca. 11 Hz.
Bis hier hin: richtig gedacht oder zurück auf los?

Reichen mir 255 * 11Hz um das Signal akkustisch annehmbar wieder zurück 
zu wandeln und aus zu geben? Wo liegt die Grenze der "Spaltenbreite" und 
wie wird das Fachtechnisch genannt?

Entsprechen die "Spalten" dem was man unter "Harmonischen" versteht? 
Wenn ja wären meine obrigen annahmen Falsch. Wie würde sich die 
Variation von N dann bemerkbar machen?

Frage zur Breite des "Messfensters".
Wenn die Länge des Fensters kürzer ist als die tiefste zu messende 
Frequenz, wird diese dann noch erkannt oder liegt hier die untere 
Frequenz für mein kleinstes N?

Gruß und Danke

Florian

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Nehmen wir an mein Signal wäre Sprache und ich räume ihm eine Bandbreite
von 2.8 kHz ein. Das maximale N was mein DSP zulässt ist 255.
Ergo steht eine "Spalte" für ca. 11 Hz.
Bis hier hin: richtig gedacht oder zurück auf los?

--> Fast richtig, da das Spektrum ab der Mitte gespiegelt ist, hast Du 
effektiv nur halb so viele "bins"

Reichen mir 255 * 11Hz um das Signal akkustisch annehmbar wieder zurück
zu wandeln und aus zu geben? Wo liegt die Grenze der "Spaltenbreite" und
wie wird das Fachtechnisch genannt?

--> Da hab ich leider keine Erfahrung...in der Theorie klappt das 
verlustfreie umwandeln nur bei unendlich langen periodischen 
Signalen...Sprachsignale sind leider nicht periodisch.

Entsprechen die "Spalten" dem was man unter "Harmonischen" versteht?
Wenn ja wären meine obrigen annahmen Falsch. Wie würde sich die
Variation von N dann bemerkbar machen?

--> Du hast die sog. Grundfrequenz und die harmonischen, also mehrfache 
der Grundfrequenz. Die Variation von N verändert die 
"Frequenzauflösung". Das heißt bei größerem N ist der Abstand zwischen 
den Bins kleiner.
z.B. f_s = 10 Hz N=2                   f_s = 10Hz N=4
     delta_f = 5 Hz                    delta_f = 2,5 Hz
Außerdem steigt bei höheren N auch der Rechen- und Speicheraufwand.

Frage zur Breite des "Messfensters".
Wenn die Länge des Fensters kürzer ist als die tiefste zu messende
Frequenz, wird diese dann noch erkannt oder liegt hier die untere
Frequenz für mein kleinstes N?

--> Die Messfensterlänge ist von der Abtastfrequenz deines ADC und der 
Anzahl der Samples N abhängig. Fensterlänge= N* 1/f_abtast. Alles was 
unter der Grundfrequenz (der kleinsten EXAKT darstellbaren Frequenz) 
liegt, wird auf den Gleichanteil, sowie die Grundfrequenz aufgeteilt. Du 
kannst mit dem Ergebnis dann nur aussagen, dass die Transformierte 
Frequenz irgendwo zwischen 0 und Grundfrequenz liegt.

Kommmst Du an Bücher ran? Unibibliothek oder ähnliches?
Würd dir folgendes empfehlen: FFT für Fußgänger. Der Autor macht 
manchmal zu wenig zwischenschritte, aber mit ein bisschen Hirnschmalz 
kann man das kompensieren ;-)

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ignoriere bitte meine Flüchtigkeitsfehler ;-)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian H. wrote:
> Reichen mir 255 * 11Hz um das Signal akkustisch annehmbar wieder zurück
> zu wandeln und aus zu geben? Wo liegt die Grenze der "Spaltenbreite" und
> wie wird das Fachtechnisch genannt?

Durch die DFT/FFT verlierst du keine Informationen. Wenn dein Signal 256 
Samples lang ist, dann kannst du es aus einer 256-Punkt-FFT wieder 
perfekt rekonstruieren. Wenn dein Signal laenger als 256 Samples ist, 
dann kannst du es in Bloecke aufteilen, die FFTs auf die Bloecke 
anwenden, und aus diesen FFT-Bloecken wieder das Originalsignal 
wiederherstellen. Nennt sich Overlap-Add-Methode oder DFT-Filterbank. In 
der Realitaet ist es ein bisschen komplizierter, es gibt nicht umsonst 
ganze Buecher zu dem Thema. Z.B.: 
http://ccrma.stanford.edu/~jos/sasp/sasp.html

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldige, aber man kann beispielsweise ein Rechtecksignal wegen des 
Gibb'schen Überschwingers nie wieder perfekt rekonstruieren ;-)
Theoretisch bräuchte man unendlich viele Harmonische für die 
Rekonstruktion. Die Abweichung des rekonstruierten Rechtecksignals geht 
gegen einen bestimmten Wert der nicht Null ist.

Allgemein gilt: Je unstetiger das Ausgangssignal, desto stärker ist die 
Abweichung des rekonstruierten Signals.

Bei stetigen Verläufen dagegen ist die Rekonstruktion besser möglich. Je 
mehr der Verlauf einem Sinus ähnelt, desto besser das Ergebnis.

Gruß

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es geht doch um zeitdiskrete Signale, da gibt es kein stetig oder 
unstetig. Egal was du in die FFT reinsteckst, nach der IFFT kommt wieder 
das selbe raus.

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein ;-)

Denk mal dran, dass das Signal immer irgendwo abgeschnitten wird und 
somit eine Unstetigkeit auftreten wird,

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nochmal, es geht um zeitdiskrete Signale, da gibt es kein stetig oder 
unstetig. Ein zeitdiskretes, periodisches Signal mit N Freiheitsgraden 
wird durch durch ein diskretes, periodisches Spektrum mit N 
Freiheitsgraden vollstaendig beschrieben. Mit der DFT kann man zwischen 
diesen Darstellungen transformieren, nichts weiter.

Wenn du das Signal in den Frequenzbereich transformierst, das Spektrum 
abschneidest, und es wieder zurueck transformierst, DANN tritt der 
Effekt auf den du beschrieben hast (Gibbs-Effekt). Die DFT trifft aber 
keine Schuld.

Autor: Florian H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich störe den kleinen Diskurs nur ungerne. ;)
Zum Test habe ich mal in Excel (kein MatLab greifbar) einen Sinus 
gebastelt und dessen Werte durch die FFT gejagt.
Folgendes Szenario:
Der Sinus hat 128 Werte und schwingt in diesem Zeitraum 4 mal mit voller 
Peroide.
Nach der FFT habe ich die Werte durch 2 geteilt und lasse mir nur die 
Hälfte der Werte anzeigen. (Wegen Spiegelung ab dem 64 Wert)
Nun tritt bei "Spalte" 5 ein Maximum auf, mit leichten Erhöhungen in den 
Werten drum rum.
Meine Überlegung ist nun die: Nehmen wir an das ein Sample 1 ms 
entspricht. Dann ist mein Fenster 128ms oder 0.128 Sekunden lang. 
1/0,128 = 7,8125.
Das müsste doch dann die Grundfreuqenz sein, oder?
Alle weiteren N sind Vielfache dieser GF (die Harmonischen). Also müßte 
5*7,8125 = 39 HZ doch der Frequenz meines Sinus entsprechen...
Nur wenn ich 0.128 durch 4 Teile und 1 durch das Ergebnis dividiere, 
erhalten ich 31,25 Hz für meinen Sinus...
Mache ich einen Denkfehler?

Ok...
Ich habe mir die Excel Sache noch mal angesehen. Meine Datenreihe für 
den Sinus beginnt bei 0 und hat dort den Wert 0. Mein Maximum rutscht 
natürlich auf 4 wenn ich diesen ersten Wert weglasse. Logisch... Nur 
warum darf ich den nicht mit zählen... Ah ok... ich ahne es...
Ok, dann müsste das ja beliebig gut funzen...
Werde morgen mal weiter testen und die Excel Datei rein stellen wenn 
Interesse besteht.

Nacht ;)

Florian

Autor: Florian H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ääääääääääääääääähm...
Kann es sein das mein N0, also mein erstes N der von Marius weiter oben 
erwähnte Gleichanteil ist?! :D
Also wäre N1 meine Grundfrequenz?

Florian

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schwarz wrote:
> Es geht doch um zeitdiskrete Signale, da gibt es kein stetig oder
> unstetig. Egal was du in die FFT reinsteckst, nach der IFFT kommt wieder
> das selbe raus.

Wenn dein Signal perfekt bandbegrenzt ist, dann ja. Wenn nicht, dann 
bekommst du garantiert nicht das selbe Signal zurück (Leakage ist bei 
einer zeitbegrenzten, diskreten FT immer vorhanden). In der Praxis kann 
und muss man diese Abbweichungen jedoch vernachlässigen.

  http://www.diru-beze.de/signale/skripte/SuS_SS05/fft-dft.pdf

Autor: T. H. (pumpkin) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Florian H. wrote:
> Ääääääääääääääääähm...
> Kann es sein das mein N0, also mein erstes N der von Marius weiter oben
> erwähnte Gleichanteil ist?! :D
> Also wäre N1 meine Grundfrequenz?
>
> Florian

In der Tat, n0 ist dein Gleichanteil (f = 0). Die erste natürliche 
Frequenz ist bei n1 zu finden.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die DFT ist eine orthogonale Transformation von einem N-dimensionalen 
Vektor in einen N-dimensionalen Vektor, dabei kann nichts verloren 
gehen. Was bei der Abtastung passiert ist schon wieder eine ganz andere 
Sache.

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm....dann erkläre mir bitte wie ich aus einem Signal, welches 
(beispielsweise) knapp unter der Grundfrequenz liegt hin- und 
zurücktransformiere, so dass das Signal wie vorher aussieht...
;-)

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Indem du erst die DFT und dann die IDFT anwendest... probier's doch
einfach aus.

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, angenommen die Frequenz meines Signals ist Grundfrequenz/2...

FFT --> Amplitude des Signals wird zu gleichen Teilen auf Gleichanteil 
und
        Grundfrequenz aufgeteilt...

IFFT--> Ich bekomme einen um den Gleichanteil verschobene Schwingung mit
        Frequenz = Grundfrequenz


Wenn ich da einen Denkfehler habe, klär mich bitte auf.

Ich danke im Voraus

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marius wrote:
> Ok, angenommen die Frequenz meines Signals ist Grundfrequenz/2...
>
> FFT --> Amplitude des Signals wird zu gleichen Teilen auf Gleichanteil
> und Grundfrequenz aufgeteilt...

Da ist der Denkfehler. Wenn das Signal ein Sinus mit der halben 
Grundfrequenz ist, dann sieht die DFT nur eine halbe Periode des Sinus. 
Wenn du dir die periodisch fortgesetzt vorstellst, dann ist das kein 
Sinus mehr, sondern etwas das noch diverse andere Frequenzanteile 
enthaelt. Darum bekommst du ein "verschmiertes" Spektrum (genauer, ein 
mit dem Spektrum des Rechteckfensters gefaltetes). Das stoert die IDFT 
aber nicht; solange du an dem Spektrum nichts aenderst kommt nach der 
Ruecktransformation wieder exakt das selbe heraus.

Autor: Marius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von der Seite stimmts...aber mein Signal, mit Grundfrequenz/2 wird nicht 
korrekt dargestellt...darauf will ich hinaus. Immer wenn eine Frequenz 
zwischen den Vielfachen "erwischt" wird, kommt ein falsches Ergebnis 
raus...Stichwort: leakage

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist "falsch"? Dass das Ergebnis der DFT nicht notwendigerweise 
genauso aussieht wie das Spektrum des kontinuierlichen Signals aus dem 
du das Stueck fuer die DFT ausgeschnitten hast sollte klar sein. Das 
DFT-Spektrum kann nur das darstellen was du reinsteckst, nicht mehr.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm....dann erkläre mir bitte wie ich aus einem Signal, welches
(beispielsweise) knapp unter der Grundfrequenz liegt hin- und
zurücktransformiere, so dass das Signal wie vorher aussieht...
;-)

-> Wenn ein Signal knapp unter der Grundfrequenz liegt, dann reicht der 
Beobachtungszeitraum gar nicht aus, um diese Frequenz vollständig zu 
erfassen.
Bsp: fs = 500. N = 6550.
Grundfrequenz = fs/6550 = 0,076
Beobachtungszeitraum = 1/0.076 = 13
Das heisst du musst mindestens 13 Sekunden beobachten, um diese Frequenz 
(0,076Hz) vollständig zu erfassen.

Sollte nun die Frequenz unter der Grundfrequenz liegen, heisst das die 
Frequenz wurde nicht vollständig erfasst und kann demzufolge auch nicht 
rekonstruiert werden.
Bsp. Grundfrequenz = 0,05Hz
Beobachtungszeitraum = 1/0,05Hz = 20

An einem Sinus sieht man die Auswirkung dann. Der Sinus wird mitten in 
seiner Schwingung abgeschnitten. Diese Fensterung kann man durch eine 
Multiplikation mit einem Rechtecksignal(obwohl es das ja gar nicht 
gibt;)) ausdrücken. Das heisst im Frequ-Bereich ist das eine Faltung...

Eine weitere Erklärung ist: Bei der DFT wird ein Signal im Zeitbereich 
periodifiziert. Das geschieht durch das diskrete Spektrum (Abtastung 
führt zu Periodifizierung im jeweils anderen Bereich). Das heisst, das 
Signal was man vermeintlich zur Transformation übergibt ist nicht das 
Signal. Die meisten Anwender vergessen einfach den Sachverhalt, dass im 
Frequenzbereich ebenfalls ein abgetastetes also diskretes Signal steht. 
Deshalb sollte man immer darauf achten, dass das Zeitsignal 
periodifizierbar ist ohne Sprünge zu erzeugen.

Um auf das Beispiel mit der nicht vollständig erfassten Frequenz 
zurückzukommen:
Es bedeutet ganz einfach, dass der Sinus mitten in der Periode 
abgeschnitten wurde, durch die Periodifizierung aber ein Sprung (also 
zusätzliche Frequenzen) erzeugt wurden. Wenn man den 
Beobachtungszeitraum nun ausdehnt, um diese Frequenz genau zu erfassen, 
dann erhält man auch sein Originalsignal wieder. Dasselbe tritt auf, 
wenn man eine Sinushalbwelle transformiert. Auch hier wird durch die 
Periodifizierung ein Sprung erzeugt.

Man darf nie den Fehler machen und Zeit- und Frequenzbereich getrennt 
betrachten. Sie gehören IMMER zusammen.

Noch etwas zu unstetigen Signalen, die ein Voredner erwähnt hat:
Ein unstetiges Signal gibt es eigentlich nur im kontinuierlichen Fall. 
Und da verletzt es eine Bedingung, um überhaupt mit FT transformiert 
werden zu dürfen.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jan wrote:
> Hmmm....dann erkläre mir bitte wie ich aus einem Signal, welches
> (beispielsweise) knapp unter der Grundfrequenz liegt hin- und
> zurücktransformiere, so dass das Signal wie vorher aussieht...
> ;-)
>
> -> Wenn ein Signal knapp unter der Grundfrequenz liegt, dann reicht der
> Beobachtungszeitraum gar nicht aus, um diese Frequenz vollständig zu
> erfassen.

Was verstehst du unter "vollständig erfassen"?

Die FFT arbeitet auf einer Folge von Abtastwerten. Ob und wie diese 
Abtastwerte irgend ein physikalisches Signal repräsentieren interessiert 
die FFT nicht. Fakt ist, x = IFFT(FFT(x)), für alle x in C^N. Ob x eine 
bezogen auf die Periodendauer "lange" Folge von Abtastwerten ist, oder 
nur ein 2-Punkte-Ausschnitt einer "langsamen" Schwingung, nach 
Transformation und Rücktransformation kommt exakt das selbe raus das man 
reingesteckt hat.

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Florian H.:
Du schreibst, dass du in Excel eine FFT gemacht hast.
Könntest du mir bitte mal verraten wie das geht? Hast du da das 
integrierte FFT-Makro verwendet oder selber was gebastelt?
Ich suche schon lange nach einem einigermassen verständlichen, 
funktionierenden FFT-Code, den ich selber auch mal irgendwo 
implementieren kann.
Vlt. wär das Excel-Sheet noch ganz hilfreich, könntest du es nicht mal 
hier posten?

Grüsse

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Andreas Schwarz

Ich wollte damit auch nicht sagen, dass die FFT was anderes liefert. Es 
ging mir darum, dass eine Frequenz die unter der Grundfrequenz liegt zu 
gering ist um vollständig um Beobachtungszeitraum zu liegen.
Anders ausgedrückt:
Ein Sinus (angenommen ein Signal schwingt tatsächlich so) mit der 
Frequenz 1Hz nur über 0,8 Sekunden beobachtet bei einer Abtastrate von 
ca 1000Hz und dann transformiert, läßt die Frequenz 1Hz nicht erkennen, 
da die Frequenzauflösung = 1000 / 800 = 1,25Hz beträgt. Wenn man das 
Signal nun aber länger beobachtet (oder aufnimmt) kann man die Frequenz 
auch im Spektrum ablesen. Natürlich wird das bei 1,1 Sekunden auch 
wieder schwierig, da: 1000 / 1100 = 0,909Hz. Allerdings ist auch hier 
die Schwingung mittendrin abgeschnitten.

Ich gebe zu der Satz:
"Sollte nun die Frequenz unter der Grundfrequenz liegen, heisst das die
Frequenz wurde nicht vollständig erfasst und kann demzufolge auch nicht
rekonstruiert werden."
ist so nicht richtig. Denn das Signal wird ja rekonstruiert. Allerdings 
aus anderen Frequenzen als die vermeintlich in der Realität vorhandenen.

Es gibt nur Probleme, wenn man das Spektrum beeinflusst, denn die 
tatsächlichen Frequenzen im Signal sind ja nicht zwangsläufig sichtbar.
Stichworte Rechteckfenster und Leckeffeckt.
Das Abschneiden des Sinus mitten in der Schwingung verhindert ja eine 
vernünftige Periodifizierung, sodass dieses Signal kein Sinus mehr ist, 
also ein Signal erzeugt wurde, dass mittendrin einen Sprung auf bspw 
Null durchführt und somit weitere andere Frequenzen erzeugt, die sich 
als Leckeffeckt bemerkbar machen.

Ich glaube in der Wikipedia ist ein kurzer Artikel zum Leckeffeckt mit 
einigen Bildern vorhanden...

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.