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('

功率谱

');

%

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值