目录
说明
示例
chirp 的解析包络
使用滤波器计算多通道信号的解析包络
录音信号的移动 RMS 包络
语音信号的峰值包络
不对称序列的包络
envelope函数的功能是提取信号的包络。
语法
[yupper,ylower] = envelope(x)
[yupper,ylower] = envelope(x,fl,'analytic')
[yupper,ylower] = envelope(x,wl,'rms')
[yupper,ylower] = envelope(x,np,'peak')
envelope(___)
说明
[yupper,ylower] = envelope(x) 返回输入序列 x 的上下包络作为其解析信号的幅值。使用在 hilbert 中实现的离散傅里叶变换查找 x 的解析信号。该函数最初会删除 x 的均值,并在计算包络后再重新添加该均值。如果 x 是矩阵,则 envelope 单独对 x 的每列进行运算。
[yupper,ylower] = envelope(x,fl,'analytic') 返回使用其解析信号的幅值确定的 x 的包络。解析信号是通过用长度为 fl 的 Hilbert FIR 滤波器对 x 进行滤波来计算的。如果只指定两个参数,则使用此语法。
[yupper,ylower] = envelope(x,wl,'rms') 返回 x 的上下均方根包络。包络是用长度为 wl 个采样的滑动窗来确定的。
[yupper,ylower] = envelope(x,np,'peak') 返回 x 的上下峰值包络。包络是通过对至少分隔 np 个采样的局部最大值进行样条插值来确定的。
不带输出参数的 envelope(___) 用于绘制信号及其上下包络。此语法接受上述语法中的任何输入参数。
示例
chirp 的解析包络
生成高斯调制二次 chirp。指定采样率为 2 kHz,信号持续时间为 2 秒。
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)
如图所示:
使用解析信号计算 chirp 的上下包络。
[up,lo] = envelope(q);
hold on
plot(t,up,t,lo,'linewidth',1.5)
legend('q','up','lo')
hold off
如图所示:
由于均值非零,因此,信号不对称。
使用不带输出参数的 envelope 以采样编号为 x 轴绘制信号和包络。
envelope(q)
如图所示:
使用滤波器计算多通道信号的解析包络
创建一个双通道信号,采样率为 1 kHz,持续时间为 3 秒:
-
一个通道是呈现指数衰减的正弦波。指定频率为 7 Hz,时间常量为 2 秒。
-
另一个通道是 DC 值为 2 的时移高斯调制 chirp。指定 chirp 的初始频率为 30 Hz,该频率 2 秒后衰减至 5 Hz。
绘制信号。
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)
如图所示:
计算信号的上下包络。使用长度为 100 的 Hilbert 滤波器。绘制通道和包络。对上包络使用实线,对下包络使用虚线。
[up,lo] = envelope(q,100,'analytic');
hold on
plot(t,up,'-',t,lo,'--')
hold off
如图所示:
调用不带输出参数的 envelope,以采样编号为 x 轴绘制信号及其包络。将滤波器长度增加到 300 以获得更平滑的形状。当您指定两个输入参数时,'analytic' 标志是默认值。
envelope(q,300)
如图所示:
录音信号的移动 RMS 包络
计算并绘制火车鸣笛声录音信号的移动 RMS 包络。使用长度为 150 个采样的窗。
load('train')envelope(y,150,'rms')
如图所示:
语音信号的峰值包络
绘制基于长度为 30 个采样的区间经过平滑处理的语音信号的上下峰值包络。
load('mtlb')envelope(mtlb,30,'peak')
如图所示:
不对称序列的包络
创建并绘制一个信号,该信号类似于通过色散介质传播的光脉冲的初始检测信号。
t = 0.5:-1/100:-2.49;
z = airy(t*10).*exp(-t.^2);plot(z)
如图所示:
使用序列解析信号的幅值来确定该序列的包络。绘制包络。
envelope(z)
如图所示:
使用 50 抽头 Hilbert 滤波器计算信号的解析包络。
envelope(z,50,'analytic')
如图所示:
使用长度为 40 个采样的移动窗计算信号的 RMS 包络。绘制结果。
envelope(z,40,'rms')
如图所示:
确定峰值包络。使用非结条件对至少分隔 10 个采样的局部最大值样条插值。
envelope(z,10,'peak')
如图所示:
参数说明
x — 输入序列
输入序列,指定为向量或矩阵。如果 x 是向量,则它被视为单通道。如果 x 是矩阵,则 envelope 单独计算每列的包络估计值。x 的所有元素都必须为有限值。
fl — Hilbert 滤波器长度
Hilbert 滤波器长度,指定为正整数标量。该滤波器是通过使用长度为 fl 且形状参数为 β = 8 的 Kaiser 窗对理想的矩形滤波器加窗来创建的。
wl — 窗长度
窗长度,指定为正整数标量。
np — 峰间距
峰间距,指定为正整数标量。
yupper,ylower — 上下信号包络
上下信号包络,以向量或矩阵形式返回。