幅度调制的包络检波解调(求MATLAB代码

幅度调制的包络检波解调(求MATLAB代码,第1张

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

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('解调信号'闹拆或液伍)

您好

将包络线和已知曲线画在同一个图中可以用,hold on 实现,例如:

figure(1)plot(y1)hold onplot(y2)       %这样就可以将y1和 y2两条曲线同时在一个坐标系显示

求包络线的解析式

2.1 如果已知是平滑的曲线,可以用polyfit函数拟合出它解析表达式:

p = polyfit(x,y,n)

%x为输入,y为输出,n为要拟合表达式的最高次幂,一般来说n越敬腊高越好,但是如过比较简单的拟合不需要设置太高的n,如果设置的太高没有必要matlab会提醒你降低n,函数的输出p则为每一次数的系数,例如我拟合n=5;输出p为-1,2,-3,4,-5,6六个数,则我要拟合的表达式为 y = -x^5 +2x^4 -3X^3 + 4x^2 - 5x +6

2.2如果要拟合的数据并不是特别光滑,甚至有很明显的折点,那么有两种解决办法

a.尝试增大poltfit函数中的n(效果不会特别理想,因为有明显折点不会拟合特仿稿昌别好,误差会比较大)

b.分段使用polyfit函数进行拟合(可行性比较高,就是比较麻烦,先对备扒已有数据进行分析,对数据人工手动分段,分段后再用polyfit,得到的结果会比较精确)

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

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

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])


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存