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 falsch

 

free56
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 14.06.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2019, 18:41     Titel: FFT falsch
  Antworten mit Zitat      
Hi Smile
Ich möchte die FFT eines Drucksignals berechnen, das 1000 mal pro Sekunde wiegt.
Ich brauche den Wert von y in 130 -150 Hz Teil nach der Konvertierung des Signals in FFT

Ich habe 2 Matlab-Codes erstellt und weiß nicht, was richtig ist.

Kannst du mir helfen

Vielen Dank

Code:

Fs = 1000;                    % Sampling frequency
T = 1/Fs;                     % Sample time
L = 8000;                     % Length of signal
t = (0:L-1)*T;                 % Time vector
x=TL26;                        %signal
 y=table2array(x);
 n=4; %% order of Butterworth filter
Wn=[130 150]; %  130 ~ 150Hz signal
Fn=Fs/2; % Nyquist
ftype='bandpass';
[b,a]=butter(n, Wn/Fn, ftype);%%% butter(): 버터워스 returns an order 2*n digital bandpass filter if
 %%%fbn is a two-element vector  
e=filtfilt(b,a,y);
 
N = length(e);
NFFT = 2^nextpow2(N); % Next power of 2 from length of y
%Y = fft(y,NFFT)/NFFT;
Y = fft(e,NFFT);
Ya = abs(Y)/NFFT; % correctly normalised amplitude
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
figure(99)
plot(f,2*abs(Ya(1:NFFT/2+1)));
 
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')
 



Code:

fs=1000; % samples per second
Ts=1/fs;  % seconds per sample
t=(1:8000)*Ts; %Time
 
x=TL26;    % signal
y=table2array(x);
n=4; %% order of Butterworth filter
Wn=[130 150]; %  130 ~ 150Hz signal
Fn=fs/2; % Nyquist
ftype='bandpass';
[b,a]=butter(n, Wn/Fn, ftype);%%% butter(): 버터워스 returns an order 2*n digital bandpass filter if
           
yy=filtfilt(b,a,y);
 
fcoeff_des = fft(yy);
 
n1 = length(fcoeff_des);
 
mag_vel_des = abs((fcoeff_des)/n1);
 
fax_bins_neu = [0:n1-1];        %Frequency axis in bins
 
half = floor(n1/2);
fax_Hz1 = fax_bins_neu*fs/n1; % frequency axis in Hz
     
figure(4)
plot(fax_Hz1(1:half), mag_vel_des(1:half))
hold on
 
xlabel('Frequenz (Hz)')
ylabel('Betrag')
title('Frequenzspektrum gefiltert')
 


TL26.mat
 Beschreibung:

Download
 Dateiname:  TL26.mat
 Dateigröße:  55.49 KB
 Heruntergeladen:  336 mal
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.