☰
功率谱密度PSD详解:从Welch法到随机振动与故障诊断
2026/10/28 12:48:46 网站建设 项目流程

振动工程师和状态监测从业者嘴里常挂着"这条谱线怎么样",但真正能把功率谱密度(PSD)讲清楚的人并不多。我见过太多现场:数据采回来,时域波形看着挺干净,直接上FFT看幅值谱,然后对着一堆随机的毛刺下结论,最后要么误判、要么漏判。PSD这个词在随机振动试验规范和故障诊断报告里出现频率极高,可它到底在描述什么、单位为什么是g²/Hz、分段长度和平均次数怎么定、为什么同样的数据换个窗函数结论就变了——这些问题如果不搞明白,后面所有的分析都是空中楼阁。这篇内容我想把PSD从数学定义到工程落地完整走一遍,适合做结构振动测试、可靠性试验、旋转机械状态监测的朋友参考,也适合刚接触信号处理、被"功率谱密度"这个名词卡住的同学。看完至少能自己算出合理的PSD、能看懂试验谱线、能在故障诊断报告里判断一条谱线是不是可信。

1. 为什么时域波形不够用:从一段齿轮箱振动记录说起

1.1 随机信号的瞬时值本身不携带有效信息

先说一个我早期踩过的认知坑。当时接手一个减速机的振动监测,采样回来的加速度时域曲线看起来"很密、很乱",我就想着直接从波形上找周期性冲击。结果盯着屏幕看了半小时,除了能看出整体幅值大概在±3g波动,什么规律都读不出来。后来一位做转子动力学的老工程师提醒我一句话:随机振动是各态历经的随机过程,它的瞬时值不可预测,你唯一能稳定描述的是它的统计特性。

这句话点破了关键。对于确定性信号,比如一个标准正弦,时域波形就能完整描述它,周期、幅值、相位一目了然。但对随机信号——路面激励、气流脉动、齿轮啮合的宽带冲击、轴承滚子经过缺陷的脉冲序列——每一次采样的具体数值都是随机的,你拿单个波形去比对毫无意义。能用来说话的,只有它的功率在各个频率上的分布,也就是均方值随频率的分布密度。这就是功率谱密度。

打个生活化的比方:你没法预测某个路口下一分钟会过几辆车,但你可以统计出"这条路上平均每小时车流量在不同时段的分布"。PSD干的就是这件事,它把随机振动"摊"到频域上,告诉你能量主要集中在哪些频段,每个频段贡献了多少。

1.2 直接对随机信号做FFT会遇到的三个问题

很多人第一反应是:随机信号也是信号,FFT不能算吗?能算,但算出来的东西不可用,原因有三个。

第一个问题是幅值谱对随机信号不收敛。确定性信号做FFT,谱线幅值随采样长度增加是稳定的;随机信号不同,它的傅里叶变换本身是随机变量,采样越长、点数越多,单根谱线的幅值波动越大,你换一段数据再算,结果完全不同。

第二个问题是能量无限、功率有限。随机信号在时域上持续时间无限(理论模型),总能量是发散的,傅里叶变换的绝对可积条件不满足,严格来说它的FT不存在(只能取广义函数意义)。而平均功率是有限的,这就是为什么频谱分析要从"能量"转向"功率"。

第三个问题是频谱泄漏与随机性叠加。随机信号做有限长FFT,本身就相当于加了一个矩形窗,泄漏严重,而且泄漏的形状每次还不一样,导致谱线看起来像一团噪声,特征频率被淹没。

所以工程上的标准做法不是直接FFT,而是先做自相关,再做傅里叶变换,或者用分段平均的方式估计功率谱。这两条路殊途同归,前者是维纳-辛钦定理,后者是Welch方法,后面都会展开。

1.3 PSD描述的物理量到底是什么

这里必须把物理意义钉死,不然后面单位换算永远理不清。

PSD描述的是单位频率带宽内包含的均方值。对于加速度信号a(t),它的均方值就是a²的时间平均,单位是g²。PSD在某个频段上的积分,等于该频段内信号贡献的均方值。整条PSD曲线在全频段积分,就是信号的总均方值,开方之后就是均方根值(RMS),单位回到g。

