MATLAB|Hilbert变换与包络线绘制

1. 问题描述

信号处理中,对于较为负复杂的信号,我们有时候需要提取包络线分析。如下图:

MATLAB|Hilbert变换与包络线绘制_第1张图片
mark

2. 技术背景

提取包络线,在信号处理中往往采用Hilbert变换。

3. 解决方案

h = hilbert(V); 

4. 实施示例

4.1 波形参数设置

%% 基本参数

A  = 1;                                                                         % 激励信号幅值
N = 15;                                                                         % cycle数,即激励信号波峰数
fck = 100;                                                                      % 激励中心频率 kHz
fc = 100e3;                                                                     % 激励信号中心频率,Hz 

T0 = 1e-4;                                                                      % 导波传播时间
T = 4.0*T0;                                                                     % 激励持续时长
dt = 1/(20*fc)/2;                                                               % 时间步长,在最大步长基础上除以2
t = [0:dt:T]';                                                                  % 时间序列

4.2 波形构造与Hilbert变换

V = A*[heaviside(t)-heaviside(t-N/fc)].*...                                     % 时域输入信号求解         
    (1-cos(2*pi*fc*t/N)).*sin(2*pi*fc*t);
h = hilbert(V);                                                                 % Hilbert变换
MATLAB|Hilbert变换与包络线绘制_第2张图片
mark

4.3 包络绘制

%% 包络绘制

figure 
hold on 
plot(t,V)
plot(t,abs(h),'-.')
grid on

此处注意,对变换后的变量h取范数(绝对值)。

MATLAB|Hilbert变换与包络线绘制_第3张图片
mark

5. 常见问题

对于较复杂的波形,包络效果可能不理想。

MATLAB|Hilbert变换与包络线绘制_第4张图片
mark

本文用时 30 m

你可能感兴趣的:(MATLAB|Hilbert变换与包络线绘制)