前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab 时频分析(短时傅里叶变换、STFT)「建议收藏」

matlab 时频分析(短时傅里叶变换、STFT)「建议收藏」

作者头像
全栈程序员站长
发布2022-09-19 22:37:00
1.9K0
发布2022-09-19 22:37:00
举报

大家好,又见面了,我是你们的朋友全栈君。

短时傅里叶变换,short-time fourier transformation,有时也叫加窗傅里叶变换,时间窗口使得信号只在某一小区间内有效,这就避免了传统的傅里叶变换在时频局部表达能力上的不足,使得傅里叶变换有了局部定位的能力。

1. spectrogram:matlab 下的 stft

How can I compute a short-time Fourier transform (STFT) in MATLAB?

stft 不同于 ft 之处在于,多了时间的概念,对信号 y=sin(128?π?t)+sin(256?π?t) ( 2πft?f 是频率 )进行短时傅里叶变换,该模拟信号中有 64 和 128 两种。

代码语言:javascript
复制
fs = 1000;
t = 0:1/fs:2;
y = sin(128*pi*t) + sin(256*pi*t);      

figure;
win_sz = 128;
han_win = hanning(win_sz);      % 选择海明窗

nfft = win_sz;
nooverlap = win_sz - 1;
[S, F, T] = spectrogram(y, window, nooverlap, nfft, fs);

imagesc(T, F, log10(abs(S)))
set(gca, 'YDir', 'normal')
xlabel('Time (secs)')
ylabel('Freq (Hz)')
title('short time fourier transform spectrum')

2. cwt:连续小波变换

Time-Frequency Analysis of Modulated Signals

小波变换进一步拓展了时频局部分析的能力。

代码语言:javascript
复制
[cfs,f] = cwt(quadchirp,'bump',fs);
helperCWTTimeFreqPlot(cfs,tquad,f,'surf','CWT of Quadratic Chirp','Seconds','Hz')

这里选择的是 bump 型小波,选择该类型的原因在于,当信号震荡剧烈,且更关注信号局部瞬变的时频分析。

代码语言:javascript
复制
load quadchirp;
fs = 1000;
[S,F,T] = spectrogram(quadchirp,100,98,128,fs);
helperCWTTimeFreqPlot(S,T,F,'surf','STFT of Quadratic Chirp','Seconds','Hz')

这里可以进一步对比 STFT(短时傅里叶变换)和 CWT(连续小波变换)在时频分析上的精细化刻画能力。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167557.html原文链接:https://javaforall.cn

本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. spectrogram:matlab 下的 stft
  • 2. cwt:连续小波变换
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com