经典傅里叶变换的限制:
1、只能反映信号的整体特性;(完全是时域或频域)
2、要求信号满足平稳条件;
3、必须获得时域中的全部信息。
所以引入时频分析,同时使用时间和频率的联合函数来表示信号。
1 时频分析
1.1 短时Fourier变换
具体理论可以参看参考资料[1]的103~105页。
短时傅里叶变换的实现:
[tfr,t,f]=tfrstft(x)
tfr为短时傅里叶变换的变换系数,t为系数tfr对应的时刻,f为归一化频率向量。
例1:构建一个有256个点的正弦信号x,在[30,80]区间的频率为32Hz,在[140,190]区间的频率为64Hz。fs=256Hz.用tfrstft对x进行时频分析。
clc;
clear;
fs=256;
ts=1/fs;
N=256;
pt=0*ts:ts:(N-1)*ts;
t1=zeros(N,1);
t2=zeros(N,1);
t1(30:80)=pt(30:80);
t2(140:190)=pt(140:190);
f1=32;
f2=64;
x=sin(2*pi*f1*t1)+sin(2*pi*f2*t2);
figure(1);
subplot(311)
plot(pt,x);
xlabel('time/s');
ylabel('幅值');
title('时域图')
subplot(312)
[tfr,t,f]=tfrstft(x);
pcolor(t,f(1:N/2,1),abs(tfr([1:N/2],:)));
colorbar;
xlabel('采样点');
ylabel('归一化频率')
title('时频分布')
subplot(313)
t=(t-1)/fs;
f=f*fs;
pcolor(t,f(1:N/2,1),abs(tfr([1:N/2],:)));
xlabel('time/s');
ylabel('频率/Hz');
colorbar;
1.2 Gabor变换
理论部分在参考资料[1]中110~111.
Gabor变换以高斯函数为窗函数。
选择高斯函数的原因:1、高斯函数的傅里叶变换仍为高斯函数;2、Gabor变换是最优的窗口Fourier变换。
Gabor变换才是真正意义上的时间-频率分析。
Gabor变换的局限性:时间频率的宽度对所有频率是固定不变的。
matlab实现:
[tfr,dgr,gam]=tfrgabor(x)
[tfr,dgr,gam]=tfrgabor(x,N) N为Gabor系数的个数
[tfr,dgr,gam]=tfrgabor(x,N,Q) Q为过采样度。
例2 对信号进行gabor变换
clc;
clear;
fs=256;
t=0:1/fs:1-1/fs;
y=cos(20*pi.*t.*t)+cos(2*pi.*cos(6*pi.*t)+120*pi.*t);
tfrgabor(y',64,32)
1.3 Wigner-Ville时频分析
[1] 张玲玲 《基于matlab的机械故障诊断技术案例教程》