当前位置:   article > 正文

信号数据的‘包络谱’提取 及Matlab实现代码_matlab包络谱代码

matlab包络谱代码

目录

1、使用 hilbert 函数提取包络。

 2、使用envelope函数直接生成信号包络并修改其计算方式。

        创建双边带幅值调制信号,以此信号作为讲解样本。载波频率为 1 kHz。调制频率为 50 Hz。调制深度为 100%。采样率为 10 kHz。

  1. %绘制信号图
  2. t = 0:1e-4:0.1;
  3. x = (1+cos(2*pi*50*t)).*cos(2*pi*1000*t);
  4. plot(t,x)
  5. xlim([0 0.04])

1、使用 hilbert 函数提取包络。

        包络是由 hilbert 计算的解析信号的幅值。绘制包络和原始信号。将 plot 函数的名称-值对组参数存储在元胞数组中,供以后使用。

分析信号的幅值捕获信号的缓慢变化特性,而相位包含高频信息。

  1. t = 0:1e-4:0.1;
  2. x= (1+cos(2*pi*50*t)).*cos(2*pi*1000*t);
  3. y= hilbert(x);
  4. env = abs(y);
  5. plot_param = {'Color', [0.6 0.1 0.2],'Linewidth',2};
  6. plot(t,x)
  7. hold on
  8. plot(t,[-1;1]*env,plot_param{:}) % 绘制出上下包络线
  9. hold off
  10. xlim([0 0.04])

 2、使用envelope函数直接生成信号包络并修改其计算方式。

        可以调整用于求得分析包络的Hilbert滤波器的长度。需要注意的是,使用太小的滤波器长度会导致包络失真。

  1. fl1=12;
  2. %返回x信号的包络,上下幅值,只输入两个参数时可以用
  3. [up1,lo1] = envelope(x,fl1,'analytic');
  4. fl2=30;
  5. [up2,lo2] = envelope(x,fl2,'analytic');
  6. %给出两图的绘制参数值
  7. param_small = {'Color',[0.9 0.4 0.1],'Linewidth',2};
  8. param_large = {'Color',[0 0.4 0],'Linewidth',2};
  9. plot(t,x)
  10. hold on
  11. % 绘制并储存绘制图中的值
  12. p1 = plot(t,up1,param_small{:});
  13. plot(t,lo1,param_small{:});
  14. p2 = plot(t,up2,param_large{:});
  15. plot(t,lo2,param_large{:});
  16. hold off
  17. legend([p1 p2],'f1=12','f2=30')
  18. xlim([0 0.04])
  19. title('Analytic Envelope')

 暂时先分享这两种常用的方法,后续抽空更新其他方法...

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号