当前位置:文档之家› 短时傅立叶变换matlab仿真程序

短时傅立叶变换matlab仿真程序

clear all;
clc;

%------------------>Basic Parameters<-----------------
f1 = 500;
f2 = 1000;
fN = 8000;
n = 10000;
t = 0:1/fN:(n-1)/fN;

%------------------>Generate signals<-----------------
sig1 = sin(2*pi*500*t);
sig2 = sin(2*pi*1000*t)/2;
puls = zeros(size(t));
puls(2100) = 10;
puls(2132) = 10;
x = sig1+sig2+puls;

%------------------>window width<-----------------
win1 = 12.8*fN/1000; %12.8ms 102.4 points
win2 = 6.4*fN/1000; %6.4ms 51.2 points
win3 = 3.2*fN/1000; %3.2ms 25.6 points

%------------------>stepping length<-----------------
stepping1 = 16;
stepping2 = 32;
stepping3 = 64;
%------------------>nfft points<-----------------

nfft = min(256,length(x));

%------------------>painting(Time Frequency Analysis)<-----------------
%----->1.Hamming windows,different window width<-----------
figure(1)
subplot(311);
specgram(x,nfft,fN,hanning(round(win3)));
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Hamming windows,window width 3.2ms')
subplot(312);
specgram(x,nfft,fN,hanning(round(win2)));
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Hamming windows,window width 6.4ms')
subplot(313);
specgram(x,nfft,fN,hanning(round(win1)));
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Hamming windows,window width 12.8ms')
%-------------------------------------

%----->2.Gauss window ,different window width<-----------
figure(2)
subplot(311);
specgram(x,nfft,fN,gausswin(round(win3)));
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Gauss window ,window width 3.2ms')
subplot(312);
specgram(x,nfft,fN,gausswin(round(win2)));
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Gauss window ,window width 6.4ms')
subplot(313);
specgram(x,nfft,fN,gausswin(round(win1)));
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Gauss window ,window width 12.8ms')
%---------------------------------------

%------>3.Hamming windows,different stepping length <-----------
figure(3)
subplot(311);
specgram(x,nfft,fN,hanning(round(win1)),stepping1);
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Hamming windows,window width12.8ms,stepping length 16')
subplot(312);
specgram(x,nfft,fN,hanning(round(win1)),stepping2);
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Hamming windows,stepping length 32')
subplot(313);
specgram(x,nfft,fN,hanning(round(win1)),stepping3);
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Hamming windows,window width12.8ms,stepping length 64')
%---------------------------------------

%------>4.Gauss window ,different stepping length <-----------
figure(4)
subplot(311);
specgram(x,nfft,fN,gausswin(round(win1)),16);
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Gauss window ,wind

ow width12.8ms,stepping length 16')
subplot(312);
specgram(x,nfft,fN,gausswin(round(win1)),32);
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Gauss window ,window width12.8ms,stepping length 32')
subplot(313);
specgram(x,nfft,fN,gausswin(round(win1)),64);
xlabel('time(ms)')
ylabel('frequency(kHz)')
title('STFT Time-Frequency Map,Gauss window ,window width 12.8ms,stepping length 64')
%---------------------------------------

相关主题
文本预览
相关文档 最新文档