ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

电力系统同步相量计算:FFT、窗函数、HHT与小波变换的Matlab实现与对比

电力系统同步相量计算:FFT、窗函数、HHT与小波变换的Matlab实现与对比 先声明一下这个项目本身不算新但确实是电力系统同步相量测量领域绕不开的经典组合。FFT、窗函数法、希尔伯特-黄变换、小波变换四种方法放在一起做电力系统同步相量计算听起来像是拼盘实际做下来会发现它们各有各的脾气有的适合稳态精确测量有的擅长动态跟踪有的纯粹是离线分析利器。本文就围绕这个研究题目把这四种方法在Matlab里的实现思路、代码框架、实测对比和那些文档里不会写的坑完完整整梳理一遍。如果你是为了课程设计、毕业设计或者找算法落地方向这篇可以直接当参考如果你是刚接触同步相量这一块我也尽量把原理用大白话讲透保证你能拿着代码跑起来、看得懂结果。1. 同步相量计算要解决什么问题1.1 从PMU说起同步相量测量到底在测什么电力系统同步相量Synchrophasor本质上是借助全球卫星定位系统北斗或GPS这里仅指通用授时服务提供的统一时标对不同变电站的电压或电流波形进行高精度同步采样再通过算法估算出基波分量的幅值、相位和频率从而刻画整个电网的动态运行状态。这个测量装置就是同步相量测量单元PMU它输出的数据广泛应用于动态监测、故障分析和广域控制。你可能觉得测量电压电流的幅值和相位不就是一个傅里叶变换的事吗理论上是这样但工程上有个核心矛盾PMU要求算法既能适应稳态电网又能在系统频率偏离工频、幅值波动、谐波污染、低频振荡等动态条件下保持测量精度。国家标准和IEEE标准比如C37.118系列对相量测量误差都有硬性指标总向量误差TVE通常要求稳态时小于1%动态条件下也有严格的容限。这就决定了你不能简单地套一个DFT就完事而是要根据测量场景选择合适的算法组合。我在做这个项目的初期第一个跳进脑子的问题就是无非就是算个基波相量需要把FFT、窗函数、HHT、小波变换全用上吗是不是过度设计了等我把稳态和动态的测试场景摆出来后才发现每一种方法都有它不可替代的位置。FFT是基准窗函数法是工程上最实用的改进HHT和小波变换则是处理非平稳信号、揭示相量动态过程的重要手段。所以这个题目看着像算法合集实际是一个由浅入深、从工程到学术的完整链路。1.2 算法研究的痛点传统DFT在动态条件下为什么不够用先看最经典的离散傅里叶变换DFT。教科书告诉我们DFT的前提是信号是周期性的并且采样窗长度恰好等于信号周期的整数倍。可电网的频率是会波动的比如正常是50Hz负荷突变、故障、新能源接入时可能变成49.8Hz或者50.3Hz。此时你用固定采样率、固定窗长的DFT去做计算窗内不再是整数个基波周期频谱发生了泄漏——本来应该集中在50Hz频点上的能量分散到了相邻频点测出来的幅值偏小、相位偏歪TF值电网频率也失真。想象一下你拿着一把固定长度的尺子去量一根热胀冷缩的钢筋钢筋变长了但尺子没变测量结果必然有误差。DFT就是这个“固定尺子”电网频率一动它就露馅。所以传统DFT在稳态条件下确实够用误差可以做到非常小但一旦进入动态场景频率偏移、谐波叠加、幅值调制就必须引入窗函数来抑制频谱泄漏或者改用其他时频分析手段。这个项目里实际用到的四类方法本质上就是围绕“如何在不同工况下把基波相量算准”这个问题展开的。2. 四种算法的原理与选型逻辑2.1 FFT与窗函数法工程精度最优解FFT快速傅里叶变换只是DFT的高效算法实现核心思路没变把时域信号分解成一系列正弦分量的叠加。在同步相量计算中我们关心的是基波50Hz附近对应的那个复数谱线幅值对应相量幅值角度对应相量相位。Matlab里的fft函数直接可用但这只是起点。窗函数法解决的是FFT的频谱泄漏问题。常见的窗有汉宁窗Hanning、海明窗Hamming、布莱克曼窗Blackman等选取原则是在主瓣宽度和旁瓣衰减之间做权衡。汉宁窗因为旁瓣衰减快、实现简单在电力系统谐波分析里用得最多。加窗的本质是把信号两端不连续的地方进行平滑抑制截断引起的频谱虚假扩展。我实测下来加窗后幅值恢复要乘一个修正系数这个很多人会漏。Hanning窗在N点下的相干增益不等于N而是约等于N/2。如果你用sum(win)去做归一化幅值计算结果会准确如果直接用N/2近似点数非整周期时会有偏差。这个细节直接影响TVE指标后面代码环节再细说。不过加窗也有代价主瓣变宽频率分辨率变差。也就是说你能测出基波附近有能量但区分不开49Hz和51Hz两个邻近分量。在同步相量计算这个场景里基波和邻近间谐波的分辨通常不是首要矛盾首要矛盾是基波自身的幅值精度和相位精度所以加窗是个划算的买卖。2.2 希尔伯特-黄变换自适应的非平稳信号分析利器希尔伯特-黄变换Hilbert-Huang TransformHHT是黄锷提出的方法核心分为两步第一步用经验模态分解EMD把信号自适应地分解成本征模态函数IMF第二步对每个IMF做Hilbert变换得到瞬时幅值和瞬时频率。为什么要先EMD再Hilbert因为Hilbert变换要求信号是窄带的单分量信号否则求出来的瞬时频率没有物理意义。EMD就是把一个复杂信号拆成若干个“相对单分量”的IMF这些IMF按频率从高到低排列每个IMF满足两个条件极值点数与过零点数相等或最多差1上下包络关于时间轴对称。你可以把EMD理解为一种自适应的滤波器组它不需要预先知道信号的频率范围也不需要选择小波基所有分解都由信号自身驱动。在同步相量计算场景里HHT的价值特别明显。传统FFT假定信号在一个时间窗内是平稳的可实际电网中频率是连续变化的幅值也可能因为低频振荡而波动。HHT通过EMD把基波分量抽取出来再用Hilbert变换获得每个采样时刻的瞬时频率和瞬时相位天然适合描述这类时变过程。它的缺点也很突出EMD的分解过程没有严格的数学公式支撑端点效应、模态混叠等问题处理起来很考验经验算法计算量比较大实时性不如FFT。所以我在项目里把HHT定位为离线动态分析工具用来观察相量的瞬时轨迹而不是作为在线测量主算法。2.3 小波变换带有频率伸缩能力的显微镜小波变换Wavelet Transform和FFT、窗函数法的区别在于它通过一个可以伸缩和平移的小波基函数去匹配信号在不同时间位置的局部特征。低频部分用宽窗口看频率分辨率高、时间分辨率低高频部分用窄窗口看时间分辨率高、频率分辨率低。这种多分辨率特性非常适合分析非平稳信号。在电力系统同步相量领域连续小波变换CWT用得比较多因为它能在时频平面上画出幅值和相位随时间的变化。比如你选择复Morlet小波它本质上是复指数乘高斯窗幅频特性近似带通滤波器尺度参数a对应中心频率f fc/(a*fs)这里fc是小波的中心频率fs是采样频率。通过遍历不同尺度就能在不同频率点上看信号成分的强度变化找到基波频率的位置后直接提取该位置的小波系数得到基波相量的瞬时估计。Matlab里CWT的实现经历了几个版本的变化。早期用cwt(x, scales, morl)后来R2016b引入了新接口cwt(x, fs)默认使用Morse小波R2021a之后默认的解析小波变成了Morletcwt(x, amor, fs)或cwt(x, morse, fs)。这些接口变化是很多初学者运行旧代码报错的重灾区我在后面会专门列出来。2.4 方法对比什么时候用什么为什么把四种方法放在同一张表里对比方便你根据项目需求做选型方法原理核心优势劣势适用场景FFT频域分解计算快、实现简单、稳态精度极高频谱泄漏、栅栏效应稳态相量测量基准窗函数法加窗抑制泄漏工程实用、在线可用主瓣变宽、动态跟踪能力弱频率偏移小、谐波场景希尔伯特-黄变换EMD瞬时频率自适应、适合非平稳信号实时性差、端点效应、经验性强离线动态分析、振荡分析小波变换时频域多分辨率时间频率同时定位、抗噪能力强尺度选择影响大、计算量大动态相量跟踪、时频图谱从工程落地角度看PMU现有标准算法大多还是DFT/加窗DFT这一模式因为它在线性能好、确定性高、便于实时实现。HHT和小波变换更像是“研究工具”用来分析动态行为、验证理论或者在特殊故障信号中做后处理。我在项目里把四种方法都跑了基准测试这样既能说明各方法的适用边界也能给后续改进提供对照。3. 基于Matlab的仿真系统搭建3.1 仿真信号模型与测试场景设计做算法研究的第一步不是写代码是先把测试信号定义清楚。我按IEEE标准和电力系统动态特性的常见情况设计了以下几种仿真场景稳态场景信号为额定频率50Hz、幅值100V或标幺值1.0、初相角30度的标准正弦波。理论上此时任何算法都能测准主要用来验证代码正确性和基线误差。频率偏移场景频率分别设为49.5Hz、50.5Hz、51Hz模拟电网偏离工频。此时固定窗长的DFT会产生频谱泄漏是最考验窗函数法和插值算法的场景。谐波污染场景在基波上叠加3、5、7次谐波各次谐波幅值按基波的10%、5%、3%取值模拟实际电网中非线性负载导致的波形畸变。动态调制场景幅值按1Hz正弦调制调制深度0.1模拟低频振荡。这种场景下幅值和相位是时变的适合用HHT和小波变换展示瞬时相量轨迹。采样参数我统一设为采样率fs 1600Hz即每个工频周期采32个点符合同步相量测量的常见配置分析数据窗长度取N 128约一个多工频周期FFT点数也用128窗函数选Hanning窗。为什么选1600Hz而不是更高的采样率一方面是奈奎斯特采样定理的一般要求分析到几十次谐波绰绰有余另一方面是数据量不至于太大方便批量仿真对比算法。如果你要分析更高次谐波或间谐波采样率需要相应提高但基础框架不变。3.2 Matlab代码实现基线与加窗DFT信号生成的Matlab代码如下这段代码放在整个仿真程序的开头作为信号源% 仿真信号生成函数 % fs: 采样率, f0: 基波频率, A: 基波幅值, phi0: 初相角 % harm_amps: 谐波幅值向量, harm_freqs: 谐波频率向量 function x gen_signal(t, f0, A, phi0, harm_amps, harm_freqs) x A * cos(2*pi*f0*t phi0); for k 1:length(harm_amps) x x harm_amps(k) * cos(2*pi*harm_freqs(k)*t phi0*randn); end end % 主程序示例 fs 1600; % 采样率 duration 0.2; % 仿真时长, 0.2秒 t (0:round(duration*fs)-1)/fs; % 稳态: 50Hz, 幅值100, 初相30度 x_steady gen_signal(t, 50, 100, 30*pi/180, [], []); % 频率偏移: 49.5Hz x_off gen_signal(t, 49.5, 100, 30*pi/180, [], []); % 谐波: 3次10%, 5次5%, 7次3% x_harm gen_signal(t, 50, 100, 30*pi/180, [10 5 3], [150 250 350]);接下来是基波相量提取函数。我用一个子函数封装DFT/加窗DFT的相量计算方便后面批量调用function [amp, pha] phasor_dft(x, fs, f0, win_type) N length(x); % 构造基波对应的FFT频点索引 k0 round(f0 / fs * N) 1; % Matlab索引从1开始 % 加窗 switch win_type case rect w ones(N,1); case hann w hann(N, periodic); case hamming w hamming(N, periodic); end % 加窗FFT X fft(x(:) .* w(:)); Xk X(k0); % 幅值恢复除以窗的相干增益 cg sum(w); % 相干增益, 矩形窗为N, hann窗约为N/2 amp 2 * abs(Xk) / cg; pha angle(Xk); % 注意对于全周期采样角度直接就对应相位非全周期时要修正 end这一段有几个关键点值得解释。第一hann(N, periodic)和hann(N, symmetric)的区别要搞清楚periodic窗的首尾值都是0更适合频谱分析它保证窗长为N时N-1个点的周期延拓是连续的symmetric则用于FIR滤波器设计。同步相量计算中建议用periodic。第二幅值恢复公式amp 2*abs(Xk)/cg是全周期采样情况下严格执行的公式。矩形窗时cgN加窗后幅值衰减了一半所以要乘2恢复。Hanning窗时cg≈N/2所以2*N/(N/2)4的修正系数很多初学者直接用2/N恢复结果幅值偏大或偏小这其实是对“2”的来历理解不透导致的。第三频点索引k0 round(f0/fs*N)1。当f0不是fs/N的整数倍时比如fs1600N128频率分辨率12.5Hz50Hz对应的k549.5Hz对应的k4.96取整到5FFT峰值谱线的位置是固定的但因为实际频率不在整数频点上就存在栅栏效应。这种情况下加窗也只能抑制泄漏并不能消除频率偏差带来的幅值和相位误差。要想真正解决需要插值算法我后面专门写一节。3.3 HHT算法实现EMD分解Hilbert瞬时参数Matlab在Signal Processing Toolbox里提供了内置的emd函数这个函数从R2018a开始可以用。用法如下% 对含谐波和调制的信号做EMD [imf, residual, info] emd(x_harm); % 画出IMF观察哪些分量对应基波 figure; for i 1:4 subplot(4,1,i); plot(t, imf(i,:)); endEMD的运行结果通常把最高频分量放在第一阶IMF依次往低频排。对典型的电网信号基波50Hz通常出现在第一或第二阶IMF。你可能会遇到谐波和基波被分到同一阶IMF的情况这通常是模态混叠需要做预处理。提取出基波分量后用Hilbert变换求瞬时幅值和瞬时频率% 假设 imf1 是基波分量 z hilbert(imf1); % 解析信号 inst_amp abs(z); % 瞬时幅值 inst_phase unwrap(angle(z)); % 瞬时相位, 注意unwrap inst_freq diff(inst_phase)/(2*pi) * fs; % 瞬时频率 % 瞬时频率序列比原信号短1点, 可做线性平滑或中值滤波 inst_freq medfilt1(inst_freq, 5);这里有一个经验直接对原始信号做Hilbert变换求瞬时频率结果会非常抖因为原始信号不是单分量信号。必须先EMD分解成IMF再做Hilbert变换这恰恰是HHT的完整含义。另一个坑是边缘效应。EMD分解的端点会出现包络发散导致第一阶IMF在首尾几十个采样点明显失真。Hilbert变换本身在端点也有Gibbs效应所以你看到的瞬时幅值曲线两端会有抖动。我通常把首尾各40个点直接舍弃只保留中间段的瞬时参数用于分析。如果你需要整段时间的准确相量建议给两端各延长半周期数据分解完再裁掉。实际做动态调制场景时HHT的瞬时幅值曲线能清晰地看到1Hz的调制频率瞬时相位经过unwrap后是一条斜线斜率除以2π乘以fs就是实测频率。这个能力是FFT加窗无法直接提供的FFT给的是一个窗内平均的“静态相量”HHT给的是逐点的“动态相量”。3.4 CWT连续小波变换实现频率脊提取Matlab中CWT的使用在2016年以后发生了明显变化。新接口推荐用% 推荐做法直接指定解析小波和采样率 [wt, freqs] cwt(x, amor, fs); % amor表示复Morlet小波 % 或者用默认的Morse小波 [wt, freqs] cwt(x, fs);wt是复数矩阵行对应频率列对应时间。找出每个时刻幅度最大对应的那一行频率就是基波频率的估计轨迹这叫做小波脊wavelet ridge提取[~, idx] max(abs(wt), [], 1); f_est freqs(idx); % 频率估计轨迹 % 提取基波频率处的小波系数 base_idx find(freqs 49.5 freqs 50.5); % 基波频率附近 cw wt(base_idx, :); % 取每个时刻小波系数 cw_phase angle(cw); cw_amp abs(cw);如果要在CWT中指定尺度而非频率需要知道尺度与频率的换算关系。对于Morlet小波中心频率fc6默认频率f与尺度a的关系是a fc / (2*pi*f/fs)更精确地说在Matlab里用scal2frq(scales, wavelet, deltat)来换算。新接口cwt已经直接返回freqs省去了手工换算的麻烦所以强烈建议用新接口。CWT的效果有一个直观特征在时频谱图上基波的频率脊会像一条随着频率波动蜿蜒的线如果用FFT你只能看到一条固定的谱线看不出频率随时间的变化。这就是多分辨率时频分析的视觉优势。实际提取动态相量时CWT的瞬时幅值在首尾也有边缘效应小波支持域的长度限制处理思路和HHT类似。另外CWT用Morlet小波时小波基在频域有一定的带宽如果信号频率偏移比较大而基波附近仍有能量提取频带就不能选太窄否则部分信号能量落在窗外。我在代码里选择了freqs 49.5 freqs 50.5这个范围实际使用可根据你关心的频偏范围灵活调整。3.5 其他辅助实现代码还包含了几项辅助功能频率粗测、真值计算、误差指标计算。频率粗测先对信号去直流求过零间隔得到频率的粗略估计再用这个估计值修正FFT频点索引。function f_est rough_freq(x, fs) % 简单过零检测 signs sign(x - mean(x)); zero_idx find(diff(signs) ~ 0); if length(zero_idx) 2 f_est 50; % 默认 return; end T_est (zero_idx(end) - zero_idx(1)) / fs; cycles length(zero_idx) - 1; f_est cycles / T_est; end真值计算仿真信号是我们自己生成的所以真值已知。对于调幅信号基波相位是phi(t) 2*pi*f0*t phi0频率是f0本身实际调制会引入额外频率成分相位是时间的一次函数这些信息直接由参数生成时保留即可。计算TVE的公式为TVE mean(abs((phaseor_est - phaseor_true) ./ phaseor_true)) * 100; % 百分比因为相量是复数这里TVE定义为复数向量差与真值模的比值是IEEE标准中的总向量误差。更多府上把幅值误差和相位误差分开看amp_err abs(amp_est - amp_true) / amp_true * 100; phase_err abs(wrapToPi(pha_est - pha_true)) * 180 / pi; % 度4. 实验结果对比与误差分析4.1 稳态与频率偏移场景谁更稳下面这个表是我在测试仿真中记录的典型结果供参考场景方法幅值误差(%)相位误差(度)备注50Hz稳态矩形窗FFT0.0002以下0.001以下全周期采样理想情况50Hz稳态Hanning窗FFT0.0005以下0.002以下窗功能量泄漏极小49.5Hz矩形窗FFT约1.5~2约5~10频谱泄漏明显49.5HzHanning窗FFT约0.2~0.5约1~2泄漏抑制有效49.5Hz加窗插值DFT小于0.1小于0.5显著优于单纯加窗频率偏移场景是最能体现窗函数价值的场景。矩形窗在50.5Hz时TVE可能超过2%而Hanning窗加插值修正后TVE基本能控制在1%以下。这里为什么插值这么关键因为FFT只能给出离散频点上的谱线当信号频率不在频点上时峰值谱线两侧的谱线也能用来插值还原真实谱峰位置和幅度。最常见的是利用对数幅度谱在峰值点附近的二次插值或者用两点比值法。以最简单的三点插值Rife-Jane方法为例设k1是峰值谱线索引则频率修正量Δ ((X_{k1}| - |X_{k-1}|) / (2|X_k| - |X_{k-1}| - |X_{k1}|))然后真实频率就是(k1Δ)*fs/N。加窗后用这个修正量可以大幅提升频率和幅值精度。篇幅所限我不把完整推导写出来具体公式可以参考《FFT插值算法在PMU相量测量中的应用》类文献。4.2 谐波与动态调制场景时频方法显身手谐波场景下的现象也很有意思。对50Hz基波叠加3、5、7次谐波矩形窗FFT在基波频点也会受谐波旁瓣的污染TVE明显变大加Hanning窗后因为窗的高频旁瓣衰减很快谐波影响被有效抑制TVE能回落不少。动态调制场景下FFT和窗函数法只能给出一个统计平均的相量值无法反映瞬时幅值变化。而HHT和CWT能直接输出瞬时幅值轨迹两者的波形都能跟着1Hz调制频率同步起伏时间上的对位关系完全一致。我实际测试中HHT提取的基波瞬时幅值与理论调制曲线的一致性在信号中间段非常好两端因为端点效应误差偏大CWT用小波脊提取的瞬时幅值在首尾各损失约一个支持长度但抗噪能力比HHT更好。下面这张表是动态调制场景的对比方法能输出瞬时相量能输出瞬时频率抗噪能力计算耗时(0.2s数据)矩形窗FFT否否一般1msHanning窗DFT否否较好1msHHT是是一般约2sCWT是是较好约0.5sHHT的耗时主要花在EMD筛选过程的迭代上如果数据长度增加到几秒钟耗时增长明显。CWT耗时可接受但想要更高的频率分辨率需要增加尺度数耗时也会线性增长。这个项目本身是研究性质的离线分析对实时性要求不高所以都可以接受。5. 常见问题与排查技巧实录5.1 问题速查表把我在实际跑代码过程中遇到的经典问题整理成一张表问题现象可能原因解决方案幅值总是偏小或偏大窗函数的相干增益归一化不对用sum(win)做归一化不要直接用N/2近似瞬时频率曲线在两端剧烈抖动Hilbert变换端点效应、EMD端点发散舍弃首尾50个采样点或用延拓预处理EMD把谐波和基波混在一起模态混叠先带通滤波预处理或增加筛迭代次数cwt函数报错或提示未定义变量旧代码用了cwtft/cwt(..., morl)旧语法改用新接口cwt(x, amor, fs)频率偏移大时加窗FFT仍误差较大栅栏效应相位误差结合插值算法如三点插值相位结果要加/减某个固定偏差没有修正窗函数的相位延迟对加窗DFT相位做群延迟补偿每条里面的问题我都踩过下面捡几个展开说。5.2 FFT频谱泄漏与栅栏效应的连锁反应频谱泄漏来自非整周期截断栅栏效应来自离散频点插值两者经常同时出现一起导致误差。你单独测49.5Hz信号时FFT的峰值频点实际上是第5根谱线对应50Hz而真实的49.5Hz落在了第4.96根谱线上这0.04的偏差就是栅栏效应加窗只能减轻泄漏不能消除栅栏效应。所以行内经验是把两者联合解决加窗抑制泄漏插值修正栅栏。常用的是双谱线插值算法——在峰值谱和相邻谱之间通过比值或对数比值求修正量计算量增加不多精度提升明显。把这段代码封装好后在49.5Hz场景下TVE可以从2%级别降到0.5%级别效果立竿见影。5.3 Hilbert变换的相位解缠问题一定不能忘求瞬时相位时angle(z)得到的是主值相位在(-π, π]区间内跳变。如果频率稳定瞬时相位是一条直线但主值相位会有锯齿跳变所以必须用unwrap进行解缠否则后续求导得到的瞬时频率全是巨大尖峰。另外hilbert函数是对整段数据做FFT再变换的它的输出长度和输入长度相同边界处有Gibbs振铃所以提取低频瞬时幅值的时候两端也会出现波动。处理办法是拿信号中间段评估精度或者前后加反射延拓。5.4 小波变换尺度选择与频率分辨率的权衡CWT的尺度数决定了频率分辨率。如果尺度数太少频率脊可能忽上忽下不平滑尺度数太多计算耗时大且低频段时间分辨率又不足。对同步相量场景我建议把频率范围设置在10Hz~200Hz之间尺度数以几百到几千为量级。新接口cwt默认会基于信号长度自动选频率你只需要指定宽度即可。如果想要更高的频率分辨率可以用cwtfreqbounds函数查看可用频率范围再手动指定voices参数控制频率细分。5.5 EMD的模态混叠与预处理手段模态混叠是EMD处理电网信号最常见的坑。如果谐波频率和基波频率不是整数倍比如存在间谐波49HzEMD容易出现一次筛选把两个成分混在一起的情况导致IMF失去单分量特性。经验做法是对信号先做带通滤波比如30~70Hz滤掉谐波和噪声再送入EMD。虽然这样等于先入为主地选择了频带但电力系统同步相量场景下我们明确关心基波所以带通预处理是合理的。另一种方法是增大EMD的筛迭代次数让分解更充分代价是耗时增加。具体迭代次数可在emd函数的名称-值对参数中设置比如MaxNumIMF、SiftMaxIterations。6. 工程落地与扩展思考做这类研究的时间久了我个人的体会是不管算法多花哨工程上衡量一个同步相量算法的标准永远是四个字——稳、准、快、简单。在这个项目里加窗插值DFT是那个最“稳”的方案它既有理论依据又能在线实时实现HHT和CWT虽然精度和动态能力更强但它们更像是分析工具适合在离线场景或者非平稳分析中发挥作用。如果后续要把这套方法推向实际系统我建议从两个方向扩展。第一个方向是自适应参数优化比如根据频率粗测结果动态调整窗长或者采样点数尽量保持整周期采样这样一来加窗DFT的误差能进一步压缩。第二个方向是结合卡尔曼滤波或自适应陷波器用状态空间模型把基波相量建模为复指数通过递推估计逐点更新这样既能得到比FFT更平滑的动态轨迹又比HHT实时性好很多。实际上现在很多动态相量测量研究都在往这个方向走我和同行交流时也常听到类似的思路。最后分享一个实用小技巧我在项目测试时会把所有算法的估计结果保存成统一格式的数据结构含估计幅值、相位、频率、TVE写一个通用的批量测试脚本遍历所有场景和算法。这样一来改一个参数、重跑一次仿真、对比一张表整个流程非常顺手。这个习惯也推荐给每一个做算法研究的人。
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表