马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
- %%短时傅立叶变换
- clear;
- clc;
- fs=1000;%采样频率
- Ts=1/fs;%采样时间间隔
- TT=1;%终止时间
- t=0:Ts:TT;%采样时刻
- N=fs*TT;%采样点
- %signal
- x=zeros(size(t));
- x1=sin(2*pi*50*t);x2=sin(2*pi*200*t);
- x=[x1(1:300),x2(301:end)];
- figure(3);
- plot(x);
- title('信号波形图'); %图名
- xlabel('时间'); %x轴
- ylabel('振幅'); %y轴
- %STFFT
- Nw=51; %窗函数长
- L=Nw/2; %窗函数每次移动的样点数
- Tn=floor((N-Nw)/L)+1; %计算把数据x共分成多少段
- nfft=51;
- TF=zeros(Tn,nfft); %时频矩阵
- for i=1:Tn
- xw=x(25*i-24:25*i+26).*hamming(Nw)'; %加Hamming窗
- temp=fft(xw,nfft); %FFT变换
- temp=fftshift(temp); %频谱以0频为中心
- TF(i,:)=temp; %把谱图存放在TF中
- end
- figure(4);
- fnew=((1:nfft)-nfft/2)*fs/nfft;
- tnew=(1:Tn)*L*Ts;
- [F,T]=meshgrid(fnew,tnew);
- mesh(T,F,abs(TF));
- colorbar;
- title('STFT时频图')
- xlabel('时间 t/ms'); ylabel('频率 f/Hz');
复制代码 作出图之后,发现频率不是关于0Hz对称的,而且幅值也不对,不是除以N/2的关系。另外,如何把画只含正频率的图?谢谢!!
|