理解为什么“结果s”是一个复数矩阵,复数的含义是什么,相位谱,幅度谱等!
输入参数:
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() - 详细介绍了函数各参数的影响!