matlab对信号包络的两种画法

假设信号

%%%%连续信号
t=0:0.001:20;
y=(1-0.7*cos(t)).*(cos(10*pi*t)+sin(9*pi*t));
plot(t,y);
hold on

希尔伯特变换绘制包络

%%%%希尔伯特变换绘制包络
z1=abs(hilbert(y));
z2=-abs(hilbert(y));
plot(t,z1,t,z2);

插值法绘制包络

d=diff(y);  
n=length(d);
d1=d(1:n-1);
d2=d(2:n);
dmin=find(d1.*d2<0&d1<0)+1;
dmax=find(d1.*d2<0&d1>0)+1;%返回极值点位置

y_min=spline(t(dmin),y(dmin),t);%三次样条插值,在每两点之间又增加一些点,让曲线更加光滑
y_max=spline(t(dmax),y(dmax),t);

plot(t,y_min,'r--')
plot(t,y_max,'g--')

你可能感兴趣的:(MATLAB,信号)