注意:PSD积分得到的是均方值,不是幅值。想要峰值,还需要额外的峰值因子假设,这一点在做随机振动疲劳评估时特别重要。

理解了这一点,很多工程直觉就通了。比如一个随机振动试验谱线,你把它积分开方得到Grms,这个数直接决定了试件承受的总体振动烈度;再比如故障诊断里,某段频率区间PSD明显抬高,说明该频段的振动能量增加了,可能是某个部件共振或者特征频率被激发。

2. 从自相关到维纳-辛钦:PSD的数学骨架与单位换算

2.1 自相关函数是功率谱的"母函数"

自相关函数R(τ)描述的是信号在时刻t和t+τ之间的相似程度。对于随机振动信号,如果它含有周期成分或者窄带成分,自相关函数会在对应延迟处出现峰值;如果是纯白噪声,自相关函数只在τ=0处有一个冲激。

维纳-辛钦定理说得很干脆:宽平稳随机过程的自相关函数和功率谱密度是一对傅里叶变换对。写成式子就是PSD等于自相关函数的傅里叶变换:

Sxx(f) = ∫ Rxx(τ) e^(-j2πfτ) dτ

这条定理的价值在于,它把"对随机信号直接做FT"这个不收敛的操作,转化成了"先求自相关再FT"这个收敛的操作。因为Rxx(τ)在τ趋于无穷时会衰减到均值的平方,满足绝对可积,傅里叶变换就良定义了。

在实际代码里,我一般不会真去算自相关再FT,因为计算量大。但理解这条路径有个好处:当你在看PSD的谱线形状时,其实看的是自相关函数的频域分解。PSD在某个频率上的高值,对应自相关函数里以该频率振荡的成分。

2.2 单边谱与双边谱:那个2倍因子到底加在哪

这是新手最容易出错的地方,我自己也在报告里写错过。

理论上,自相关函数是实偶函数,它的傅里叶变换也是实偶函数,定义在(-∞, +∞)上,这叫双边谱。但实际工程里我们只关心正频率(负频率没有物理意义,是数学对称性的产物),所以把负频率部分的能量"折"到正频率上,得到单边谱:

Gxx(f) = 2 * Sxx(f), f > 0 Gxx(f) = 0, f < 0

这个2倍因子在f=0和奈奎斯特频率处有例外(那里没有对称的负频率镜像),但工程上一般忽略这个细节,因为很少有关键能量集中在直流或奈奎斯特频率。

提示:软件里标的PSD到底是单边还是双边,必须查文档。数值上差2倍,做对比时如果两边类型不一致,能差出一倍的能量,误判风险极大。

我见过一个案例:两家供应商给出的同一个产品的随机振动PSD曲线,量级差了3dB,查了半天发现一家给的是单边谱、一家给的是双边谱的2倍表述,实际上数据完全一致。

2.3 g²/Hz、m²/s³、dB/Hz这些单位的来历

单位混乱是PSD应用中的第二大坑。把常见单位整理成表更清楚:

单位形式物理含义常见使用场景
g²/Hz加速度均方值密度(以重力加速度归一)随机振动试验规范、车载电子可靠性
(m/s²)²/Hz加速度均方值密度(SI单位)通用振动分析、学术文献
m²/s³速度均方值密度(等价于功率/频率)部分结构动力学软件输出
dB/Hz相对于某个参考PSD的分贝值噪声与振动声学、谱图对比显示

这里的换算关系要记牢:1g = 9.80665 m/s²,所以1 g²/Hz = 96.04 (m/s²)²/Hz。做跨单位数据对比时,这个系数必须乘对。

dB/Hz的换算更tricky,它是对数相对值:

L = 10 * log10( PSD / PSD_ref )

参考值PSD_ref必须明确。声学里常取1 (μm/s)²/Hz或者20 μPa²/Hz,振动领域常取1 (m/s²)²/Hz或者1 g²/Hz。如果参考值不写清楚,dB值毫无意义。

