matlab有STFT的自带函数,你可以help下spectrogram,里面有例程。下面这个小程序就是一个STFT的小示例:
T = 0:0.001:2
X = chirp(T,100,1,200,'q')
spectrogram(X,128,120,128,1E3)
title('Quadratic Chirp')
如下:::::::k=20%k的范围
fs=250%采样频率
SNR=10%信噪比为10dB
n=0:1000-1%n从0至999,是1000个样点
x=exp(j*pi*k*(n/fs).^2)%这里是复数信号的表达式
x=awgn(x,SNR)% y = awgn(x,SNR) %在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。
subplot(221)%应为2,2,1,整个图型分为2*2部分,现在画第一个图
plot(n/fs,real(x))%采样时间点与信号实部关系
title('线性调频信号')%图名
xlabel('时间')%x轴
ylabel('振幅')%y轴,这里好像不对,y轴应该是实部啊,不是振幅,除非虚部为零
%%%%%%%%%%%%%%%%%%%%%%%%%% 线性调频信号频谱 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
P=fft(x)%快速傅立叶变换
subplot(222)%画第二张图
plot(n/length(n)*fs,abs(P))%频率点与频谱振幅的关系
title('线性调频信号频谱')
xlabel('频率')
ylabel('振幅')
%%%%%%%%%%%%%%%%%%%%%%%%%%%% 短时傅立叶变换 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=40
NFFT=512
N1=round((1000-N)*2/N+1)
w=gausswin(N)%N点的gauss窗函数
w=rot90(w)%函数rot90(A,k)将矩阵A旋转90 的k倍,当k为1时可省略
STFT=zeros(N1,NFFT)%zeros 产生零矩阵,行数为N1,列数为NFFT
for i=1:N1%循环
xt=x((i-1)*N/2+1:(i-1)*N/2+N)
xt=xt.*w%加高斯窗
STFT(i,:)=fft(xt,NFFT)%加高斯窗后的快速变换
end %循环结束
fn=(1:NFFT)*fs/NFFT
tn=(1:N1)*N/2/fs
[F,T]=meshgrid(fn,tn)%[X,Y]=meshgrid(x,y)语句执行后,矩阵X的每一行都是向量x,行数等于向量y的元素的个数,矩阵Y的每一列都是向量y,列数等于向量x的元素的个数。
subplot(223)%第三张
mesh(F,T,abs(STFT))%三维绘图
title('STFT')
xlabel('频率')
ylabel('时间')
subplot(224)%第四张
contour(T,F,abs(STFT))
title('T-F等高图')
xlabel('时间')
ylabel('频率')
问题补充:这是一个基于Matlab的信号短时傅立叶分析matlab程序
Inverse Synthetic Aperture Radar Imaging With MATLAB Algorithms(逆合成孔径成像MATLAB算法)配书源代码,可用于学习和理解ISAR的基本算法和实现过程。【实例截图】
【核心代码】
MatlabFiles
└── MatlabFiles
├── Appendix
│ ├── cevir2.m
│ ├── matplot.m
│ ├── matplot2.m
│ ├── shft.m
│ └── stft.m
├── Chapter1
│ ├── Figure1_1.m
│ ├── Figure1_11.m
│ ├── Figure1_2.m
│ ├── Figure1_3.m
│ ├── Figure1_5.m
│ ├── Figure1_8.m
│ ├── prince.wav
│ └── tot30.mat
├── Chapter2
│ ├── Figure2_11.m
│ ├── Figure2_15.m
│ ├── Figure2_16.m
│ ├── Figure2_17.m
│ ├── Figure2_18.m
│ ├── Figure2_19and20.m
│ └── Figure2_9.m
├── Chapter3
│ ├── Figure3_10.m
│ ├── Figure3_11.m
│ ├── Figure3_14.m
│ ├── Figure3_16.m
│ ├── Figure3_8.m
│ └── Figure3_9.m
├── Chapter4
│ ├── E_field.mat
│ ├── Es_range.mat
│ ├── Es_xrange.mat
│ ├── Esairbus.mat
│ ├── Escorner.mat
│ ├── Esplanorteta60.mat
│ ├── Figure4_14.m
│ ├── Figure4_15.m
│ ├── Figure4_18.m
│ ├── Figure4_19.m
│ ├── Figure4_20.m
│ ├── Figure4_21and22.m
│ ├── Figure4_23and24.m
│ ├── Figure4_26thru4_28.m
│ ├── Figure4_31and4_32.m
│ ├── Figure4_6.m
│ ├── Figure4_8.m
│ ├── PLANORPHI45_Es.mat
│ ├── airbusteta80_2_xyout.mat
│ ├── fighterSC.mat
│ ├── planorphi45_2_xyout.mat
│ ├── planorteta60_2_xyout.mat
│ ├── planorteta60xzout.mat
│ └── planorteta60yzout.mat
├── Chapter5
│ ├── Esairbus.mat
│ ├── Esplanorteta60.mat
│ ├── Figure5_10ab.m
│ ├── Figure5_10cd.m
│ ├── Figure5_10ef.m
│ ├── Figure5_11.m
│ ├── Figure5_12thru18.m
│ ├── Figure5_19ab.m
│ ├── Figure5_19cd.m
│ ├── Figure5_19ef.m
│ ├── Figure5_4.m
│ ├── Figure5_9.m
│ ├── airbusteta80_2_xyout.mat
│ ├── fighterSC.mat
│ ├── planorteta60_2_xyout.mat
│ └── ucak.mat
├── Chapter6
│ ├── CoutUssFletcher.mat
│ ├── Fighter.mat
│ ├── Figure6_14thru19.m
│ └── Figure6_21thru23.m
├── Chapter7
│ ├── Es60.mat
│ ├── Figures7_2thru7_8.m
│ ├── Figures7_9thru7_13.m
│ ├── MP.mat
│ ├── SC.mat
│ └── planorteta60_2_xyout.mat
└── Chapter8
├── Fighter.mat
├── Fighter2.mat
├── Fighter3.mat
├── Figure8_14.m
├── Figure8_15.m
├── Figure8_16thru8_22.m
├── Figure8_2thru8_6.m
├── Figure8_7thru8_12.m
└── scat_field.mat
10 directories, 85 files
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)