当前位置: 首页 > news >正文

【机械故障】使用fir滤波器实现数据拟合

使用fir滤波器实现数据拟合

提示:学习笔记


使用fir滤波器实现数据拟合

  • 使用fir滤波器实现数据拟合
  • 一、问题建模
  • 二、 构建矩阵方程(关键步骤)
  • 三、最小二乘解
  • 四、重要注意事项
    • 4.1 滤波器长度 M
    • 4.2 数据的预处理
    • 4.3 延迟问题
    • 4.4 性能评估


一、问题建模

我们定义:

  • 期望信号(目标信号):d[n] = 第2列的第n个数据点

  • 输入信号:x[n] = 第3列的第n个数据点

  • FIR滤波器:其系数为 h[0], h[1], …, h[M-1],其中 M 是滤波器的长度(阶数+1)。

  • 滤波后的输出信号:y[n] = 估计的第2列数据
    y[n] = h[0]*x[n] + h[1]*x[n-1] + … + h[M-1]*x[n-M+1]

  • 我们的目标是让输出 y[n] 尽可能接近期望信号 d[n]。误差信号 e[n] 定义为:
    e[n] = d[n] - y[n]

最小二乘法的核心思想是:找到一组滤波器系数 h[k],使得所有数据点上误差平方和(Sum of Squared Errors, SSE) 最小。

SSE = Σ (e[n])² = Σ (d[n] - y[n])²

二、 构建矩阵方程(关键步骤)

为了利用所有可用的数据点(假设有 N 个),我们将问题转化为矩阵形式。

首先定义一些向量和矩阵:

  • 滤波器系数向量: h = [h[0], h[1], …, h[M-1]]ᵀ (一个 Mx1 的列向量)

  • 期望信号向量: d = [d[M-1], d[M], …, d[N-1]]ᵀ (一个 (N-M+1)x1 的列向量)
    注意:由于滤波需要用到前M-1个输入点,所以输出y[n]从n=M-1时刻开始才有有效值。因此d也从对应的点开始取。

  • 输入信号矩阵(卷积矩阵/Toeplitz矩阵) X:
    这是一个非常关键的矩阵,其结构如下:

X = [[x[M-1],   x[M-2],   ...,   x[0]      ],[x[M],     x[M-1],   ...,   x[1]      ],[x[M+1],   x[M],     ...,   x[2]      ],...,[x[N-1],   x[N-2],   ...,   x[N-M]    ]
]

这个矩阵是一个 (N-M+1) x M 的矩阵。它的每一行是输入信号 x[n] 的一段,用于与滤波器系数 h 进行卷积计算得到某一个输出点 y[n]。

现在,滤波输出向量 y 可以写为:
y = X * h

误差向量 e 为:
e = d - y = d - X * h

我们的目标函数(误差平方和)的矩阵形式为:
SSE = eᵀe = (d - Xh)ᵀ (d - Xh)

三、最小二乘解

为了最小化 SSE,我们对其关于向量 h 求导,并令导数等于零向量。

经过推导(详细过程可参考任何线性代数或优化教材),可以得到著名的正规方程(Normal Equation):

(XᵀX) h = Xᵀ d

其中:

  • XᵀX 是一个 M x M 的方阵(自相关矩阵)。

  • Xᵀ d 是一个 M x 1 的列向量(互相关向量)。
    这个方程的解即为最优滤波器系数:
    h_opt = (XᵀX)⁻¹ Xᵀ d

在数值计算中,我们通常使用更稳定高效的算法来求解这个方程,而不是直接求逆,例如使用Cholesky分解(因为 XᵀX 是正定对称矩阵)或奇异值分解(SVD)。Python的numpy.linalg.lstsq函数就封装了这些方法。

四、重要注意事项

4.1 滤波器长度 M

这是一个关键的超参数。

  • M 太小,滤波器模型太简单,无法捕捉真实的系统特性,导致欠拟合。

  • M 太大,滤波器会开始拟合数据中的噪声,导致过拟合,虽然在训练数据上表现好,但泛化能力会变差。

  • 需要通过实验来调整,可以选择使得均方误差(MSE)进入平台且不会显著回升的 M 值。