2.4 幅值谱、功率谱、功率谱密度三者的区别

这三个概念经常被混着叫。我把区分方式总结成一句话:幅值谱看的是"每个频率上有多少幅值",功率谱看的是"每个频率上有多少功率",功率谱密度看的是"每个频率单位带宽上有多少功率"。

对离散FFT结果做不同处理会得到不同量:

  • 对FFT结果取绝对值再乘2/N,得到幅值谱,单位还是原始单位(g、m/s²等)。
  • 对FFT结果取模平方再乘2/N²(或类似归一化),得到功率谱,单位是原始单位的平方。
  • 功率谱再除以频率分辨率Δf,得到功率谱密度,单位是原始单位的平方每赫兹。

三者之间差的就是归一化因子和Δf。最关键的是最后一步除以Δf:如果处理时忘了除Δf,得到的是功率谱而不是密度,谱线的绝对数值会随分析带宽变化,做跨工况对比就完全不可比了。

3. Welch法落地:分段长度、窗函数、重叠率到底怎么选

3.1 为什么必须分段平均

理论上的PSD是统计量,需要无限长数据。工程上永远只能用有限长数据估计,这就引入了随机误差。

单次FFT得到的谱估计,方差约等于谱值本身的平方(对于高斯随机信号),也就是说标准差不小于均值的100%,这样单条谱线的可信度极低。解决办法是把长数据切成若干段,每段各自算谱,然后把所有段的谱值取平均。平均N段之后,方差降到原来的1/N,标准差降到1/√N。

这就是Welch方法的核心思想:分段、加窗、段间重叠、平均。跟Bartlett方法的区别就在于Welch允许重叠,能在同样的数据长度下增加平均段数,进一步降低方差。

3.2 频率分辨率Δf与统计自由度的取舍

这里有一个绕不开的矛盾:分段越长,频率分辨率越高(Δf小),但段数变少,平均次数少,统计误差大;分段越短,平均次数多,谱线平滑,但频率分辨率低,密集谱线分不开。

Δf的计算很简单:

Δf = fs / N_fft

其中fs是采样率,N_fft是每段的点数。举个实际例子:采样率2048 Hz,段长1024点,Δf = 2 Hz。如果想分离间隔1 Hz的两根谱线,就分不开了,必须把段长加到2048点以上。

重叠率一般取50%,这是统计效率和计算量之间比较平衡的选择。重叠率越高,同样数据能得到的独立段数越多,但段间相关性也越强,实际降方差效果打折。75%重叠在工程上也常用,特别是数据总量受限的时候。

应用场景建议Δf建议平均次数说明
齿轮啮合频率边频分析0.5~1 Hz20以上需要分辨密集边频带,段长不能短
轴承早期故障诊断1~2 Hz30以上特征频率间隔较大,但信噪比低需要多平均
随机振动试验控制2~5 Hz50以上规范要求控制谱平滑,统计自由度足够高
环境振动普查5~10 Hz10~20关注频段宽,不需要精细分辨率

这张表是我根据实际项目经验整理的,不是行业强制规范,具体取值还要结合采样率和数据结构来定。

3.3 一段可直接运行的Python PSD计算代码

说了这么多概念,直接上可运行的代码最快。用scipy的welch函数,参数注释写清楚:

import numpy as np from scipy import signal # 假设 data 是一维加速度序列,单位 g # fs 是采样率,单位 Hz fs = 2048.0 data = ... # 你的实际数据 # 关键参数说明: # nperseg: 每段点数,决定Δf = fs / nperseg # noverlap: 段间重叠点数,一般取 nperseg 的一半 # window: 窗函数,'hann' 是最常用的通用选择 # detrend: 去趋势,一般选 'constant' 去掉直流分量 # scaling: 'density' 表示输出PSD,'spectrum' 表示输出功率谱 # return_onesided: True 表示输出单边谱 nperseg = 2048 # Δf = 1 Hz noverlap = nperseg // 2 # 50%重叠 window = 'hann' f, Pxx = signal.welch( data, fs=fs, window=window, nperseg=nperseg, noverlap=noverlap, detrend='constant', scaling='density', return_onesided=True ) # Pxx 的单位是 g^2/Hz,f 单位是 Hz # 验证总均方值:对 Pxx 积分应约等于 data 的方差(去均值后) df = f[1] - f[0] ms = np.sum(Pxx) * df print(f"积分均方值 = {ms:.4f} g^2, RMS = {np.sqrt(ms):.4f} g") print(f"实际数据方差 = {np.var(data):.4f} g^2")

