怎样在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')

这样用matlab做傅里叶变换:

1、我们使用matlab开发的傅立叶变换程序代码如下:

syms x

f = exp(-2*x^2) %our function

ezplot(f,[-2,2])  % plot of our function

FT = fourier(f) % Fourier transform

将其写入到我们的matlab程序模块中。

2、我们运行上面的傅立叶变换程序代码,将得出运行结果:FT = (2^(1/2)*pi^(1/2)*exp(-w^2/8))/2。

3、如果我们需要更高级的显示,我们修改上述代码即可,如使用ezplot(FT)作傅里叶变换折线图。

以上就是如何用matlab做傅里叶变换的解决步骤。

a=wavread('jiasiqi.wav') %将音频信号jiasiqi.wav读入

subplot(2,1,1), %分配画布,一幅图上共两个图,这是第一个

plot(a)title('original signal') %画出原始信号,即前面这个音频信号的原始波形

grid%添加网格线

N=256 %设置短时傅里叶变换的长度,同时也是汉明窗的长度

h=hamming(N) %设置汉明窗

for m=1:N %用汉明窗截取信号,长度为N,主要是为了减少截断引起的栅栏效应等

b(m)=a(m)*h(m)

end

y=20*log(abs(fft(b))) %做傅里叶变换,取其模值,即幅频特性,然后用分贝(dB)表示

subplot(2,1,2) %分配画布,第二副图

plot(y)title('短时谱') %画出短时谱

grid%添加网格线


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存