怎样在MATLAB中做短时傅立叶变换?

怎样在MATLAB中做短时傅立叶变换?,第1张

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11531331.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存