Matlab实现短时傅里叶变换

支持输入波形长度及时变特性参数调整
支持FFT点数调整
支持STFT步进调整
支持窗含数据类型调整
支持数据格式调整double、single
%%对照组,直接FFT
Wave_Length=10240;
PointNum=256;
Steps=64;
Times=(Wave_Length-PointNum)/Steps+1;
Waveform_Step=500;
Waveform=TimeVarying_Signal_Para(Wave_Length,Waveform_Step); %产生时变正弦信号,注意,与原始的时变波形在模块有差异,因为产生逻辑有小区别;尾部部分信号的处理纠正过
%Waveform=TimeVarying_Signal_Gen();
%%不同窗函数的测试
% Windows_Coe = rectwin(PointNum); %产生矩形窗系数
Windows_Coe = hann(PointNum,‘symmetric’); %产生汉宁窗系数
% Windows_Coe = hamming(PointNum,‘symmetric’); %产生汉明窗系数
% Windows_Coe = gausswin(PointNum); %产生高斯窗系数
% Windows_Coe = blackmanharris(PointNum,‘symmetric’); %产生blachmanHarris窗系数
% Windows_Coe = kbdwin(PointNum,10); %产生kbdwin窗系数 Kaiser_Bessel
%%加窗处理
Waveform_Original_Record=zeros(1,TimesPointNum);
Waveform_Windowing_Record=zeros(1,Times
PointNum);
for iteration = 0:1:Times-1
Addr_Bias=iterationPointNum;
Step_Bias=iteration
Steps;
Waveform_Original_Record(1,Addr_Bias+1:Addr_Bias+PointNum)=Waveform(1,Step_Bias+1:Step_Bias+PointNum);
Waveform_Windowing_Record(1,Addr_Bias+1:Addr_Bias+PointNum)=(Windows_Coe.’).Waveform(1,Step_Bias+1:Step_Bias+PointNum);
end
%用Matlab加窗数据做FFT
Matlab_Windowing_Data=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_Result=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_Real=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_Image=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_Amplitude=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_Phase=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_DataSingle=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_ResultSingle=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_RealSingle=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_ImageSingle=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_AmplitudeSingle=zeros(1,length(Waveform_Windowing_Record));
Matlab_Windowing_FFT_PhaseSingle=zeros(1,length(Waveform_Windowing_Record));
for iteration=0:1:(length(Waveform_Windowing_Record))/PointNum-1 %%29轮
Addr_Bias=iteration
PointNum;
Step_Bias=iterat

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值