这段代码跑通之后,我建议你专门做一次"积分验证":把Pxx积分得到的均方值和原始数据的方差对比,两者应该非常接近(除非数据里有强烈的趋势项或者能量集中在极低频)。这个验证能帮你快速排查归一化错误。

提示:如果积分结果和方差差了接近2倍,八成是单边/双边谱处理出了问题;如果差了Δf倍,多半是密度和谱的处理搞混了。

3.4 加窗补偿与频谱泄漏的实际影响

随机信号做FFT必然面临泄漏。矩形窗的主瓣窄但旁瓣高,泄漏严重;Hann窗旁瓣衰减快(约-31dB/oct),泄漏小,代价是主瓣变宽(约1.44倍),频率分辨率略有下降;平顶窗主瓣更宽但幅值精度高,适合校准场景。

对于随机振动,Hann窗是首选,原因是没有哪根谱线的幅值精度特别重要,重要的是整体谱形状平滑。对于确定性成分(比如齿轮啮合频率),如果同时存在随机背景,也可以用Hann窗看趋势,但要意识到它的幅值会有约1.5dB的偏差。

窗函数带来的"功率损失"需要在计算时补偿。scipy的welch函数内部已经处理了归一化,如果你用numpy自己写FFT,就必须手动除以窗函数的均方和,否则PSD绝对值会偏小。我自己写过一个粗略的版本去验证scipy的结果,一开始忘了这一步,PSD量级差了接近3dB,查了一个下午才找到。

4. 随机振动试验台前的PSD:从试验谱到Grms与疲劳

4.1 试验谱线的四个拐点从哪来

做可靠性的朋友一定见过那种"梯形"的随机振动试验谱:低频一段平直,中频一段上升或下降,高频再一段衰减,最后进入一个极低的平台。这些拐点不是随便画的,背后是对产品实际使用环境的包络。

常见的规范谱线一般由量级A、起始频率f1、转折频率f2与f3、终止频率f4这几个参数确定。上升或下降段用dB/oct表示斜率,常见的值是+3 dB/oct(对应功率谱密度正比于频率)、-3 dB/oct、-6 dB/oct。

  • -3 dB/oct 意味着频率翻一倍,PSD减半,这是单自由度系统共振峰附近的典型衰减率。
  • -6 dB/oct 意味着频率翻一倍,PSD降到四分之一,对应速度谱平直的情况。
  • +3 dB/oct 常用于模拟低频段能量随频率增加的激励环境。

选择哪条斜率,取决于被测产品安装在什么位置、承受什么类型的激励。车载电子设备挂在车身上,低频受路面激励,高频受结构传递特性衰减,所以常见的是低频平直、高频-6 dB/oct。这些细节在做产品设计验证时非常关键,斜率选错了,总能量分配就会偏差。

4.2 Grms的积分计算与一个手算示例

Grms是随机振动试验最重要的一个数,等于PSD曲线在全频段积分开方。平直段好算,斜线段需要用到对数斜率积分公式。

假设试验谱为:20~500 Hz,PSD = 0.01 g²/Hz 平直;500~2000 Hz,按 -6 dB/oct 下降。

**第一段(平直段)**的面积:

A1 = 0.01 × (500 - 20) = 4.8 g²

第二段(-6 dB/oct 衰减段),PSD随频率按 f^-2 衰减。设起点f=500处PSD为A=0.01,则任意频率f处 PSD = A × (f/500)^-2,积分:

