【机械故障】使用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://www.pswp.cn/news/922301.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/922301.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STC8H系列-高级PWM-两相步进电机-细分驱动

两相步进电机, STC8H系列 用高级PWM实现SPWM细分驱动 /************* 功能说明 ************** 用B组高级PWM细分驱动2相4线小型步进电机, 支持1、2、4、8、16、32、64细分, 比如1.8度的电机4细分到0.45度. 本程序用于演示SPWM多细分直接驱动2相4线小型步进电机…

内网环境下ubuntu 20.04搭建深度学习环境总结

2025年9月更新,随着人工智能的发展,现在深度学习环境配置越来越简单了,常用的pytorch、paddle(3.x)等深度学习库安装的时候自带了cuda和cudnn的python包,不需要在操作系统层面自己安装,配置环境…

深入 Linux 文件系统:从数据存储到万物皆文件

深入 Linux 文件系统:从数据存储到万物皆文件 Linux 文件系统是一个精妙而复杂的工程,它像一座图书馆,不仅存放着书籍(数据),还有一套高效的卡片索引系统(元数据)来管理它们。本文将…

C++, ffmpeg, libavcodec-RTSP拉流,opencv实时预览

文章目录RTSPStreamPlayer.cppRTSPStreamPlayer.hmain.cpp编译运行在ffmpeg_rtsp原有的rtsp拉流项目基础上加入了udp连接rtsp&#xff0c;日志模块&#xff0c;opencv实施预览等功能。RTSPStreamPlayer.cpp #include "RTSPStreamPlayer.h" #include <iostream>…

MySQL在Ubuntu 20.04 环境下的卸载与安装

目录 前言&#xff1a;学习引入 1、安装注意事项 2、学习建议 3、MySQL 和 MariaDB 核心概念一&#xff1a;它们是什么&#xff1f; 核心概念二&#xff1a;它们如何工作&#xff1f;&#xff08;“仓库”比喻&#xff09; 核心概念三&#xff1a;为什么它们如此流行&…

BizDevOps 是什么?如何建设企业 BizDevOps 体系

在数字经济加速渗透的今天&#xff0c;企业数字化转型已从 “技术升级” 转向 “价值重构”&#xff0c;单纯的 IT 研发或业务优化已难以适应市场快速变化。业务研发运营一体化&#xff08;BizDevOps&#xff09;作为打通 “业务 - 技术 - 运维” 协同壁垒的核心模式&#xff0…

Mac菜单栏综合工具FancyTool更新啦

本次更新聚焦「轻量体验」深度优化&#xff1a;不仅重构了 CPU 占用逻辑与系统唤醒机制&#xff0c;让后台运行更高效&#xff1b;更让动画交互全程保持丝滑流畅&#xff0c;资源消耗却低到近乎无感 —— 哪怕它常驻菜单栏&#xff0c;你也几乎察觉不到它的存在&#xff0c;既不…

ARM汇编 led

1.相关介绍本次用的开发板是IMX6ULLCPU&#xff1a;NXP i.MX 6ULL Cortex-A7单核处理器&#xff0c;主频 528MHz&#xff08;工业级&#xff09; 或 800MHz&#xff08;商业级&#xff09;467, GBA封装内存&#xff1a;512MB DDR3L RAM&#xff0c;支持高速数据存取。存储&…

弹窗分页保留其他页面勾选的数据(vue)

如图所示&#xff0c;这是个常见的多选todolist不过这里多了个要求&#xff0c;弹窗上下页面切换的时候需要保留勾选结果这其实也不难&#xff0c;但是如果每次都手动写一遍却有点恼人&#xff0c;这次捋一下思路&#xff0c;并把核心代码记录一下&#xff0c;方便下次翻找核心…

分享:一种为蓝牙、WIFI、U段音频发射设备提供ARC回传数字音频桥接功能的方案

随着智能电视、流媒体设备的普及&#xff0c;用户对高质量音频输出的需求激增。为解决多设备协同、无线化传输及ARC高保真音频传输的痛点&#xff0c;纳祥科技推出HDMI ARC音频转换方案&#xff1a;HDMI ARC音频转光纤/同轴/I2S/左右声道&#xff0c;桥接无线音频发射设备&…

在WPF项目中使用阿里图标库iconfont

使用阿里图标库的步骤&#xff1a; 1。从阿里图标库官方网站上下载图标。 2。把阿里图标库&#xff08;WPF中支持.ttf字体文件&#xff09;引入 3。在App.xaml中添加图标的全局样式。推荐在此处添加全局样式&#xff0c;为了保证图标可以在所有窗体中使用。 代码如下&#x…

vue3项目启动流程讲解

Vue 3 项目启动流程详解Vue 3 项目的启动流程相比 Vue 2 有了显著变化&#xff0c;采用了新的应用实例创建方式和组合式 API。下面我将详细讲解 Vue 3 项目的启动过程&#xff0c;并提供一个可视化演示。实现思路创建 Vue 3 应用实例配置根组件和必要的插件挂载应用到 DOM展示启…

【C++】LLVM-mingw + VSCode:Windows 开发攻略

LLVM-mingw 是一个基于 LLVM 项目的开源工具链&#xff0c;用于在类 Unix 系统&#xff08;如 Linux 或 macOS&#xff09;上为 Windows 平台交叉编译应用程序&#xff0c;它结合了 LLVM 编译器基础设施&#xff08;包括 Clang C/C/Objective-C 编译器和 LLD 链接器&#xff0c…

AI内容标识新规实施后,大厂AI用户协议有何变化?(六)科大讯飞

科大讯飞也是国产老将&#xff0c;当年OpenAI横空出世&#xff0c;国内唯有文心和星火能与之一战&#xff0c;早期效果感觉甚至是优于文心的&#xff0c;只是后面再也没有什么大动静出来。讯飞也算大厂了&#xff0c;但跟百度阿里这些老牌互联网门阀相比&#xff0c;还是不够持…

Error: MiniProgramError{“errMsg“:“navigateTo:fail webview count limit exceed“}

这个错误 "navigateTo:fail webview count limit exceed" 是微信小程序中常见的页面栈溢出问题&#xff0c;原因是微信小程序对页面栈深度有默认限制&#xff08;通常为10层&#xff09;&#xff0c;当使用 navigateTo 连续跳转页面导致页面栈超过限制时就会触发。解…

少即是多:从 MPTCP 看优化干预的边界

“对待端到端传输&#xff0c;信息不足就要少干预&#xff0c;越干预越糟糕”&#xff0c;这是我的信条&#xff0c;这次再来说说 MPTCP。 Linux 内核 MPTCP 最好的调度算法就是 default 算法&#xff0c;没有之一&#xff0c;因为它以代价最小&#xff0c;最自然的方式做到了保…

“开源AI智能名片链动2+1模式S2B2C商城小程序”在直播公屏引流中的应用与效果

摘要&#xff1a;本文聚焦于直播公屏引流场景&#xff0c;探讨“开源AI智能名片链动21模式S2B2C商城小程序”如何通过技术赋能与模式创新&#xff0c;重构直播电商的流量获取与转化路径。研究结合案例分析与实证数据&#xff0c;揭示该方案在提升用户互动、优化供应链管理、降低…

基于大数据挖掘的药品不良反应知识整合与利用研究

标题:基于大数据挖掘的药品不良反应知识整合与利用研究内容:1.摘要 随着医疗数据的爆炸式增长&#xff0c;大数据挖掘技术在医疗领域的应用日益广泛。本研究旨在利用大数据挖掘技术对药品不良反应知识进行整合与利用&#xff0c;以提高药品安全性监测和管理水平。通过收集多源异…

国产时序数据库选型指南-从大数据视角看透的价值

摘要&#xff1a;大数据时代时序数据库崛起&#xff0c;工业物联网场景下每秒百万级数据点写入成为常态。Apache IoTDB凭借单节点1000万点/秒的写入性能、毫秒级查询响应和20:1超高压缩比脱颖而出&#xff0c;其树形数据模型完美适配工业设备层级结构。相比传统数据库&#xff…

教你使用服务器如何搭建数据库

数据库是存储和管理数据的核心组件&#xff0c;无论是网站、应用还是企业系统&#xff0c;都离不开数据库的支持。本文将以 莱卡云服务器 为例&#xff0c;教你如何快速搭建常用数据库服务。一、准备工作服务器环境推荐操作系统&#xff1a;Ubuntu 20.04 / Debian 11 / CentOS …