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

理解为什么“结果s”是一个复数矩阵,复数的含义是什么,相位谱,幅度谱等!

函数格式: [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)为短时傅里叶变换结果

MATLAB 短时傅里叶变换函数运用 - spectrogram_第1张图片


示例 

代码:

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);

结果:

MATLAB 短时傅里叶变换函数运用 - spectrogram_第2张图片

 

参考阅读

(1)MATLAB documents:spectrogram support documents

(2)函数格式中文解释

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

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

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

你可能感兴趣的:(MATLAB,Signal,Processing)