A2 = A × f1 × (1 - f1/f2) = 0.01 × 500 × (1 - 500/2000) = 5 × 0.75 = 3.75 g²

总面积与Grms:

总均方值 = 4.8 + 3.75 = 8.55 g² Grms = √8.55 ≈ 2.92 g

这个计算看着简单,但现场经常算错。我最常遇到的错误是把 -6 dB/oct 当成"幅度按平方衰减"或者"PSD按线性衰减",结果算出来的总能量偏差30%以上。记住:dB/oct是功率比的dB,PSD本身就是功率密度,所以-6 dB/oct对应PSD∝f^-2,-3 dB/oct对应PSD∝f^-1。

4.3 三区间法与随机振动疲劳评估

拿到Grms之后,下一步通常是评估疲劳损伤。业内常用的是三区间法(Steinberg方法),核心假设是随机振动加速度瞬时值服从高斯分布,峰值分布则按以下比例划分:

区间峰值范围占循环总数的比例循环数
1σ±1σ68.3%0.683 × N
2σ±2σ27.1%0.271 × N
3σ±3σ4.33%0.0433 × N

其中σ等于Grms(对零均值信号),N是总循环数,由振动持续时间乘以平均过零频率得到。然后分别用1σ、2σ、3σ对应的应力幅值去查S-N曲线,累加Miner损伤。

这套方法的名字和参数在工程手册里随处可见,但实际用起来有几个前提容易被忽略:响应必须近似高斯、结构响应以单阶模态主导、应力与加速度之间的传递关系是线性的。如果被测结构有多个密集模态或者存在非线性接触(比如螺栓连接处的微动滑移),三区间法的误差会比较大,必须配合实测应变或者有限元谐响应分析来修正。

我自己做过一个车载控制器的评估,最初完全按三区间法算,结果一到台架上做了没几个小时就出现焊点开裂,比预测严重得多。回头查发现是内部某块散热支架的一阶模态正好落在PSD的能量峰附近,局部放大系数远超整体Grms的假设。后来把支架改了形状,把一阶模态推出高能量频段,问题才解决。

4.4 台架上的实际偏差来源

理论算好的Grms,上了振动台之后实测值常常有偏差,偏差来源主要有四个:

控制点选择不当。加速度计贴在夹具上还是贴在产品上,测到的PSD完全不一样。规范一般要求控制点靠近产品安装面,但实际带夹具的系统里,夹具自身模态会引入额外的放大或衰减。

夹具共振。夹具的第一阶模态如果落在试验频段内,会显著抬高该频段的实际激励,试件承受的往往超出规范要求。我见过一个薄板夹具,一阶模态在320 Hz左右,正好在试验谱的高能量区,导致试件实际Grms比设定值高了接近50%,做了两天就出了问题。

功放削波。大Grms试验时,功放输出可能达到非线性区,实际驱动谱出现削顶,高频成分被截掉,低频能量偏大。这个从控制软件的驱动谱上能看出来。

多轴与单轴的差异。单轴依次做X/Y/Z三个方向,和真实的多轴同时激励,损伤等效性并不是简单的1:1,这一点在评估连接件松动时尤其明显。

5. 故障诊断中的PSD:轴承、齿轮与电机的谱线读法

5.1 PSD和包络谱不是一回事

这是故障诊断新手最容易混淆的一对概念。PSD是把原始振动信号整体做功率谱;包络谱是先把信号通过一个带通滤波器(围绕某个共振频带),再取Hilbert包络,然后对包络信号做频谱。

举个直观的比喻:PSD像是把一首曲子所有的乐器一起混着听,你能听出整体的音色分布;包络谱像是给某个特定乐器装了拾音器,专门听它自己的节奏。

对于轴承早期故障,故障冲击激发的是结构的高频共振(几千Hz到十几kHz),而冲击的重复频率(故障特征频率,通常几十Hz到几百Hz)在原始PSD上几乎看不到,因为它被高频共振的能量掩盖了。这时候必须走包络谱的路线:带通滤波保留共振频带,取包络,再低通或者直接做FFT,就能在低频看到清晰的故障特征频率及其谐波。

