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

Pegelkorrektur bei FFT stimmt nicht

 

dampfnudl
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 20.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.02.2018, 11:45     Titel: Pegelkorrektur bei FFT stimmt nicht
  Antworten mit Zitat      
Hallo Zusammen,

ich habe ein Problem bei der richtigen Korrektur der Pegelwerte einer FFT.
Ich habe das kleine Beispiel unten programmiert um meine Funktion zu überprüfen, aber das Ergebnis stimmt leider nicht so ganz.
Ich verwende einen Sinus mit 1000 Hz und bringe den auf einen RMS-Wert von 60 dB. Anschließend wende ich die FFT an und will im Frequenzspektrum bei 1000 Hz einen Pegel von 60 dB erzielen. Ich bekomme aber komischerweise einen Wert von 63 dB, obwohl ich Samplingrate und Fensterlänge genau so gewählt habe, dass die Auflösung so abgestimmt ist, dass nur ein Bin einen Ausschlag hat.

Ich verstehe nicht so ganz, wo das Problem liegt. Ich würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte.

Code:

clear all
close all

tend=1;
fs  = 32768; % Samplingfrequenz    
t   = 0:1/fs:tend;  % Zeitvektor
At  = 0.02; % Amplitude in Pa (60dB=0,02 Pa)
ft  = 1000; % Frequenz
N   = 8192; % Länge für FFT
dfs = fs/N; % Frequenzauflösung


% Sinus erzeugen
signal = sin(2*pi*ft*t);
signal_rms = rms(signal);

% passend skalieren um 60 dB RMS zu bekommen
signal = signal.*(At/signal_rms);

% Begrenzung für fft:
signal=signal(1:8192);
   
     
% Berechnung der FFT
% ------------------

H = fft(signal, N);

Lg      =   abs(H);    
Lg      =   [Lg(1)/N, Lg(2:N/2)/(N/2)]; % Skalierung
LdB      =   20*log10(Lg/2e-5);          % Umrechnung in dB

subplot(2,1,1)
stem(Lg)
title('Lg')
xlim([245 255])
grid

subplot(2,1,2)
stem(LdB)
title('LdB')
ylim([0 65])
xlim([245 255])
grid
 
Private Nachricht senden Benutzer-Profile anzeigen


LObo2010

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2019, 20:32     Titel: RMS und Pegel FFT nochmal nachlesen ;-)
  Antworten mit Zitat      
Hey Hey,

ich habe deine Code auf den richtigen Pegel korrigiert.

Die FFT gibt dir den maximalen Pegel, zu jeder Frequenz, für eine bestimmte Sampellänge, wider. Durch die Anwendung des RMS auf deinen Ausgangspegel erhöht sich der maximale Pegel.


Schöne Grüße und weiterhin viel Erfolg Wink


Code:

clear all
close all

tend=1;
fs  = 32768; % Samplingfrequenz    
t   = 0:1/fs:tend;  % Zeitvektor
At  = 0.02; % Amplitude in Pa (60dB=0,02 Pa)
ft  = 1000; % Frequenz
N   = 8192; % Länge für FFT
dfs = fs/N; % Frequenzauflösung


% Sinus erzeugen
signal = At * sin(2*pi*ft*t);
% signal_rms = rms(signal);

% passend skalieren um 60 dB RMS zu bekommen
% signal = signal.*(At/signal_rms);

% Begrenzung für fft:
signal=signal(1:8192);
   
     
% Berechnung der FFT
% ------------------

H = fft(signal, N);

Lg      =   abs(H);    
Lg      =   [Lg(1)/N, Lg(2:N/2)/(N/2)]; % Skalierung
LdB      =   20*log10(Lg/2e-5);          % Umrechnung in dB

subplot(2,1,1)
stem(Lg)
title('Lg')
xlim([245 255])
grid

subplot(2,1,2)
stem(LdB)
title('LdB')
ylim([0 65])
xlim([245 255])
grid
 
 
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.