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

Frequenz diskreter Messpunkte berechnen (mittels FFT)

 

Peter159

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.06.2014, 15:48     Titel: Frequenz diskreter Messpunkte berechnen (mittels FFT)
  Antworten mit Zitat      
Hallo,

folgendes Problem: ich habe eine Messreihe von 1024 (diskreten) Punkten und möchte aus dieser eine Frequenz berechnen. Ich kann mich noch schwach daran erinnern, dass dies mittels fft möglich sein sollte, bin aber auf diesem Gebiet eher Ahnungslos und benötige darum eure Hilfe. Das "umfassende Beispiel" habe ich mir schon angesehen, doch leider vertsehe ich nur -Bahnhof- Embarassed

So wie ich das verstehe, erzeugt mir die fft aus den diskreten Punkten eine Funktionsreihe aus Sin und Cos. Und daraus sollte irgendwie die Frequenz berechenbar sein. Aber wie?

Folgenden Code habe ich:

Code:

pkg load signal

% Zeitbereich
% ----------------------------------

fa = 5000; % Abtastfrequenz
fn = fa/2; % Nyquistfrequenz: halbe Abtastfrequenz
N = 1024; % gewünschte FFT-Länge
df = fa/N; % Frequenzauflösung
a1 = 1; % Amplitudenvorgabe



w = load("daten.txt"); #Datei einlesen
y = detrend(w(:,3)); #Signal


% Frequenzbereich
% ----------------------------------

% Berechnung der FFT
% ------------------
H = fft(y, N);
% Berechnung des Amplitudengangs aus dem komplexen Frequenzvektor H:
amplH = abs(H);
% Amplitudenskalierung (Normierung auf N) und verschieben der Elemente des
% Amplitudenvektors, so dass die Darstellung des Amplitudengangs von -fn...0...fn
% erfolgen kann:
amplitudengang = fftshift(amplH/N);
% Graphische Darstellung
% ----------------------
% Frequenzvektoren (werden bei der graphischen Darstellung benötigt):
x_fn = 0 : df : fn-df;
x_fa = 0 : df : fa-df;
% max. Amplitude zur Skalierung der graphischen Darstellung feststellen:
%a = max([a1, a2, a3, a4, a5]); % wird später benötigt
a = a1;
fig = figure(fig+1);
stem(x_fa-fn, amplitudengang, 'b.-')
axis([-fn fn 0 a/2*1.1])
title('Amplitudengang')
ylabel('Amplitude')
xlabel(['Auflösung: ',num2str(df),' Hz Frequenz in Hz'])
grid



Wie ihr im 2.Plot sehen könnt, kann ich daraus keine (eindeutige) Frequenz ablesen. Warum?
Der ertse Plot zeigt die Messdaten. Da diese alle positiv sind, habe ich sie mit 'detrend' eingelesen. Mach das Sinn?

Ich hoffe ihr könnt mir weiterhelfen. Vielen Dank...


Viele Grüße,
der Peter

Unbenannt.png
 Beschreibung:
Alle 6 Plots aus dem "umfassenden Beispiel". Plot1: Original Messdaten, Plot2: fft

Download
 Dateiname:  Unbenannt.png
 Dateigröße:  122.29 KB
 Heruntergeladen:  726 mal


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.