MATLAB 短时傅里叶变换函数运用 - spectrogram

理解为什么“结果s”是一个复数矩阵,复数的含义是什么,相位谱,幅度谱等! 具体可参考这篇:MATLAB 快速傅里叶变换(fft)结果为什么是复数?

 

函数格式: [s,f,t,p]=spectrogram(y,window,noverlap,nfft,fs);

输入参数:
x:输入的信号 向量
window:窗口长度 该函数默认使用海明窗
noverlap:各段之间重叠的采样点数 即两窗口相重叠的部分
nfft:对窗口下的信号做FFT的点数
fs:信号的采样率

输出参数:

s:输入信号x的短时傅里叶变换。
        它的每一列包含一个短期局部时间的频率成分估计,时间沿列增加,频率沿行增加。
w:为四舍五入的频率,其长度等于S的行数。
t:频谱图计算的时刻点,值为窗的时刻中值。
p:功率谱密度PSD(Power Spectral Density) 。

功率谱密度PSD计算公式,其中w(n)为窗函数,Fs为采样率,k为变换系数,s(i,j)为短时傅里叶变换结果


示例 

代码:

clc;
clear;

t = 0:0.001:2;
x = chirp(t,100,1,200,'quadratic');
window = 128;
noverlap = 120;
nfft = 1000;
fs = 1/0.001;

[s,w,t,p] = spectrogram(x,window,noverlap,nfft,fs); % s是复数矩阵!

% s的幅度谱
figure
imagesc(t,w,pow2db(abs(s)));
c=colorbar('Eastoutside');
ylabel(c,'Power/frequency (dB/Hz)')
%s的相位谱
figure
imagesc(t,w,angle(s));

% 直接出图
figure
spectrogram(x,window,noverlap,nfft, fs,'yaxis');
title('Quadratic Chirp')


% 另一个图
[~,f,t,p] = spectrogram(x,window,noverlap,nfft,fs);
[fridge,~,lr] = tfridge(p,f);
figure
plot3(t,fridge,abs(p(lr)),'LineWidth',4);

结果:

 

参考阅读

(1)MATLAB documents:spectrogram support documents

(2)函数格式中文解释

(3)数字信号处理——时频分析(短时傅里叶变换)

(4)matlab时频分析之短时傅里叶变换 spectrogram - 写的很好,很详细!

(5)解析MATLAB短时傅里叶变换函数spectrogram() - 详细介绍了函数各参数的影响!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值