前言

时域同步平均技术是一种信号降噪的手段,前提假设是在某个测量节点上(暂且这么命名)主频信号的幅值随时间是不变的,噪声信号幅值随时间忽大忽小,因此该测点节点上传感器采集到的信号进行叠加平均后,主频信号的幅值是保持不变的,噪声信号的幅值则会应为中和而变小,从起到降噪目的。
因此时域平均技术(TSA)应用的关键是怎么将采集到的数据进行截断,且保证各个截断信号的测量节点对应,从而进行后续叠加平均操作。
简单来说,TSA技术是将同一相位的信号进行叠加平均。


一、TSA实现方式

TSA实现方式有两种:
1、基于振动信号与脉冲信号同步采集的方式来将信号进行截断平均,这种方式需要硬件的支持,因此在本文章中暂不考虑,有需要的可留言探讨。
2、基于转速信号的信号截断处理技术,其原理是考虑信号稳定不变,采样频率也不变,因此设备旋转一周的时间固定,旋转一周内的信号点数也是相同的,即:
N = 1/w * fs是个常数,其中w为设备旋转频率(Hz), fs为信号采样频率。

二、使用步骤

1.主要代码

代码如下(示例):

def TSA(x, fs, w):
    period = 1 / w
    N = int(period * fs)
    P = int(np.floor(len(x) / N))
    x_tsa = np.zeros(N)
    if P > 10:
        P = int(10)
    else:
        pass
    for i in range(P):
        x_tsa += x[0 + i * N:N + i * N]
    x_final = x_tsa / P
    return x_final

2.示例Demo

代码如下(示例):

# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt
import random


def TSA(x, fs, w):
    period = 1 / w
    N = int(period * fs)
    P = int(np.floor(len(x) / N))
    x_tsa = np.zeros(N)
    if P > 10:
        P = int(10)
    else:
        pass
    for i in range(P):
        x_tsa += x[0 + i * N:N + i * N]
    x_final = x_tsa / P
    return x_final


if __name__ == '__main__':
    w = 5
    z = 30
    fs = 1024
    fsw = 5
    time = 10
    f = w * z
    t = np.linspace(0, time - 1 / fs, int(time * fs))
    noise = []
    for i in range(len(t)):
        noise.append(random.random() * 2 - 1)
    x = (1 + 0 * np.sin(2 * np.pi * 20 * t)) * np.sin(2 * np.pi * f * t)
    x_noise = x + np.array(noise)
    tsa_result = TSA(x_noise, fs, w)
    plt.figure(1)
    plt.subplot(2, 1, 1)
    plt.plot(x_noise)
    plt.ylabel('Amplitude')
    plt.xlabel('time')
    plt.subplot(2, 1, 2)
    plt.plot(tsa_result)
    plt.ylabel('Amplitude')
    plt.xlabel('time')
    plt.show()

总结

在使用TSA进行信号降噪时发现并不是截断的数量越多信号的降噪效果越好,个人认为原因由两点:
1、设备实际旋转过程中的转速存在波动,信号采样频率不够高;
2、当设备转频与采样频率不是整数倍时,那么截断后的信号虽然点数相同,但相位不同,进行叠加反而会削弱主要信号。
举个列子:设备转频是1Hz,采样频率0.3Hz,在3s内的三个截断信号对应的时刻为[0.3, 0.6, 0.9], [1.2, 1.5, 1.8], [2.1, 2.4, 2.7],这三段内的信号相位不相同,不能进行叠加平均。
后续优化建议:1、引入脉冲出发信号,这样效果最直接最好。 2、对截断后的信号进行插值重采操作,降低原因2的影响。
上述结论为个人理解,如果不妥地方,欢迎大家讨论指正。
PS:欢迎各位交流,后续有啥想实现的信号处理功能,请在下方评论区留言,或者关注公众号:不说话上代码

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