MATLAB 信号分析FFT STFT

MATLAB 信号分析FFT STFT

首先得到一串(time,data)的数据,选择有效地信号区域,然后显示有效地原始信号和有效地FFT或者STFT信号。

ginput:利用鼠标选择输入点;

semilogy,loglog,spectrogram分别为显示ylog显示,xylog显示,spectrom显示STFT

Tstart Tend 设置原始信号需要选择的时间范围

plot(time,data);
Tstart = 40/(time(2) - time(1));%get the position
Tend = 50/(time(2) - time(1));%get the position
figure(1);
plot(time(Tstart:Tend),data(Tstart:Tend));

a = ginput(4);
Position = a(:,1)/1.25e-4;
x1 =  time(Position(1):Position(2));
y1 =  data(Position(1):Position(2));
figure(2);
plot(x1,y1);
title('primary signal ');


N=length(Position(1):Position(2)); %样点个数
fs = 8000;%采样频率
df=fs/(N-1);%分辨率
f=(0:N-1)*df;%其中每点的频率
Y=fft(data(Position(1):Position(2)))/N*2; %真实的幅值
figure(3);
loglog(f(1:N/2),abs(Y(1:N/2)),'r');
title('FFT');
hold on;

x2 =  time(Position(2):Position(3));
y2 =  data(Position(2):Position(3));
figure(4);
plot(x2,y2);
title('primary signal ');

fs = 8000;%采样频率
df=fs/(N-1);%分辨率
f=(0:N-1)*df;%其中每点的频率
Y=fft(data(Position(2):Position(3)))/N*2; %真实的幅值
figure(3);
N
loglog(f(1:N/2),abs(Y(1:N/2)));
title('FFT');


你可能感兴趣的:(MATLAB)