Forum: Digitale Signalverarbeitung / DSP / Machine Learning Fouriertransformation


von Dominik (Gast)


Lesenswert?

Guten Abend zusammen,

ich werde bald ein kleines Projekt angehen, bei dem im Kern auch eine 
Fouriertransformation vorkommen wird.

Es wir ein Signal im Zeitbereich (Musiksignal) abgetastet und soll in 
den Frequenzbereich transformiert werden.

Eins will mir momentan aber noch nicht ganz in den Kopf...

Ich möchte eine Frequenzauflösung von einem Hertz erreichen.

Angenommen ich führe ein FFT mit 1024 Punkten durch, dann muss ich mit 
1024 Hz abtasten, denn die Auflösung entspricht wenn ich das richtig 
verstehe der Abtastrate geteilt durch die Zahl der Stützstellen.

Ist es dann richtig, dass ich bei der gewünschten Auflösung von 1Hz auch 
nie über eine Aktualisierungsrate von einem Hertz hinwegkommen kann, da 
ich ja immer genau eine Sekunde brauche um die benötigte Anzahl an 
Werten zu samplen?

Danke schonmal.

Gruß

von Martin S. (der_nachbauer)


Lesenswert?

Dominik schrieb:
> Angenommen ich führe ein FFT mit 1024 Punkten durch, dann muss ich mit
> 1024 Hz abtasten, denn die Auflösung entspricht wenn ich das richtig
> verstehe der Abtastrate geteilt durch die Zahl der Stützstellen.

Dazu nochmal nachlesen, bitte:
http://de.wikipedia.org/wiki/Nyquist-Shannon-Abtasttheorem

Dominik schrieb:
> Ist es dann richtig, dass ich bei der gewünschten Auflösung von 1Hz auch
> nie über eine Aktualisierungsrate von einem Hertz hinwegkommen kann, da
> ich ja immer genau eine Sekunde brauche um die benötigte Anzahl an
> Werten zu samplen?

Ich verstehe hierbei nicht so recht, was Du meinst.

von savo (Gast)


Lesenswert?

Ich denke er spricht die begrenzte Lokalisation im Zeitbereich an. Nach 
meiner Ansicht ist die Aussage richtig, 1Hz Aktualisierungsrate ist das 
Maximum bei dieser Auflösung. Es ist möglich eine höhere 
Aktualisierungsrate zu erlangen indem die Auflösung im Frequenzbereich 
niedriger ist.

von jonas biensack (Gast)


Lesenswert?

>1Hz Aktualisierungsrate ist das
>Maximum bei dieser Auflösung.

Sollte das nicht nur von der vorhandenen Rechenleistung abhängen?!

Gruß Jonas

von Klaus (Gast)


Lesenswert?

jonas biensack schrieb:
>>1Hz Aktualisierungsrate ist das
>>Maximum bei dieser Auflösung.
>
> Sollte das nicht nur von der vorhandenen Rechenleistung abhängen?!

Die Aktualisierungsrate hat nichts mit dem "Rest" zu tun!

Was hindert dich daran 1 neuen Wert abzutasten und dann zusammen mit 
1023 vorhergehenden alten Werten auszuwerten, dann hast du eine 
Aktualiserungsrate gleich der Abtastrate.

Die Grenze ist hier die Rechenleistung !!!

Gruss Klaus

von Dominik (Gast)


Lesenswert?

So... ich melde mich auch mal wieder zu Wort :)

Danke schonmal für eure Antworten, ich denke savo hat mein "Problem" 
erkannt wenn es dann wirklich so ist.

> >1Hz Aktualisierungsrate ist das
> >Maximum bei dieser Auflösung.

So hab ich mir das auch gedacht - war mir aber nicht sicher, ob ich 
vielleicht irgend einen Punkt übersehen habe, da ich bis jetzt in der 
Praxis noch nicht mit Fourier gearbeitet habe.

> Sollte das nicht nur von der vorhandenen Rechenleistung abhängen?!

Die Frequenzauflösung beträgt:

Mit
 und   n = Anzahl der Stützstellen

Angenommen ich interessiere mich für ein Frequenzspektrum bis
 und taste folglich mit
 ab.

