通过希尔伯特变换可以求得一个信号的包络曲线,瞬时频率,瞬时相位,瞬时谱等等。
计算方法在此不赘述,本文只演示希尔伯特变换求包络线和瞬时频率的效果。
代码:
clc;close all;clear;
x= 0:pi/500:5*pi;
y2=sin(x);
a=30;t=0;
figure(1);
y1=1+0.8*sin(0.3*2*pi*x);
subplot(3,1,1);
plot(x,y1,'r--','Linewidth',1.2);
axis([0,15,-2,2]);
hold on;
P1=plot(x,y1,'k')
legend('模拟信号','载波信号')
title('模拟信号和载波信号');
subplot(3,1,2);
P2=plot(x,y1,'r','Linewidth',1.2);
axis([0,15,-2,2]);
legend('包络线');
title('希尔伯特变换解包络');
subplot(3,1,3);
P3=stem(a,'k')
axis([0,40,-1,40]);
legend(['为了便于观察,f2比f1提前一个单位']);
title('实际的瞬时频率f1与希尔伯特变换得到的瞬时频率f2');
while a<40
a=a+0.01;
y2=sin(a*x);
y3=y2.*y1;
z = hilbert(y3'); %运用希尔伯特变换生成解析信号
inst_amplitude = abs(z)'; %提