对于齿轮故障,情况稍有不同。齿轮的啮合频率通常在中频段(几百Hz到几千Hz),在PSD上是能直接看到的,而且边频带(啮合频率±转频整数倍)的分布本身就携带了调制信息。所以齿轮诊断更多时候直接看PSD就够了,不需要包络。

5.2 齿轮边频带:调制在功率谱上的表现

齿轮存在缺陷或者安装偏心时,会发生幅值调制,调制信号是转频(或其倍数)。时域上表现为啮合振动的幅值周期性起伏,频域上表现为啮合频率两侧出现间隔等于转频的边频带。

在PSD上看,健康的齿轮谱线是啮合频率处一根峰值,两侧干净;有轻微缺陷时,两侧出现对称的小峰,间隔等于转频。缺陷越严重,边频带数量越多、幅值越高,甚至形成"边频家族"。

判断边频是否异常,经验做法是看边频带与主峰的能量比。如果边频能量之和超过主峰能量的20%,就值得深入排查了。当然这个阈值不是金标准,需要结合同一台设备的历史数据做趋势对比。

我实际做过一台减速机的监测,刚上线时啮合频率的边频几乎看不到,三个月后侧边出现了两根间隔等于输入轴转频的小峰,半年后小峰变成了五根,同时边频能量占比从5%涨到30%以上。拆检发现是小齿轮的一个齿面出现了点蚀。整个过程中,PSD的形态变化比时域波形要直观得多。

5.3 轴承故障特征频率的对照关系

轴承的四个特征频率(外圈、内圈、滚动体、保持架)都是由几何参数和转速决定的,工程上常用近似公式:

特征频率近似公式说明
外圈故障 BPFO(z/2) × fr × (1 - d/D × cosα)z为滚动体个数,fr为轴转频
内圈故障 BPFI(z/2) × fr × (1 + d/D × cosα)内圈随轴转动,频率略高于外圈
滚动体故障 BSF(D/(2d)) × fr × (1 - (d/D)²cos²α)滚动体自转频率
保持架故障 FTF(fr/2) × (1 - d/D × cosα)保持架公转频率

其中d为滚动体直径,D为节圆直径,α为接触角。这些参数一般能从轴承厂家样本里查到。

在包络谱上找到BPFO或BPFI及其谐波,是判定轴承故障的经典依据。但要注意两个问题:一是转频估计误差会直接放大到特征频率上,转速测不准的时候,理论值可能偏差几Hz,跟噪声混在一起;二是特征频率出现并不等于故障,有些结构共振或者装配问题也会在相似位置出现峰值,必须结合趋势和边频判断。

5.4 一个减速机故障判读的完整过程

把上面的东西串起来,走一遍我实际经历的判读流程。

第一步,采集原始加速度信号,采样率设为5120 Hz(保证奈奎斯特频率覆盖到2.5kHz以上的共振带),采集时长60秒。

第二步,做整体PSD,确认主要能量集中在哪些频段。发现2000~3500 Hz有一个宽带抬高,说明高频共振带被激发,这是个信号。

第三步,对该共振带做带通滤波,取包络,做包络谱。在包络谱上找到了约87 Hz的一根峰,与理论计算的BPFO(86.9 Hz)几乎重合,并且出现2倍频174 Hz、3倍频261 Hz的谐波。

第四步,查PSD看是否有转频边频。在87 Hz附近发现间隔等于转频(约24.8 Hz)的边频,说明存在调制。

第五步,连续采集一周,观察87 Hz处的包络谱幅值变化。结果一周内幅值翻了一倍多,趋势明显。

拆检结果:外圈滚道出现了一条长约5mm的剥落带。整个过程从数据到结论,主要靠的就是PSD确认频段、包络谱找特征、趋势对比下判断这三步,没有一步是靠"看波形猜"。

6. 我在现场踩过的几个坑

6.1 采样率不足引入混叠,PSD上看起来"很干净"

