信号处理——时频分析

发布于:2024-06-28 ⋅ 阅读:(13) ⋅ 点赞:(0)

经典傅里叶变换的限制:

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的机械故障诊断技术案例教程》