4.2 数据的预处理

如果两列数据的幅度或量纲差异很大,最好先进行标准化(减去均值、除以标准差)或归一化(缩放到[0,1]或[-1,1]区间),这有助于数值计算的稳定性。

4.3 延迟问题

FIR滤波器会引入 (M-1)/2 个采样点的延迟。在上面的图中,你会发现滤波后的信号与真实信号在时间上可能没有完全对齐。对于要求严格对齐的应用,需要对输出信号进行相应的延迟补偿。

4.4 性能评估

除了绘制图形直观比较,均方误差(MSE) 是一个重要的定量指标。你还可以计算信噪比(SNR) 或相关系数(R²) 来评估滤波效果。


文章转载自:

http://5gNxPynp.drmbh.cn
http://J47OY4U7.drmbh.cn
http://0rKLFLgS.drmbh.cn
http://LkN80UpB.drmbh.cn
http://dDCp8L88.drmbh.cn
http://2Ad8lm5g.drmbh.cn
http://1zHrVFR9.drmbh.cn
http://DisgeIl0.drmbh.cn
http://3tiDmfFw.drmbh.cn
http://BgwoMOQt.drmbh.cn
http://cISFrEzh.drmbh.cn
http://z2xpWIQo.drmbh.cn
http://q333blE6.drmbh.cn
http://aK9jpIGU.drmbh.cn
http://kiT1V66N.drmbh.cn
http://2z5vQvki.drmbh.cn
http://n9q26Fne.drmbh.cn
http://ZZ9ahz5y.drmbh.cn
http://Kte7UVPx.drmbh.cn
http://KKYjNQrx.drmbh.cn
http://iLnaeahD.drmbh.cn
http://WPluvoW3.drmbh.cn
http://1d5yI8Tu.drmbh.cn
http://DszvPzT4.drmbh.cn
http://Z3Oxg9DY.drmbh.cn
http://KSZsOBFC.drmbh.cn
http://sSmJWrED.drmbh.cn
http://27nNp32Y.drmbh.cn
http://mjs6rrEd.drmbh.cn
http://Vffm2A2y.drmbh.cn
http://www.dtcms.com/a/376935.html

相关文章:

  • vue3 中 npm install mammoth 与 npm install --save mammoth 的主要区别说明
  • Milvus基于docker主机外挂实践
  • 从零搭建企业级日志系统:Web + App 全端解决方案实战!
  • 【算法--链表】138.随机链表的复制--通俗讲解
  • Nodejs(③Stream)
  • iOS 26支持的设备列表
  • 日记 - 2025.9.10 读研日记(一)
  • 【JVM】故障诊断和性能监控命令
  • Java大厂面试实录:在线教育场景下微服务架构与智能推荐实践(含技术详解)
  • 实战:HarmonyOS 中 HEIF 图像开发全流程(转码篇 兼容场景)
  • 融智学生活方式DBA 小生境融智:身心健康就是美,抓住刚需就是赢
  • 【高级】系统架构师 | 2025年上半年综合真题DAY3
  • CentOS 7部署Zabbix5.0
  • [rStar] 策略与奖励大语言模型
  • 使用命令centos把普通用户设置为管理员
  • 机器学习实操项目03——Scikit-learn介绍及简单分类案例
  • 了解网站安全监测系统的重要性
  • 图像尺寸和CMOS的关联
  • 视频转webp批量处理工具哪个好?这里有答案
  • cuda-NCCL笔记(3)-- 分布式训练LeNet
  • Android Studio开发环境配置
  • 【springboot+vue3】博客论坛管理系统(源码+文档+调试+基础修改+答疑)
  • 中台的万象
  • 从Grok 4多智能体协同到RAG范式革命:2025年AI工作流的技术重构
  • pythonFlask 使用 SQLAlchemy 的连接池
  • 【系统架构设计(25)】Web应用服务器与现代架构
  • minikube 的 kubernetes 入门教程-Nginx Proxy Manager
  • ‌Git Bisect 二分查找定位错误总结
  • 基于大数据挖掘的药品不良反应知识整合与利用研究
  • Git 命令教程