利用Hilbert变换从电能质量扰动信号中提取瞬时频率、瞬时幅值、Hilbert谱和边际谱的详细步骤及MATLAB代码实现。该流程适用于电压暂降、暂升、谐波、闪变等扰动分析。
1. Hilbert变换与特征提取流程
1.1 基本步骤
- 信号预处理:滤波去噪(如小波去噪)或经验模态分解(EMD)提取主成分。
- Hilbert变换:计算解析信号,得到瞬时幅值和相位。
- 瞬时频率计算:对相位求导得到瞬时频率。
- Hilbert谱与边际谱:时频能量分布及频率能量累积。
1.2 数学公式
- 解析信号:
[
z(t) = x(t) + j \mathcal{H}[x(t)]
]
其中 (\mathcal{H}) 为Hilbert变换。 - 瞬时幅值:
[
A(t) = |z(t)|
] - 瞬时相位:
[
\phi(t) = \arctan\left(\frac{\mathcal{H}[x(t)]}{x(t)}\right)
] - 瞬时频率:
[
f(t) = \frac{1}{2\pi} \frac{d\phi(t)}{dt}
] - Hilbert谱:时频平面上的幅值分布 (H(f, t))。
- 边际谱:
[
h(f) = \int_{0}^{T} H(f, t) dt
]
2. MATLAB代码实现
2.1 信号生成(示例为含暂降的电压信号)
fs = 10e3; % 采样率10 kHz
t = 0:1/fs:0.1; % 时间序列(0.1秒)
f0 = 50; % 基频50 Hz
A_normal = 1; % 正常幅值
A_sag = 0.5; % 暂降幅值
% 生成含暂降的电压信号(暂降发生在0.03s-0.07s)
x = A_normal * sin(2*pi*f0*t);
x(t >= 0.03 & t <= 0.07) = A_sag * sin(2*pi*f0*t(t >= 0.03 & t <= 0.07));
% 添加噪声(SNR=30dB)
x = awgn(x, 30, 'measured');
% 绘制原始信号
figure;


4223

被折叠的 条评论
为什么被折叠?



