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');