有一次做风机齿轮箱监测,现场为了节省存储,采样率设成了1000 Hz,奈奎斯特频率500 Hz。PSD在500 Hz以下看起来很干净,没有明显特征峰,我当时判断"运行状态良好"。

后来换了套设备,采样率提到5120 Hz,PSD上立刻出现了1800~2500 Hz的宽带能量抬高,包络谱也能看到清晰的故障特征。回头分析才明白:原始信号里的高频冲击能量,在1000 Hz采样下被混叠折叠到了低频段,把原本的特征全搅乱了,看起来反而"干净"。

这件事给我的教训是:采样率不是按关心的频率上限定的,而是按信号里可能存在的最高频率成分定的。对于振动信号,往往需要关注几kHz甚至十几kHz的共振带,采样率低于10kHz基本没法用。抗混叠滤波器是硬件层面的最后防线,但它只能滤掉截止频率以上的成分,如果截止频率本身设得不够高,混叠照样发生。

6.2 平均次数太少,谱线上的毛刺把真实特征掩盖了

早期做在线监测时,为了节省计算资源,每段数据的平均次数只取4次。PSD曲线上随机起伏非常大,标准差不低于谱值的一半,本来应该出现的边频带完全淹没在毛刺里。

后来把平均次数提到32次以上,谱线立刻平滑下来,边频清晰可见。理论上,平均N段可以让相对标准差降到1/√N,32次平均对应约17.7%的相对误差,对于判断特征峰是否显著已经够用。想要更精细的趋势分析,平均次数还得往上加。

这里有个取舍:平均次数增加,需要更长的数据段,实时性下降。做在线预警系统时,我一般会设计两套配置:一套短段、少平均用于实时报警,一套长段、多平均用于事后诊断,两套并行运行。

6.3 单位不统一导致的历史数据不可比

这个问题听起来低级,但非常常见。同一个监测系统,不同时期接入的传感器量程不同,有的输出单位是g,有的输出是m/s²,数据入库时没有统一单位。做趋势对比时,同一种故障在不同时间段算出来的PSD相差将近100倍(因为1g对应9.8m/s²,平方后接近96倍),趋势图看起来像"故障突然恶化又突然消失",完全没法判断。

解决办法是把单位统一写进数据接口的规范里,入库前必须转换到统一单位。我现在习惯在PSD计算函数的开头加一行断言,检查输入数据的单位标签,没有标签直接报错,避免无声的错误。

6.4 窗长变化导致不同批次数据不可比

做长期趋势监测的时候,如果中途调整了分析参数(比如把段长从1024点改成2048点),Δf从2 Hz变成1 Hz,PSD的绝对数值会变化,不同时段的数据直接对比就失真了。

这个问题在自研系统中特别容易忽略,因为参数往往写在配置文件里,改完不通知分析人员。我现在的做法是把"分析参数"作为PSD结果的元数据一起存储,任何跨时段对比之前先检查参数是否一致,不一致的话必须先重算一遍,不能用历史结果直接比。

6.5 把PSD绝对值和相对趋势混着用

最后一个坑比较隐蔽。有些时候我们只关心特征频率处的PSD是否"显著",有些时候需要绝对量级(比如验证是否超过规范限值)。这两件事对PSD的绝对标定精度要求完全不同。

做相对趋势分析时,只要每次测量采用相同的传感器、相同的安装位置、相同的分析参数,绝对标定误差(比如传感器灵敏度偏差5%)会以固定比例出现,不影响趋势判断。但要做绝对量值判定,传感器标定证书、电荷放大器增益、采集卡量程这些必须全部核对,误差链加起来可能超过15%。

我在实际项目里会把两类任务分开做:趋势分析用固定的传感器链路,不做改动;绝对判定用经过计量的完整链路,每次使用前校准。混在一起用,很容易得出错误结论。

最后分享一个小技巧:如果你的PSD曲线看起来"过于平滑"或者"过于毛糙",先别急着怀疑算法,先打印出来实际的平均段数。很多时候问题就出在数据长度不够被迫减少了平均次数,而不是算法本身有问题。查清这一点,比反复调参数管用得多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询