最近一天内有两位同行咨询这个问题:通过软件计算某个频带内的RMS值与将数据导出到Excel计算得到的RMS值不同。我想,可能除了这两位同行之外,还有很多同行也有这样的疑惑,因此,有必要通过实例说明原因。实际上,这涉及到计算频带内的有效值时,是以能量修正为前提的。而常见的频谱,如线性自功率谱是按幅值修正的。关于这两种修正方式的说明,请见文章“幅值修正与能量修正”。
使用的频域信号为线性自功率谱,幅值格式为peak,频率分辨率为0.5Hz,分析带宽为0-6400Hz,使用的窗函数为汉宁窗,其频谱如图1所示。

图1 要计算的频谱
任选一区间作为计算演示,在这选取1124-1134Hz频带内的值进行计算,通过软件计算得到这个频带内的RMS值为0.1244g,如图2所示。

图2频带内软件计算的RMS值为0.1244g
将1124-1134Hz频带内的线性自功率谱幅值导出到Excel中,计算结果如图3所示,由于频率分辨率为0.5Hz,因此共有21条谱线。不同计算方法得到的结果也在图3中显示。将每条谱线RMS幅值按能量相加(平方和开根号)求得这个频带内的RMS值为0.15265g,与软件计算结果不同。在说明差异的原因之前,先简要地介绍一下相应的理论背景。

图3 Excel计算相同频带的RMS值
根据信号处理理论,对于线性频谱的幅值为RMS形式,计算如图4所示频带f1~f2内的RMS值(也称窄带RMS值)时,计算公式如下,对于始末谱线,取其半值,这是由于始末谱线还有一半的能量位于计算频带外。


图4 计算频带f1~f2间的RMS值
在Excel中,大多数同行都是按上述公式计算相应频带内的RMS值。对图3的数据按此式计算得到这个频带内的RMS为0.15265g,与软件计算得到的值有差异。
在某些情况下,如计算频谱时施加矩形窗或频谱的幅值是按能量修正处理的(如功率谱密度PSD),则按能量相加公式计算的RMS值与软件结果是相同的。但是大多数情况下,人们常用的频谱形式是线性自功率谱。这种线性频谱的修正方式是幅值修正,而施加的窗函数也不是矩形窗,那么,这时在Excel中按上述公式计算的RMS值与软件结果是不相同的。
在进行FFT计算时,为了减少频谱泄漏,需要对分析的时域信号施加窗函数。每种窗函数都有自身的特征,如主瓣能量与所有旁瓣能量之比、主瓣宽度、旁瓣衰减速率、幅值失真度等等。窗函数的选择取决于分析目的和被分析信号的类型。施加窗函数会改变原始信号的属性,如汉宁窗会将原始信号的起始与结束时间段的信号置零,如图5所示是对正弦信号施加汉宁窗后的波形。加窗后的信号的幅值或/和能量与加窗前有明显差异。因此,需要对加窗后的信号进行修正,通过修正因子使加窗后的信号恢复到与原信号有相同的幅值或能量。故,对信号的修正分为幅值修正和能量修正。

图5 对单频正弦信号施加汉宁窗后的波形
计算信号的RMS值,属于能量范畴,因此,在计算时应使用能量修正的频谱。如施加汉宁窗的情况下,加窗后信号的能量仅为原信号能量的61%。因此,加窗后的数据需要倍乘1.63,以修正能量的大小。补偿加窗所需的修正因子,取决于修正类型和加窗的次数。常见的窗函数的修正因子所表1所示。
表1 常见窗函数的修正因子
窗的类型 | 幅值修正因子 | 能量修正因子 |
矩形窗 | 1 | 1 |
汉宁窗×1 | 2 | 1.63 |
汉宁窗×2 | 2.67 | 1.91 |
汉宁窗×3 | 3.20 | 2.11 |
布莱克曼窗 | 2.80 | 1.97 |
凯赛窗 | 2.49 | 1.86 |
哈明窗 | 1.85 | 1.59 |
平顶窗 | 4.18 | 2.26 |
通常商业软件都有默认的频谱修正方式,如对频谱spectrum、自功率谱(包括线性形式)和阶次采用幅值修正;功率谱密度PSD采用能量修正等。
现在来解释本文的问题。当对幅值修正的线性频谱在Excel中按上述公式计算RMS值,没有考虑将幅值修正的频谱转换为能量修正。如果频谱是能量修正,按上述公式计算的结果与软件计算结果是相同的。对图3所示的频带内的RMS计算时,由于施加的是汉宁窗,因此,需要先将幅值修正转换为能量修正,即除以幅值修正因子2,再乘以能量修正因子1.63。或直接将按上述公式计算的RMS值乘以系数0.815(0.815=1.63/2)。
因此,对于施加汉宁窗的线性频谱而言,软件计算的RMS值是Excel中计算的RMS值的0.815倍。其他窗函数的线性频谱,二者相差的系数为能量修正因子/幅值修正因子。能量修正的频谱,二者计算结果是一致的。
扩展阅读