当前位置: 首页 > news >正文

电能质量扰动信号信号通过hilbert变换得到瞬时频率


利用Hilbert变换从电能质量扰动信号中提取瞬时频率、瞬时幅值、Hilbert谱和边际谱的详细步骤及MATLAB代码实现。该流程适用于电压暂降、暂升、谐波、闪变等扰动分析。

1. Hilbert变换与特征提取流程

1.1 基本步骤
  1. 信号预处理:滤波去噪(如小波去噪)或经验模态分解(EMD)提取主成分。
  2. Hilbert变换:计算解析信号,得到瞬时幅值和相位。
  3. 瞬时频率计算:对相位求导得到瞬时频率。
  4. 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;
plot(t, x);
xlabel('Time (s)');
ylabel('Voltage (pu)');
title('含暂降的电压信号(加噪)');
2.2 预处理(EMD分解去噪)
% 经验模态分解(需安装Signal Processing Toolbox)
imf = emd(x, 'Interpolation', 'pchip');% 选择前2个IMF作为主成分(假设噪声主要在高频IMF)
x_denoised = sum(imf(:,1:2), 2);% 绘制去噪后信号
figure;
plot(t, x_denoised);
title('去噪后的电压信号(EMD)');
2.3 Hilbert变换与瞬时特征提取
% 计算解析信号
z = hilbert(x_denoised);% 提取瞬时幅值和相位
A = abs(z);                 % 瞬时幅值
phi = unwrap(angle(z));     % 瞬时相位(解卷绕)% 计算瞬时频率
f_inst = diff(phi) / (2*pi) * fs;
f_inst = [f_inst(1), f_inst]; % 保持长度一致% 绘制瞬时特征
figure;
subplot(3,1,1);
plot(t, A);
title('瞬时幅值');
subplot(3,1,2);
plot(t, phi);
title('瞬时相位');
subplot(3,1,3);
plot(t, f_inst);
ylabel('Frequency (Hz)');
title('瞬时频率');
2.4 Hilbert谱与边际谱计算
% 时频分析参数
nfft = 1024;                % FFT点数
window = hann(256);         % 窗函数
noverlap = 128;             % 重叠点数% 计算Hilbert谱(基于短时傅里叶变换STFT)
[S, f, t_spec] = spectrogram(A, window, noverlap, nfft, fs);% 绘制Hilbert谱
figure;
imagesc(t_spec, f, 20*log10(abs(S)));
axis xy;
colorbar;
xlabel('Time (s)');
ylabel('Frequency (Hz)');
title('Hilbert能量谱');% 计算边际谱(频率能量累积)
h = sum(abs(S), 2);% 绘制边际谱
figure;
plot(f, h);
xlabel('Frequency (Hz)');
ylabel('Energy');
title('边际谱');

3. 关键特征解释

3.1 瞬时幅值
  • 正常状态:幅值稳定在标称值(如1 pu)。
  • 暂降期间:幅值显著降低(如0.5 pu),直接反映扰动强度。
3.2 瞬时频率
  • 正常状态:频率围绕基频(50/60 Hz)小幅波动。
  • 扰动期间:频率可能出现突变(如电压暂降伴随频率偏移)。
3.3 Hilbert谱
  • 时频分布:显示不同时间点各频率成分的能量强度。
  • 暂降特征:在扰动时段(0.03s-0.07s),基频能量降低,可能伴随高频噪声。
3.4 边际谱
  • 能量累积:反映信号在整个时间段内的频率能量分布。
  • 暂降分析:基频能量减少,高频成分可能增加(噪声或谐波)。

4. 改进与扩展

4.1 多扰动类型特征提取

针对不同扰动类型(如谐波、闪变),可设计专用特征:

  • 谐波畸变:边际谱中基频倍频处出现峰值。
  • 电压闪变:瞬时幅值呈现周期性波动。
% 谐波检测示例:检查边际谱中2f0、3f0处能量
harmonics = [2*f0, 3*f0];
[~, idx] = min(abs(f - harmonics), [], 2);
harmonic_energy = h(idx);
4.2 结合机器学习分类

将Hilbert特征输入分类模型(如SVM、LSTM):

% 构造特征向量(示例)
features = [max(A), min(A), mean(f_inst), std(f_inst), max(h)];% 使用SVM分类(需Statistics and Machine Learning Toolbox)
load('fault_data.mat'); % 假设已标记数据集
model = fitcsvm(X_train, y_train);
y_pred = predict(model, X_test);
4.3 实时监测实现

使用滑动窗口处理实时数据流:

window_length = 0.02 * fs; % 20ms窗口
for i = 1:length(x)-window_lengthx_window = x(i:i+window_length-1);% 执行Hilbert变换和特征提取...
end

5. 注意事项

  1. 端点效应:Hilbert变换在信号两端易产生畸变,可通过镜像延拓缓解。
  2. 模态混叠:EMD分解时若出现模态混叠,可改用EEMD或CEEMDAN。
  3. 噪声敏感:强噪声环境下需结合小波阈值去噪或变分模态分解(VMD)。
  4. 计算效率:实时应用时需优化STFT窗口长度和重叠率。

matlab实现代码

通过上述代码和分析,可有效提取电能质量扰动信号的Hilbert时频特征,为故障诊断、分类和定位提供关键信息。实际应用中需根据具体扰动类型调整参数并验证特征有效性。

http://www.xdnf.cn/news/424639.html

相关文章:

  • 2025.05.11拼多多机考真题算法岗-第一题
  • MCU开发学习记录14* - 8080学习与实践(HAL库) - 控制LCD屏幕显示中英文、图片 - STM32CubeMX
  • 【Axure视频教程】中继器表格间批量控制和传值
  • 艺考之神余嘉诚话剧舞台首秀《屈原辞》 倾情演绎楚辞风骨
  • [Java][Leetcode middle] 45. 跳跃游戏 II
  • 音频转文字-在线工具包及使用记录
  • 提示词设计模板(基于最佳实践)
  • Datawhale PyPOTS时间序列5月第1次笔记
  • 2025 3D工业相机选型及推荐
  • Elecron 相关介绍以及常见的面试问题
  • 【MapReduce入门】深度解析MapReduce:定义、核心特点、优缺点及适用场景
  • 1950-2024年中国区域的积温数据(大于10°)
  • 2025最新出版 Microsoft Project由入门到精通(七)
  • Unity 2D 行走动画示例工程手动构建教程-AI变成配额前端UI-完美游戏开发流程
  • 5月13日day24日打卡
  • 完成springBoot+vue项目时学习到的知识点
  • 嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
  • 机试刷题:进制转换3
  • 【Pandas】pandas DataFrame cummin
  • 蓝桥杯 11.日志统计
  • 亚远景-基于ASPICE的汽车供应链质量管控培训
  • 网站遭受扫描攻击,大量爬虫应对策略
  • C++伯罗奔尼撒箭阵 全国信息素养大赛复赛决赛 C++小学/初中组 算法创意实践挑战赛 内部集训模拟题详细解析
  • springboot2.7.18 升级到3.1.5过程
  • Ubuntu 22.04.5 LTS 系统中配置仓库源
  • Gartner《如何有效融合Data Fabric 与Data Mesh数据战略》学习心得
  • 【TDengine源码阅读】DLL_EXPORT
  • 【设备管理—磁盘调度算法】
  • 【FMMT】基于模糊多模态变压器模型的个性化情感分析
  • 动态引入document.write的脚本