Dann muss ich auf jeden Fall t=1s warten um wieder genügend Samples für 
die FFT zu haben und kann folglich auch nicht schneller als 1Hz 
aktualisieren, richtig?

von Dominik (Gast)


Lesenswert?

> Was hindert dich daran 1 neuen Wert abzutasten und dann zusammen mit
> 1023 vorhergehenden alten Werten auszuwerten, dann hast du eine
> Aktualiserungsrate gleich der Abtastrate.

Ok...
Also doch was übersehen :)

Stimmt eigentlich - was hindert mich daran Samples (zumindest für eine 
live-Ansicht) mehrfach zu verwenden. :)

Danke Klaus!

von savo (Gast)


Lesenswert?

Klaus hat recht, mit seiner Lösung ist eine Aktualisierungsrate gleich 
der Abtastrate möglich aber was ist der Informationsgewinn der FFT wenn 
lediglich EIN Wert sich geändert hat?
Es gibt eine Grenze in der Zeit- und der Frequenzlokalisation basierend 
auf der Heisenbergsche Unschärferelation. Sprich die Auflösung in Zeit 
und Frequenz sind abhängig voneinander.

Wir sollten auf Detlef warten :-)

von mh (Gast)


Lesenswert?

Heisenbergsche Unschärferelation? Wo sind hier die Quanteneffekte? Ich 
hatte gedacht es geht um Audiosignale.

von savo (Gast)


Lesenswert?


von Klaus (Gast)


Lesenswert?

savo schrieb:
> Heisenbergsche Unschärferelation

Tut nicht immer gleich so schwere Geschütze auffahren.
Um die Heisenbergsche Unschärferelation muss man sich nicht extra 
kümmern, sie ist im vorliegenden Fall von selbst gegeben.
Denn, Dominik will eine Frequenzauflösung von einem Hertz. Der Preis 
dafür ist dass er eine Sekunde lang abtasten muss. Seine Ergebnisse 
gelten also zeitlich für die letzte Sekunde.
Will er es zeitlich genauer, z.B. für die letzte halbe Sekunde, so geht 
das nur zu dem Preis dass seine Frequenzauflösung auf 2 Hertz "sinkt". 
Das ist alles!

Die Aktualisierungsrate ist ganz was anderes. Je höher sie ist, um so 
schöner kann man das dynamische Verhalten, also das Ansteigen und 
Abklingen einzelner Frequenzanteile sehen.

Gruss Klaus

von Klaus (Gast)


Lesenswert?

Noch eine Ergänzung:

ich schrieb:
> Die Aktualisierungsrate ist ganz was anderes. Je höher sie ist, um so
> schöner kann man das dynamische Verhalten, also das Ansteigen und
> Abklingen einzelner Frequenzanteile sehen.

Man muss näturlich noch bedenken, dass das dynamische Verhalten der 
Ergebnisse schon von der Abtastzeit abhängt.
Wählt man 1 Sekunde Abtastzeit, damit 1 Hz Auflösung, dann ändern sich 
die Ergebnisse der Auswertung auch höchstens mit 1 Hz.
Jeder kann sich selbst überlegen wie oft man ein Display auffrischen 
muss um Änderungen mit 1 Hz schön darzustellen.

von Detlef _. (detlef_a)


Lesenswert?

>>aber was ist der Informationsgewinn der FFT wenn lediglich EIN Wert sich 
>>geändert hat?

Abtastrate sei 1024, Länge FFT auch. Dann liegt die Frequenz 1Hz in dem 
ersten 'bin' der FFT. Wenn Du diese FFT nach JEDEM neuen sample machst, 
also mit 1023 alten und einem neuen sample, kannst Du sehen wie sich die 
Frequenz '1' nach Betrag und Phase geändert hat. Für 1Hz muß sich die 
Phase mit jedem sample um 2pi/1024 weiterdrehen. Mit dieser 
Phasendrehung der überlappenden FFTs kannst Du im Umkehrschluß die 
Frequenz HOCHGENAU bestimmen, Du bist nicht an das Frequenzraster der 
FFT gebunden.

>>Wir sollten auf Detlef warten :-)
THX

Cheers
Detlef

von chris (Gast)


