函数:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 返回输入序列x的上下包络线,作为其解析信号的大小。              %
% x的解析信号是利用希尔伯特实现的离散傅里叶变换得到的。           %
% 这个函数首先移除x的均值,然后在计算包络线之后再把它加回来。      %
% 如果x是一个矩阵,那么包络线对x的每一列都是独立的。             %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[yupper,ylower] = envelope(x)




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 返回用解析信号的大小确定的x的包络线。                        %
% 解析信号通过使用长度为fl的Hilbert FIR滤波器对x进行滤波来计算。 %
% 如果只指定两个参数,则使用此语法。                           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[yupper,ylower] = envelope(x,fl,'analytic')



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 返回x的上、下均方根包络。包络是使用长度wl样本的滑动窗口确定的。  %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[yupper,ylower] = envelope(x,wl,'rms')



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 返回x的上峰和下峰包络线。                                  %
% 包络线由至少np个样本分离的局部最大值上的样条插值确定。         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[yupper,ylower] = envelope(x,np,'peak')



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 在没有输出参数的情况下,绘制信号及其上下包络线。               %
% 该语法接受以前语法中的任何输入参数。                         %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
envelope(___)

例1: [up,lo] = envelope(q)

% 信号生成
t = 0:1/2000:2-1/2000;
q = chirp(t-2,4,1/2,6,'quadratic',100,'convex').*exp(-4*(t-1).^2);
plot(t,q)


% 包络线绘制
[up,lo] = envelope(q);
hold on
plot(t,up,t,lo,'linewidth',1.5)
legend('q','up','lo')
hold off

在这里插入图片描述
例2: [up,lo] = envelope(q,100,'analytic');

% 信号生成
t = 0:1/1000:3;
q1 = sin(2*pi*7*t).*exp(-t/2);
q2 = chirp(t,30,2,5).*exp(-(2*t-3).^2)+2;
q = [q1;q2]';
plot(t,q)


% 包络线绘制
[up,lo] = envelope(q,100,'analytic');
hold on
plot(t,up,'-',t,lo,'--')
hold off

在这里插入图片描述

例3:不同参数的包络线区别

% 信号生成
t = 0.5:-1/100:-2.49;
z = airy(t*10).*exp(-t.^2);
plot(z)

% 无参数
figure
envelope(z)

% 参数:analytic,使用50-tap Hilbert filter计算信号的包络线
figure
envelope(z,50,'analytic')

% 参数:rms,使用40个样本的移动窗口来计算信号的RMS包络
figure
envelope(z,40,'rms')

% 参数:peak,确定峰包络,在被至少10个样本分隔的局部极大值上使用非结点条件的样条插值。
figure
envelope(z,10,'peak')

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


例4:不同采样点的影响

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


参考文献: