fft算法和stft算法比较20041215.m

来自「用matlab工具比较fft和stft算法的区别」· M 代码 · 共 46 行

M
46
字号
clear;
tp=2;                           %采样周期
N=1024;                               %总采样点
Ts=tp/N;                           %采样总时间
detf=1/tp;	                         %频域分辨率
t=0:Ts:Ts*(N-1);                 %时域采样序列
t1=0:Ts:Ts*(N/2-1);
x1=cos(2*pi*50*t1);
t2=Ts*(N/2):Ts:Ts*(N-1);
x2=0.2*cos(2*pi*150*t2);
f=0:detf:(N-1)*detf;             %频域采样序列
fs=1/Ts;
%x=cos(2*pi*50*t)+0.2*cos(2*pi*150*t);%原始信号
x=[x1,x2];
fft_x=abs(fft(x))*2/N;                                           %FFT运算

	                                            %轴范围(X,Y)

stem(f,fft_x);                                                   %棒状图显示
plot(f,fft_x);                                                   %折线图显示

xlabel('Frequency(HZ)','fontsize',[10]);                    %X轴标签及标签字体
ylabel('x(f)','fontsize',[10]);                              %Y轴标签
title('cos(2*pi*50*t)+0.2*cos(2*pi*150*t),t=0~0.2');                   %图标题

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%specgram(x,1024,fs,kaiser(60,1),40)
%specgram(x,1024,fs,kaiser(120,1),100)
%specgram(x,1024,fs,kaiser(250,1),230)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(2);
specgram(x,1024,fs,kaiser(64,1),62);
figure(3);
specgram(x,1024,fs,kaiser(120,1),100)
figure(4);
specgram(x,1024,fs,kaiser(250,1),230)


%%%%%%%%%%%%%%
figure(5);
[B,ff,tt]=specgram(x,1024,fs,kaiser(64,1),62);
[X,Y] = meshgrid(1:3,10:14)
meshc(abs(B));
colormap([1 0 0]);
hidden off

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?