Lesenswert?

>Denn, Dominik will eine Frequenzauflösung von einem Hertz. Der Preis
>dafür ist dass er eine Sekunde lang abtasten muss. Seine Ergebnisse
>gelten also zeitlich für die letzte Sekunde.

Nicht unbedingt. Wenn Du genau weist, dass das Signal sinusförmig ist, 
kannst Du den Abstand zwischen zwei Nullstellen messsen.

Oder: Wenn das Signal genau Sinusförmig ist, sollte sich mit dem 
Abtasten von 4 Punkte ( oder 3? ) am Anfang des Signals der Rest des 
Signals schätzen lassen.

von hans (Gast)


Lesenswert?

savo schrieb:
> Klaus hat recht, mit seiner Lösung ist eine Aktualisierungsrate gleich
>
> der Abtastrate möglich aber was ist der Informationsgewinn der FFT wenn
>
> lediglich EIN Wert sich geändert hat?


Für die niedrigste Frequenz (1 Hz) hat das keinen großen Vorteil, weil 
sich die Schwingung mit dieser Frequenz erst nach 1/2 s maximal geändert 
hat. Wohl aber für hohe Frequenzen, denn diese durchlaufen in dieser 
Zeit ev. einige tausend Perioden und können sich daher beliebig ändern.

von martin (Gast)


Lesenswert?

Also,  bei Musiksignalen   musst Du schon  mit 40kHz  abtasten, es sei 
denn Du spielst Alphorn.

Um also 1Hz Auflösung zu erreichen musst Du 40k  Samples FFT 
transformieren,
und weil das so schlecht geht  besser  32768  oder 2x32768  Samples.

Mein  i5  Laptop braucht für  1000 FFTs  der Länge  32768  ca.  1 
Sekunde.
(MATLAB)  .  Ein DSP braucht dann wohl  nur ne.  1/10  Sekunde.

Ein ATMEGA ...  naja.

Nehmen  wir mal an Dein System schafft  10FFTs der Länge  32768 pro 
Sekunde,
dann kannst Du  logischerweise  eine Updaterate  von 10/Sekunde 
erreichen  indem du

FFT1 : Samples  1..32768
FFT2 : Samples  1+3277  ..32768+3277
FFT3: Samples  1+2*3277  ..32768+2*3277

u.s.w.

rechnen lässt.


Jetzt  würde nur noch interessieren  wozu Du  1Hz  Auflösung benötigst

von martin (Gast)


Lesenswert?

es ist sowieso  immer eine gute idee  nicht die FFT  anzuzeigen sondern 
den Mittelwert mehrerer benachbarter   FFTs  da  eine FFT  sehr 
"verrauscht" ist , insbesondere wenn man so hohe Frequenzausfösungen 
haben will wie Du.  Das nennt man Periodogramm

von Bert (Gast)


Lesenswert?

Kleine Anmerkung: Falls das Musiksignal als I/Q Signal vorliegen würde 
hätte man doppelte Auflösung im Frequenzbereich

von Dominik (Gast)


Lesenswert?

> Also,  bei Musiksignalen   musst Du schon  mit 40kHz  abtasten, es sei
> denn Du spielst Alphorn.

Es interessieren mich nur (sehr) tiefe Frequenzen.
Wie oben gesagt f<500Hz und da ist schon viel "Luft nach oben" dabei.

Also doch eher Alpenhorn :)

> Mein  i5  Laptop ...
> Ein DSP braucht ...
> Ein ATMEGA ...

Um die Rechenleistung mach ich mir momentan keine Sorgen.
Es sind ja dank der niedrigen Frequenzen bedeutend weniger Samples.
Dazu steht auch noch gar nicht final fest, ob die Berechnung auf einem 
PC oder einem µC stattfinden.

> Jetzt  würde nur noch interessieren  wozu Du  1Hz  Auflösung benötigst

Es geht um eine Schalldruckmessung und dabei eben auch darum recht genau 
feststellen zu können welche Frequenzen am lautesten auftreten.

Ich danke euch allen noch mal recht herzlich für die vielen Antworten.
Wird mir auf jeden Fall helfen wenn ich das ganze dann angehe :)

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.