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

这篇具有很好参考价值的文章主要介绍了信号数据的‘包络谱’提取 及Matlab实现代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

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

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

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

%绘制信号图
t = 0:1e-4:0.1;
x = (1+cos(2*pi*50*t)).*cos(2*pi*1000*t);

plot(t,x)
xlim([0 0.04])

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

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

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

t = 0:1e-4:0.1;
x= (1+cos(2*pi*50*t)).*cos(2*pi*1000*t);

y= hilbert(x);
env = abs(y);
plot_param = {'Color', [0.6 0.1 0.2],'Linewidth',2};

plot(t,x)
hold on 
plot(t,[-1;1]*env,plot_param{:}) % 绘制出上下包络线
hold off
xlim([0 0.04])

matlab 包络谱,包络谱分析,matlab,数据分析,算法

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

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

fl1=12;
%返回x信号的包络,上下幅值,只输入两个参数时可以用
[up1,lo1] = envelope(x,fl1,'analytic');
fl2=30;
[up2,lo2] = envelope(x,fl2,'analytic');
%给出两图的绘制参数值
param_small = {'Color',[0.9 0.4 0.1],'Linewidth',2};
param_large = {'Color',[0 0.4 0],'Linewidth',2};

plot(t,x)
hold on
% 绘制并储存绘制图中的值
p1 = plot(t,up1,param_small{:});
plot(t,lo1,param_small{:});
p2 = plot(t,up2,param_large{:});
plot(t,lo2,param_large{:});
hold off

legend([p1 p2],'f1=12','f2=30')
xlim([0 0.04])
title('Analytic Envelope')

matlab 包络谱,包络谱分析,matlab,数据分析,算法

 暂时先分享这两种常用的方法,后续抽空更新其他方法...文章来源地址https://www.toymoban.com/news/detail-592753.html

到了这里,关于信号数据的‘包络谱’提取 及Matlab实现代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包