WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Umgang von Fenster-Funktionen und FFT

 

holyfetzer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2009, 09:48     Titel: Umgang von Fenster-Funktionen und FFT
  Antworten mit Zitat      
Ich arbeite gerade an einer einfachen Umsetzung einer FFT-Implementierung.
Das Spektrum soll dabei mit Fenster-Funktionen optimiert werden.
Folgendes Beispiel habe ich in Matlab programmiert:

Code:

figure(1);
Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 1000;                     % Length of signal
t = (0:L-1)*T;                % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = (0.7*sin(2*pi*50*t) + sin(2*pi*120*t));
y = (0.7/sqrt(2)*sin(2*pi*50*t) + sin(2*pi*120*t)/sqrt(2));
plot(Fs*t(1:50),x(1:50));
xlabel('time (milliseconds)')


NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(x,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);

figure(2);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)));
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

f2 = blackman(L)';
yf = (x.*f2);

figure(3);
plot(Fs*t(1:50),yf(1:50));
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

figure(4);
YF = (fft(yf,NFFT)/L);
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(YF(1:NFFT/2+1)));
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')


Die Spektren, einmal ungefenstert und einmal gefenstert, sehen so aus:



Meine Frage bezieht sich jetzt darauf, dass meine Fensterfunktion ja die Amplitude meines Signals "wegdrückt" und sich das dementsprechend im Spektrum niederschlägt.
Ich suche eine mathematisch nachvollziehbare Möglichkeit auch mit einem gefensterten Signal eine korrekte Ampitude anzeigen zu lassen und das dämpfende Verhalten der Fensterung (im Beispiel ein Blackman-Fenster) im Spektrum zu kompensieren.
Vielen Dank im Voraus!


Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 25.06.2009, 14:52     Titel:
  Antworten mit Zitat      
man weiss nach der FFT ja nicht mehr, wo (zeitl.) die jew. Frequenzen waren... du könntest ja ne ungefensterte fft machen, ein paar Maximas mit den jew. Frequenzen suchen und dann die gefensterte einfach mit einem Faktor multiplizieren...
Private Nachricht senden Benutzer-Profile anzeigen
 
holyfetzer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2009, 14:45     Titel:
  Antworten mit Zitat      
Den Gedanken hatte ich am Anfang auch, die Dämpfung ist allerdings nicht linear über den Frequenzbereich. Kann man diese genaue Dämpfung vielleicht irgendwie berechnen? Auf alle Fälle danke für deine Antwort.
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 29.06.2009, 19:41     Titel:
  Antworten mit Zitat      
hmm... du hast also ne ganze Menge Maximas, oder ?

Wie wärs, alle über mean()*faktor zu suchen, dann die Division mit dem gefensterten zu machen und dann den kleinsten/grössten (ähh... Laughing ) Faktor zu nehmen ?

Aber das ist eh alles nur Kuddel-Muddel und hat mMn keinen echten Sinn - vielleicht kannst du mir dein Problem ein bissl mehr erklären ?
Private Nachricht senden Benutzer-Profile anzeigen
 
vincentvega
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 18.08.09
Wohnort: berlin
Version: ---
     Beitrag Verfasst am: 27.08.2009, 12:39     Titel:
  Antworten mit Zitat      
Ich denke dein problem ist eventuell lösbar indem du die entsprechende Gewichtung, die aus der verwendeten Fensterung resultiert, berechnest.
Eine Fensterung im zeitbereich bedeutet ja im frequenzbereich eine Gewichtung mit einer bestimmten funktion.
Beispielsweise Rechteckfenster liefern im Freq-Bereich eine Gewichtung mit der Si-Funktion deren Nullstellen etc. durch die Fensterfunktionswahl gegeben ist. Und an der entsprechenden Stelle der der Peaks kannst du den
Faktor der Gewichtung ausrechnen.

vielleicht gibt es geschiktere Möglichkeiten, aber die funktioniert auch.


gruß,

vinc.
Private Nachricht senden Benutzer-Profile anzeigen
 
FFT_Tobi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.01.2010, 14:33     Titel: FFT Normierung
  Antworten mit Zitat      
zuerst einmal der hinweis, dass wenn du vom zweiseitigen auf das einseitige Spektrum wechselst, der DC-Wert nicht mit 2 multipliziert werden sollte!

Dann solltest du beachten, dass du beim Teilen der FFT nicht zwangsweise durch die Anzahl der FFT Elemente teilen solltest, sondern eher durch die Gewichtung des Fensters ( sum(f2) ist das in deinem Fall ).
 
timmi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.08.2010, 15:11     Titel:
  Antworten mit Zitat      
Andy386 hat Folgendes geschrieben:
man weiss nach der FFT ja nicht mehr, wo (zeitl.) die jew. Frequenzen waren... du könntest ja ne ungefensterte fft machen, ein paar Maximas mit den jew. Frequenzen suchen und dann die gefensterte einfach mit einem Faktor multiplizieren...


also meine signalverarbeitungskenntnisse sind ja nicht mehr ganz taufrisch aber ne ungefensterte fft kannst du in matlab wohl nicht umsetzten... ich glaube du meinst rechteckgefenstert...
zu der frage der amplituden: wenn ich mich recht erinnere muss man nach der festerung noch entnormieren... ich würd mal hier nachlesen: http://web.mit.edu/xiphmont/Public/windows.pdf

beste grüße
tim
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 21.08.2010, 13:09     Titel:
  Antworten mit Zitat      
ja, mathematisch betrachtet ist es rechteckgefenstert. In Matlab hat man aber meist irgendwie abeschnittene Zeitreihen (sofern man nicht symbolisch rechnet).

Das man irgendwie normieren sollte, wurde ja schon genannt. Leider fehlt die Antwort vom TE.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.