资讯动态

升沉测量中高通滤波器相位滞后描述错误与正确补偿方法

发布时间:2026/10/27 18:12:54 来源:尧图企业网站定制
1. 升沉测量与高通滤波器的核心关联拆解升沉测量这个事在船舶、海洋工程、水下拖曳系统里属于那种“平时没人提一出问题就是大问题”的环节。简单说升沉就是船体或平台在垂直方向上的上下运动位移通常由加速度计测得的垂向加速度经过两次积分得到。但加速度计有个绕不开的毛病零偏和低频漂移。你直接积分哪怕传感器零偏只有0.01 m/s²积分60秒后速度误差就是0.6 m/s再积分一次位移误差直接飙到18米——这显然没法用。所以工程上几乎必然要在积分链路里塞一个高通滤波器把低频和直流分量滤掉只保留波浪引起的周期性升沉运动。问题就出在这个高通滤波器上。它不是一个“透明”的环节它在滤掉低频的同时会引入相位滞后。而“升沉测量高通滤波器相位滞后描述错误”这个标题指向的正是很多技术文档、论文甚至产品手册里对这部分相位特性的描述存在偏差或错误导致使用者在做实时补偿、多传感器融合或者控制回路设计时拿到了错误的相位修正量最终升沉测量精度不达标甚至控制系统出现振荡。我先把这件事的边界划清楚这里讨论的不是“高通滤波器该不该用”而是“用了之后相位滞后到底怎么描述、怎么算、怎么补”。这个区别很关键因为前者是方案选型问题后者是工程实现和文档准确性问题。很多团队在方案评审时把滤波器截止频率一填就过了到了海上试验发现升沉相位对不上回头查文档才发现描述里把相位滞后符号写反了或者把群延迟当成了相位滞后这种坑我见过不止一次。适合读这篇内容的人大概分三类一是做升沉测量算法实现的工程师需要把相位补偿写进代码二是做系统集成和测试的人需要判断供应商给的相位指标是否可信三是写技术文档和规格书的人需要知道哪些描述方式是容易出错的。不管你是哪一类核心诉求都一样——把高通滤波器相位滞后这件事说清楚别再让错误描述继续传播。2. 高通滤波器相位滞后的原理与常见描述错误2.1 相位滞后到底从哪来先把这个“滞后”的物理含义讲透。任何因果滤波器只要它不是纯增益就会对信号的不同频率成分产生不同的相位移动。高通滤波器的传递函数在通带内相位是超前的在阻带内相位是滞后的而在截止频率附近相位变化最剧烈。对于升沉测量来说波浪主频通常在0.05 Hz到0.3 Hz之间如果高通滤波器的截止频率设在0.02 Hz到0.05 Hz那么波浪频段落在通带内理论上相位影响不大——但这是理想情况。实际工程里高通滤波器往往不是一阶的而是二阶甚至四阶巴特沃斯或贝塞尔形式目的是获得更陡的过渡带。阶数越高截止频率附近的相位非线性越强。更麻烦的是很多实现用的是数字滤波器比如双线性变换后的IIR它在低频段的相位特性和模拟原型并不完全一致尤其在采样率不高的时候频率预畸变没做好相位偏差会明显放大。我举个具体数字。假设采样率50 Hz截止频率0.03 Hz二阶巴特沃斯高通。在0.1 Hz处模拟原型的相位大约是78度超前但经过双线性变换且未做预畸变时实际数字滤波器在该频点的相位可能只有65度左右差了13度。对于升沉测量13度的相位误差在0.1 Hz对应的时间滞后大约是0.36秒如果船在做动力定位这个滞后足以让控制器相位裕度下降严重时引发低频振荡。2.2 描述错误的几种典型表现我在审阅技术材料和实际调试中总结出几类高频出现的描述错误列出来供你对照排查。第一类是把相位滞后和群延迟混为一谈。群延迟是相位对频率的负导数单位是秒它描述的是信号包络的延迟而相位滞后是某个频点上的相位角单位是度或弧度。两者在非线性相位系统里不是一回事。有些文档写“高通滤波器在0.1 Hz处滞后0.5秒”这其实是把群延迟当成了相位滞后量纲都不对。第二类是符号写反。高通滤波器在通带内相位是超前的也就是相位为正在阻带内相位滞后相位为负。但有些描述为了“直观”把通带内的超前说成“滞后”或者把补偿量的符号搞反导致实际补偿时相位误差翻倍。第三类是忽略频率依赖性只给一个固定滞后值。比如写“本高通滤波器相位滞后约5度”但不说明这是在哪个频率下测的。波浪频率是变化的5度在0.05 Hz和0.3 Hz对应的时延完全不同这种描述等于没描述。第四类是数字实现与模拟原型混淆。文档里给的相位曲线是模拟滤波器的但代码里跑的是数字滤波器两者在低频段差异显著尤其当截止频率远低于采样率时双线性变换的频率扭曲不可忽略。第五类是未区分滤波器阶数和类型。同样截止频率一阶和四阶的相位特性天差地别巴特沃斯和切比雪夫也不一样。有些描述只写“高通滤波”不写阶数和类型读者根本无法复现。注意如果你在文档里看到“相位滞后”四个字但没有注明频率、阶数、滤波器类型和实现方式基本可以判定这个描述是不完整的不能直接用于补偿计算。3. 相位滞后的正确计算方法与实操步骤3.1 从传递函数到相位曲线要正确描述相位滞后第一步是拿到滤波器的传递函数。对于模拟高通一阶形式是 H(s) s/(sωc)二阶巴特沃斯是 H(s) s²/(s²√2ωc sωc²)其中 ωc 2πfc。相位就是 H(jω) 的辐角。以二阶巴特沃斯为例在频率 f 处的相位为φ(f) 180° - arctan( (√2 ωc ω) / (ωc² - ω²) )当 ω ωc 时分母为正相位在90°到180°之间当 ω ωc 时分母为负相位在0°到90°之间。这个公式看起来简单但很多人直接拿它算数字滤波器就错了。数字实现时如果采用双线性变换需要做频率预畸变ωc_analog 2 fs tan(π fc / fs)。不做这一步实际截止频率会偏移相位曲线也跟着偏。我建议你直接在代码里用scipy.signal.freqz或者 MATLAB 的freqz画出数字滤波器的相位响应而不是手算模拟公式。import numpy as np from scipy import signal import matplotlib.pyplot as plt fs 50.0 # 采样率 Hz fc 0.03 # 截止频率 Hz order 2 # 设计数字高通滤波器注意使用双线性变换并做预畸变 b, a signal.butter(order, fc/(fs/2), btypehigh) # 计算频率响应 w, h signal.freqz(b, a, worN4096, fsfs) phase_deg np.unwrap(np.angle(h)) * 180 / np.pi # 查看0.1 Hz处的相位 idx np.argmin(np.abs(w - 0.1)) print(f0.1 Hz 处相位: {phase_deg[idx]:.2f} 度)这段代码跑出来你就能看到实际数字滤波器在0.1 Hz的相位而不是模拟原型的。实测下来不做预畸变时0.1 Hz处相位可能比预畸变后差10度以上这个差距在升沉补偿里是不能忽略的。3.2 相位滞后到时间滞后的换算拿到相位 φ度后对应的时间滞后 τ φ / (360 f)注意这里 φ 取绝对值因为滞后对应负相位。比如0.1 Hz处相位为-30度那么 τ 30/(360×0.1) 0.833秒。这个换算看起来简单但实际用的时候要注意相位滞后是频率的函数不同频率对应的时间滞后不同所以不能用一个固定时间延迟去补偿整个频段。在升沉测量里波浪是一个窄带信号主频比较集中所以工程上常用主频处的相位滞后做近似补偿。但如果你做的海况比较复杂波浪能量分布在多个频段那就需要设计一个相位补偿滤波器而不是简单延时。3.3 补偿滤波器的设计要点补偿的思路是让整个链路高通滤波器补偿环节在波浪频段内相位接近零。最简单的方法是设计一个全通滤波器或者相位超前网络使其相位特性与高通滤波器的相位相反。但全通滤波器会改变幅频特性需要仔细调整。我通常的做法是先确定波浪主频范围比如0.05 Hz到0.25 Hz然后在这个范围内用最小二乘法拟合一个二阶或三阶的相位补偿环节。具体步骤是计算高通滤波器在目标频段的相位曲线 φ_hp(f)。设定补偿目标 φ_comp(f) -φ_hp(f)。选择一个补偿滤波器结构比如一阶超前环节 H_comp(s) (1τ1 s)/(1τ2 s)其中 τ1 τ2。用优化算法调整 τ1 和 τ2使补偿后的相位残差最小。验证补偿后的幅频特性是否在可接受范围内避免高频噪声被放大。这个流程在代码里实现大概几十行但效果比拍脑袋给一个固定延时好得多。我试过在0.05到0.25 Hz范围内补偿后相位残差可以控制在±3度以内对应时间误差小于0.05秒对升沉测量来说足够了。提示补偿滤波器会引入额外的幅频变化如果高通滤波器在通带内有增益起伏补偿后可能放大某些频率的噪声。建议在补偿后加一个低通滤波器截止频率设在波浪频段上限的1.5倍左右。4. 实际升沉测量链路中的相位问题排查4.1 从传感器到升沉输出的完整链路升沉测量不是只有一个高通滤波器典型链路是加速度计 - 抗混叠低通 - 高通滤波 - 第一次积分 - 第二次积分 - 输出。有些实现还会在积分后加一个带通或者陷波滤掉特定频率的干扰。每一个环节都有相位贡献高通滤波器只是其中一部分。但标题专门点出高通滤波器的相位滞后描述错误说明这个环节在实际问题中占比最大或者最容易被忽视。我遇到过的一个真实案例某型升沉测量单元在湖试时表现正常到了海上试验升沉输出比参考值滞后约0.8秒。查了一圈发现高通滤波器截止频率设的是0.02 Hz但文档里写的相位滞后是按0.05 Hz算的而且用的是模拟原型公式没有考虑数字实现的频率扭曲。实际在0.1 Hz处数字滤波器的相位滞后比文档描述大了近20度对应0.55秒的额外滞后。把补偿参数按实际数字滤波器相位重新算之后滞后降到0.1秒以内。这个案例说明相位描述错误不是纸面问题它会直接导致补偿量算错进而影响升沉精度。4.2 排查相位问题的实操方法如果你怀疑升沉测量链路存在相位描述错误可以按下面这个流程排查确认滤波器实现方式是模拟电路还是数字代码如果是数字采样率多少用的什么变换方法获取实际相位曲线不要用文档里的曲线直接用代码或测试设备测出实际滤波器的相位响应。对比文档描述把实际相位曲线和文档里的描述逐频点对比看差异在哪些频段、差多少度。检查补偿环节补偿滤波器的参数是否基于正确的相位曲线设计符号有没有写反端到端验证用已知频率和幅值的正弦信号注入加速度计输入端测量升沉输出的相位和理论值对比。这个流程里第三步最容易发现问题。我见过不少文档相位曲线只画到0.5 Hz而实际波浪主频可能在0.05 Hz附近低频段的相位差异完全没体现。所以对比时一定要覆盖实际工作频段。4.3 常见问题速查表问题现象可能原因排查方法解决措施升沉输出整体滞后高通滤波器相位补偿不足对比实际相位与补偿相位重新计算补偿参数升沉输出超前补偿量符号写反检查补偿滤波器符号修正符号不同海况下滞后不一致相位描述未考虑频率依赖性测量多个频率点的相位设计频率相关补偿湖试正常海试异常数字滤波器频率扭曲未考虑检查预畸变设置加入频率预畸变升沉振荡补偿后相位裕度不足检查闭环相位裕度调整补偿或降低带宽这个表是我在实际调试中总结的基本上覆盖了八成以上的相位相关问题。你可以把它当成一个快速索引遇到现象先对号入座再深入排查。5. 相位滞后描述错误的深层影响与规避策略5.1 对控制系统的影响升沉测量不只是给操作员看一个数字它往往要进入控制系统比如动力定位、主动升沉补偿、直升机着舰引导等。这些控制回路对相位非常敏感。如果升沉测量本身有未补偿的相位滞后相当于在控制回路里多了一个延迟环节会降低相位裕度。当滞后大到一定程度系统就会振荡。我做过一个粗略估算对于一个带宽0.5 rad/s的动力定位回路如果升沉测量引入0.5秒的额外滞后相位裕度会下降约14度。如果原本裕度只有30度那下降后只剩16度已经接近不稳定边界。所以相位描述错误不是小事它可能让一个原本稳定的系统变得临界稳定。5.2 对多传感器融合的影响现在很多升沉测量方案会融合加速度计、GNSS、雷达高度计等多源信息。融合算法通常假设各传感器的相位特性已知且准确。如果高通滤波器的相位描述错了融合权重就会算错导致融合结果反而比单一传感器更差。我见过一个案例融合后升沉误差比单加速度计方案还大查到最后就是高通滤波器相位描述和实际不符导致融合滤波器发散。5.3 规避策略与文档规范建议要避免这类问题我从工程管理角度给几条建议第一文档里必须注明相位描述的来源。是模拟原型计算值还是数字滤波器实测值测试条件是什么采样率、截止频率、阶数、滤波器类型一个都不能少。第二相位曲线要覆盖实际工作频段。升沉测量的工作频段通常在0.02 Hz到0.5 Hz文档至少要把这个范围画全不能只画到0.1 Hz就完事。第三补偿参数要可追溯。补偿滤波器的设计文件里要写清楚基于哪条相位曲线、用什么优化方法、残差是多少。这样后续维护或升级时不会因为人员变动而丢失关键信息。第四端到端测试要成为标准流程。每套升沉测量系统出厂前都应该用正弦扫频或阶跃信号做一次相位验证把实测相位和文档描述对比偏差超过阈值就不放行。注意相位描述错误往往不是故意写错而是写文档的人没有实际测试直接抄了模拟公式或者旧版本参数。所以最有效的规避方法就是强制要求实测数据支撑。6. 几个我踩过的坑和实操心得第一个坑是过度信任仿真。早期我做升沉算法相位补偿参数全在MATLAB里仿真确定仿真里相位残差只有2度觉得没问题。结果上船一跑实际滞后比仿真大了近0.3秒。后来发现是加速度计本身的相位特性没考虑进去仿真里把加速度计当成理想器件了。所以现在我做相位补偿一定把传感器、抗混叠滤波器、高通滤波器、积分器全部串起来算一个都不漏。第二个坑是忽略温度对模拟滤波器的影响。有些升沉测量单元用的是模拟高通滤波器电阻电容的温漂会导致截止频率和相位特性随温度变化。冬天在北方港口测试正常夏天到南海就出问题。后来改成数字滤波器这个问题才解决。所以如果你还在用模拟高通一定要做温度试验把相位随温度的变化曲线测出来。第三个坑是补偿过度。有一次我发现升沉滞后就把补偿相位调大结果滞后是没了但升沉输出开始出现高频抖动。原因是补偿滤波器在高频段引入了增益把噪声放大了。后来加了一个低通滤波器才压住。这个教训是相位补偿不能只看相位幅频特性必须同步检查。第四个坑是文档版本混乱。同一个型号的升沉测量单元不同批次的滤波器参数有微调但文档没有同步更新导致后期维护时用了旧版相位曲线。现在我的做法是每套设备的相位曲线都带序列号和硬件绑定文档里直接引用序列号对应的曲线文件避免混淆。这些坑说到底都指向一件事相位滞后描述不是抄一个公式就完事的它需要实测、需要覆盖工作频段、需要和硬件绑定、需要端到端验证。你如果正在做升沉测量相关的工作建议把相位描述当成一个独立的验证项来对待别让它成为系统里最薄弱的一环。最后分享一个实用小技巧如果你手头没有专业的相位测量设备可以用一个简单的正弦信号发生器加数据采集卡来做。给加速度计输入端注入已知频率的正弦加速度信号同时采集升沉输出用互相关或者FFT算两者相位差精度足够工程使用。这个方法成本低而且能直接反映整个链路的实际相位特性比看文档靠谱得多。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