潘祝光
(91656部队,上海 200439)
Signal Processing Toolbox 支持多种函数和App 功能,可用于压力仪表采样信号的存储、记录、预处理及特征提取,可以使用信号分析器在时域、频域及时频域中可视化地处理信号[1-4]。使用工具箱函数,可以通过设计并实现降低维度和提高信号质量的特征,为AI 模型训练准备信号数据集,可以使用信号数据存储来访问和处理文件集合与大型数据集,使用信号标注器,可以注释信号属性、区域和感兴趣的点,以创建标注信号集。除了C/C++和CUDA®代码生成之外,该工具箱还支持GPU 加速,用于桌面原型构建和嵌入式系统部署。
信号分析器是一款交互式工具,用于在时域、频域和时频域中可视化、测量、分析和比较信号,通过该App 可同时和在同一视图中处理不同持续时间的许多信号。从MATLAB®工具条上的Apps 选项卡中选择该App 将其启动,也可以通过在MATLAB 命令提示符下键入signal Analyzer来启动该App。
图1 MATLAB APP界面图Fig.1 MATLAB APP Interface diagram
图2 对数据进行去趋势处理Fig.2 Detrending data
图3 对数据进行平滑处理Fig.3 Smoothing data
Signal Processing Toolbox™提供的函数可让用户对信号进行去噪、平滑和去趋势处理,为进一步分析做好准备,从数据中去除噪声、离群值和乱真内容,增强信号以对其可视化并发现模式,更改信号的采样率,使不规则采样信号或带缺失数据信号的采样率趋于恒定,为仿真和算法测试生成脉冲信号和chirp 等合成信号[5-8]。
测量的压力信号可能存在的趋势会妨碍压力数据的分析,需要进行去趋势处理。以具有不同趋势的两种压力信号为例,压力信号对电源干扰等扰动很敏感,第一个曲线图上的信号显示线性趋势,第二个曲线图的趋势是非线性的,需要去除非线性的趋势,针对压力信号进行低阶多项式拟合的操作,并减去其值。信号多项式为3 阶至6 阶,绘制出两个新的信号,有效地去除趋势使信号基值不再偏移。它们现在可用于进一步处理,还可以通过使用中位数滤波器对时钟信号进行平滑处理,同时保留压力信号的边沿。
通过平滑处理,可以去除突发性、偶发性的干扰信号,更好地呈现出压力的真值数据,待仪表的信号后处理。
2.1.1 一种移动平均滤波器
移动平均滤波器是将采集到的数据放在数组中,然后用一定宽度的窗口截取并计算平均值,窗口的宽度决定了仪表的灵敏度:窗口越大,灵敏度越低,滤波效果越好;反之,窗口越大,灵敏度越高,滤波效果越差。应用过程中,可以人为去除这种延迟。平均滤波器可用于提取平均差异,使用移动平均滤波器来更好地估计压力数据对工况参数的影响。为此,首先,从测量值中减去平滑处理后的数据;然后,将差异数据依照分组显示。
2.1.2 加权移动平均滤波器
其他类型的移动平均滤波器并不对每个采样进行同等加权。加权移动平均滤波器可以看作是一种特殊的移动平均滤波器,在对窗口所截取数据进行平均之前,根据压力数据的处理经验,对待平均数据乘以一个权重系数alpha后,再进行数据平均。可以通过介于0 和1 之间的alpha 参数来调整指数加权移动平均滤波器。alpha 值越高,平滑度越低。
2.1.3 Savitzky-Golay滤波器
通过平滑处理数据,极值得到一定程度地削减。滤波器以一定阶数的最小二乘法对窗口内的采样数据进行拟合,如matlab 的sgolayfilt 函数。sgolayfilt 函数在内部计算平滑多项式系数,执行延迟对齐,并处理数据开始和结束位置的瞬变效应。
2.1.4 提取峰值包络及去除离群值
压力信号的高低随时都有变化,有时也希望对这种变化有平滑变动的估计。为此,可以使用envelope 函数来显示某个时段检测到的极端高点和极端低点,还可以通过取两个极端点之间的平均值来了解高点和低点的趋势。通过Hampel 滤波器可以去除离群值,许多滤波器对离群值很敏感。滤波器可以在不过度平滑处理的前提下,去除压力信号中的数据离群值。
计算常见描述性统计量,如极大值、极小值、标准差和RMS 水平。查找压力信号中的变化点并使用动态时间规整来对齐信号,测量时域特征,比如峰间幅值和信号包络。
2.2.1 测量压力信号相似性
测量压力信号的相似性操作包括:①比较具有不同长度或不同采样率fs 的压力信号;②在测量中发现存在真实压力仪表信号,还只是噪声干扰(两信号的相关性);③测量两个压力信号的延迟τ;④比较两个压力信号的频率成分,也可以在信号的不同段中寻找相似性以确定信号是否为周期性信号。此外,并不始终需要对长度进行均衡化处理。不同长度的信号之间可以执行互相关,但必须确保它们具有相同的采样率。最安全的做法是以较低的采样率对信号进行重采样。resample 函数在重采样过程中,对信号应用一个抗混叠(低通)FIR 滤波器。在测量中寻找关注信号,可以使用matlab 的xcorr 函数将两信号进行互相关计算,以确定是否存在匹配关系,如图4 所示。
图4 信号自相关效果图Fig.4 Signal autocorrelation effect
2.2.2 对齐压力信号
测量压力信号之间的延迟并将其对齐,假设要从不同的压力仪表采集数据,可以使用find delay 函数来找到两个信号之间的延迟。
可以直接使用alignsignals 函数来对齐信号,该函数通过延迟最早的信号来对齐两个信号。
除了上述方法之外,还可比较压力信号的频谱或功率谱。假设两个信号,它们各自的功率谱如下:
mscohere 函数可以计算两个压力信号之间的频谱相干性。在频谱相干性高的频率中,相关分量之间的相对相位可以用交叉频谱相位来估计。
2.2.3 求压力信号的周期性
求压力信号的周期性,假设存在一组气体流量计的补偿压力测量值,测量每30min 进行一次,持续约16.5 周。首先,需要去除均值来分析信号中的微小波动。xcov 函数在计算互相关性之前去除信号的均值。次峰指示每周有7个周期,主峰指示每周有1 个周期。第一个7 天周期表明,工况压力存在以周为单位的周期行为,其中压力在周末较低,在工作日期间恢复正常。
图5 待分析延迟信号图Fig.5 Delay signal diagram to be analyzed
图6 信号对齐效果图Fig.6 Signal alignment effect
图7 信号功率谱图Fig.7 Signal power spectrum
图8 主峰次峰数据时域图Fig.8 Time domain diagram of main and secondary peak data
通过累积和与变化点检测来确定压力信号的变化或爆发。在许多实际应用中,用户需要监控数据,并且希望在底层过程发生变化时尽快收到警报,通常可以使用累积和(CUSUM)控制图来实现这一点,对输入数据执行CUSUM测试可以快速确定疫情爆发的时间。CUSUM 跟踪两个累积和:检测局部均值何时向上移动的上和,以及检测均值何时向下移动的下和。积分方法使CUSUM 能够忽略发病率中的大(瞬态)尖峰,但仍对发病率中更稳定的小变化保持敏感。另一种方法是发现方差的显著变化,检测统计量突变的另一种方法是通过变化点检测,它将一个信号分成若干相邻的段,在每个段中有一个统计量(例如,均值、方差、斜率等)为常量。
为了实现工业压力仪表信号的数学信号预处理,应用Matlab 软件的Signal Processing Toolbox 工具包对所采集的压力数据进行去趋势、平滑等预处理操作,并对多组压力数据实现了相似性判断、信号对齐和周期测量。应用数字信号预处理技术,为后续的压力信号逻辑处理奠定坚实的基础。