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

FFT aus Zeitrohdaten (Druck und Zeit)

 

Zero1214
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2014, 21:16     Titel: FFT aus Zeitrohdaten (Druck und Zeit)
  Antworten mit Zitat      
Hallo,

ich arbeite mich seit kurzer Zeit in Matlab ein und komm bei der FFT nicht weiter. Ich hab mir bereits einige Themen in diesem Forum dazu angeschaut und versucht, die Lösungen auf mein Problem zu übertragen, jedoch gab mir Matlab nur Fehler aus oder die Meldung, die Inhalte der Lösung wären keine Zahlen (NaN).

Ich muss gegebene Zeitrohdaten, welche die gemessene Drücke einer Schwingung pro Zeit enthalten, in den Frequenzbereich transformieren, damit ich dann die einzelnen Frequenzen zu Terzen zusammenfassen und weiter bearbeiten kann.

Die Ausgangsvariablen umfassen etwa 560000 Daten. Den Zeitvektor t hab ich definiert von 0 bis zur Gesamtmesszeit. Wo kann ich den Zeitvektor jetzt einbinden?
Zusätzlich soll noch eine Hamming-Fensterung statt finden.
Es ist eine Frequenzauflösung von 1Hz gefordert. Ich weiß jedoch nicht, wie ich diese Frequenzauflösung in das Programm einbinden kann. Ich bin für jeden Tipp dankbar.

Code:
% Das sind meine Daten:
%p_SPa=Druckdaten, ts=Zeitdaten

fg=14000;                %Grenzfrequenz
fa=2*fg;                   %Abtastfrequenz
Ts=1.169065E+001   %Messdauer
N=length(p_SPa);     %Anzahl Messdaten
dt=Ts/N;                  %Abtastintervall
df=1;                       %Frequenzauflösung von 1 Hz wird gefordert

t=0:dt:Ts;

f = [0:floor((N-1)/2)] / (N*Ts);        % Frequenzvektor fuer Plot
X = fft (hamming(p_SPa)'.*N);        % Fouriertransformation
X = X / N;                                      % Normierung
X = [X(1) 2*X(2:floor((N-1)/2)+1)]; % Begrenzen auf < F_max  
Private Nachricht senden Benutzer-Profile anzeigen


Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.06.2014, 23:49     Titel:
  Antworten mit Zitat      
Moin,

die Frequenzauflösung bindest du über die Anzahl der FFT-Bins (die Anzahl der Punkte, für die die FFT berechnet werden soll) ein.

Ich habe deinen Code mal überarbeitet:

Code:

clear
close
clc

% Daten einlesen (hier zufällige Daten)
data = randn(560000,1);

% Abtastrate (28 kHz)
fs = 28e3;

% Genauigkeit 1 Hz
df = 1;    

% benötigte Anzahl an FFT-Bins für gewünschte Genauigkeit
nfft = fs / df;

% Fensterung
data = data .* hamming(length(data));

% FFT
FFTData = fft(data, nfft);

% Frequenzvektor
freq = linspace(0,round(0.5*fs), 0.5*nfft+1);

% plot
plot(freq, 20*log10(abs(FFTData(1:nfft/2+1))))
xlabel('Frequenz [Hz]')
ylabel('20\cdot log_{10}(|Y|) dB ->')
title('einseitiges FFT-Spektrum')
 


Die Zusammenfassung zu Terzbändern fehlt natürlich noch, aber das ist schnell gemacht.

Viel Spass noch
 
Zero1214
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2014, 21:29     Titel:
  Antworten mit Zitat      
Vielen Dank für die Hilfe! Damit komm ich weiter.
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.