matlab用hilbert怎么实现对一个已知信号的包络分析

matlab用hilbert怎么实现对一个已知信号的包络分析,第1张

这方面的内容忘得差不多了

给你找一个程序 你看看吧:

close all

%

fs=30

t=0:1/fs:200

x6=sin(2*pi*2*t)+sin(2*pi*4*t)

x66 = hilbert(x6)

xx = abs(x66+j*x6)

figure(1)

hold on

plot(t,x6)

plot(t,xx,'r')

xlim([0 5])

hold off

% 包络算法,陵辩未考虑边界条件尺轮缺

d = diff(x6)

n = length(d)

d1 = d(1:n-1)

d2 = d(2:n)

indmin = find(d1.*d2<0 &d1<0)+1

indmax = find(d1.*d2<0 &d1>0)+1

envmin = spline(t(indmin),x6(indmin),t)

envmax = spline(t(indmax),x6(indmax),t)

figure

hold on

plot(t,x6)

plot(t,envmin,'r'桐橡)

plot(t,envmax,'m')

hold off

xlim([0 5])

用希御培尔伯特变换可以实现包络检波!

clear allclose all

t=0:200

x1=sin(8*pi*t/100)+1

subplot(411)plot(t,x1)title('信号')

x2=4*sin(40*pi*t/100)

subplot(412)plot(t,x2)title('载波')

x3=(1+x1).*x2

subplot(413)plot(t,x3)title('调幅信号')

x4=abs(hilbert(x3))

subplot(414)plot(t,x4)title('解调信号'闹拆或液伍)

先得信号核码的相位,unwrap 校正相位角,使相位在整体上连续喊李,diff对该相位角求导至于线性计算郑氏迟部分跟你的调制公式有关系的,不一定。

u=cos(2*pi*fc*t+2*pi*kf*int_m)

int_m是0—t区间内对信号函数的积分。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12382060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存