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

Verstehe Ergebnis nach Windowing in FFT nicht

 

TanjaFAU
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 11.08.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.01.2019, 11:45     Titel: Verstehe Ergebnis nach Windowing in FFT nicht
  Antworten mit Zitat      
Hallo ihr Lieben,

ich habe eine Frage zum Windowing bei der FFT.
Folgendes Szenario.
Ich erzeuge mir in Simulink ein Signal aus zwei Sinus:
1. 50Hz und Amplitude 5
2. 1000Hz und Amplitude 1
Das Signal wird abgetastet mit fs=3e3Hz
Eine Funktion erzeugt mir Fenster von 60 Samples (also genau eine 50Hz-Periode)
mit dem Namen DataWinUA
Das 60. Fenster ist das erste volle Fenster DataWinUA(:,:,60) und beginnt mit den Werten sehr schön bei 0.
Die Fenster gehen in die folgenden zwei Simulink-Funktionen:

Code:

function FFT  = Fast_Fourier_Transformation(DataWinUA)
x = DataWinUA;
wlen = length(x);

test1=abs(fft(x))./wlen;
FFT=test1(1:wlen/2+1).*2;
end
 


Mit der normalen FFT erhalte ich sehr schön meine peaks von 5 und 1 in den entsprechenden bins. Sowohl für das 60. Window als auch alle folgenden. Das macht ja auch Sinn, da ich immer eine komplette Periode im Fenster habe und somit kein Leakage auftreten kann.

val(:,:,60) =

Columns 1 through 11

0.0000 5.0002 0.0001 0.0002 0.0002 0.0003 0.0006 0.0000 0.0003 0.0009 0.0003

Columns 12 through 22

0.0005 0.0006 0.0005 0.0006 0.0000 0.0002 0.0003 0.0004 0.0003 0.9996 0.0001

Columns 23 through 31

0.0005 0.0004 0.0004 0.0003 0.0000 0.0005 0.0003 0.0001 0.0000


Bei der STFT erhalte ich schöne Werte für die volle Periode bei DataWinUA(:,:,60),
wie der Theorie entsprechend "verschmiert".

Code:

function STFT  = Short_Time_Fourier_Transformation(DataWinUA)
x = DataWinUA;
wlen = length(x);
win = blackman(wlen,  'periodic').';
test1=abs(fft(x.*win))./sum(win);
STFT=test1(1:wlen/2+1).*2
end
 


val(:,:,60) =

Columns 1 through 11

0.0000 4.5239 2.9761 0.4758 0.0002 0.0002 0.0004 0.0002 0.0002 0.0005 0.0002

Columns 12 through 22

0.0010 0.0012 0.0006 0.0002 0.0002 0.0003 0.0006 0.0948 0.5950 0.9996 0.5946

Columns 23 through 31

0.0948 0.0001 0.0000 0.0001 0.0004 0.0003 0.0001 0.0002 0.0000


für andere Fenster erhalte ich aber beispielsweise folgendes:



val(:,:,68) =

Columns 1 through 11

4.4237 5.0721 2.9763 0.4763 0.0002 0.0002 0.0005 0.0003 0.0003 0.0006 0.0006

Columns 12 through 22

0.0009 0.0010 0.0008 0.0005 0.0004 0.0004 0.0005 0.0955 0.5952 0.9997 0.5949

Columns 23 through 31

0.0951 0.0001 0.0001 0.0002 0.0003 0.0004 0.0003 0.0002 0.0001

Kann mir jemand erklären, wieso ich im Spektrum plötzlich DC-Komponenten sehe?
Diese Komponente steigt bis zu 1,5fachen Periode DataWinUA(:,:,90) und sinkt dann wieder bis zur 2fachen Periode DataWinUA(:,:,120) usw.

Vielen Dank schonmal für eure Hilfe.
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.