python绘制包络线_包络线和包络谱计算程序

%

一个求包络线和包络谱的程序

%

现代希尔伯特变换解调分析:

%

带通滤波;希尔伯特变换获得信号时域的包络线;用

fft

变换获得包络谱

%

如何获得包络线?

%

信号经希尔伯特变换不能直接得到包络,设信号

x

的希尔伯特变换为

y

,则平方和

%x.^2+y.^2(

或者再开根号,直接取平方和的效果为好

)

才是信号

x

的包络。

%

构造实验数据

clear all;close all;

t=0:0.005:1*pi;

fs=10000;

s=4*sin(2*200*pi*t).*(sin(2*4500*pi*t))+25*(sin(2*4500*pi*t));

figure(1);

subplot(211);plot(t,s);title('

原始信号

');

%

运用小波方法滤波

[c,l]=wavedec(s,1,'db10');

d1=wrcoef('d',c,l,'db10');

a1=0;

subplot(212);plot(d1);title('

滤波后重构的高频信号

');

%

希尔伯特变换求包络线

y=hilbert(d1);

y1=abs(d1+y*j);               %

这是取得包络线的三种方程。看一看哪种效果好。

%y1=abs(y);                     %

或者

z=x.^2+y.^2;

有的取得是

abs(y),

但是不推荐用。

%y1=d1.^2+y.^2;                 %

通过分析,

该方程在包络谱中的效果最好,

即取二者平

方和。

figure(2);

subplot(211);

hold on

plot(t,s);

plot(t,y1,'r');title('

包络线

');

hold off

%FFT

求包络谱

N=1024;

p=abs(fft(y1,N));

subplot(212);

plot((0:N/2-1)/N*fs,p(1:N/2));%

只需取到半频,即

fs/2

%f=(0:N-1)*fs/N; plot(f,p);   %

横坐标是在

fs

上,其中以

fs/2

为轴中心对称。

title('

包络谱

');xlabel('

频率

');ylabel('

功率谱

');

%

对比信号直接的傅里叶变换功率谱与包络谱

你可能感兴趣的:(python绘制包络线)