一阶RC低通滤波器的数学模型及算法实现

article/2025/10/19 6:49:18

一阶RC低通滤波器的数学模型及算法实现

  • 1. 一阶RC低通滤波器的连续域数学模型
    • 1.1 数学模型的推导
    • 1.2 频率特性
    • 1.3 物理作用
  • 2. 一阶RC低通滤波器的算法推导
    • 2.1 离散化
    • 2.2 滤波系数
  • 3. 一阶RC低通滤波器的C语言实现
  • 4. 缺点及改善方法
    • 4.1 缺点
    • 4.2 改善方法——动态调整滤波系数
      • 4.2.1 实现功能
      • 4.2.2 调整前判断
      • 4.2.3 调整原则

1. 一阶RC低通滤波器的连续域数学模型

1.1 数学模型的推导

在这里插入图片描述

上图是RC低通滤波器的电路模型,根据基尔霍夫定律可知
在这里插入图片描述

即:
在这里插入图片描述

根据电容的特性可知:
在这里插入图片描述

零状态条件下的时域响应可表示为:
在这里插入图片描述

定义时间常数τ=RC,对上述微分方程进行拉氏变换,可得:
在这里插入图片描述

在这里插入图片描述

由此可得传递函数:
在这里插入图片描述

即频域数学模型为:
在这里插入图片描述

1.2 频率特性

相频特性:
在这里插入图片描述

幅频特性:
在这里插入图片描述

R=100Ω,C=100nF为例,该低通滤波器的频率特性如下:
在这里插入图片描述

1.3 物理作用

输入一个阶跃信号,经过时间τ之后,输出大约为阶跃量的63%,滞后作用。
在这里插入图片描述

2. 一阶RC低通滤波器的算法推导

2.1 离散化

采用一阶后向差分法将传递函数G(s)从S域转化到Z域,其中一阶后向差分中S域与Z域的变化关系是: s = 1 − z − 1 T s=\frac{1-z^{-1}}{T} s=T1z1其中T是采样周期,带入传递函数G(s)中得: G ( z ) = Y ( z ) X ( z ) = 1 R C 1 − z − 1 T + 1 = T R C ( 1 − z − 1 ) + T G(z)=\frac{Y(z)}{X(z)}=\frac{1}{RC\frac{1-z^{-1}}{T}+1}=\frac{T}{RC(1-z^{-1})+T} G(z)=X(z)Y(z)=RCT1z1+11=RC(1z1)+TT X ( z ) = Y ( z ) ⋅ R C ( 1 − z − 1 ) + T T X(z)=Y(z)\cdot \frac{RC(1-z^{-1})+T}{T} X(z)=Y(z)TRC(1z1)+T X ( z ) = R C T Y ( z ) − R C T Y ( z ) ⋅ z − 1 + Y ( z ) X(z)=\frac{RC}{T}Y(z)-\frac{RC}{T}Y(z)\cdot z^{-1}+Y(z) X(z)=TRCY(z)TRCY(z)z1+Y(z) X ( z ) = R C T Y ( z ) + Y ( z ) − R C T Y ( z ) ⋅ z − 1 X(z)=\frac{RC}{T}Y(z)+Y(z)-\frac{RC}{T}Y(z)\cdot z^{-1} X(z)=TRCY(z)+Y(z)TRCY(z)z1Z反变换求差分方程后可得: X ( n ) = ( 1 + R C T ) Y ( n ) − R C T Y ( n − 1 ) X(n)=(1+\frac{RC}{T})Y(n)-\frac{RC}{T}Y(n-1) X(n)=(1+TRC)Y(n)TRCY(n1) Y ( n ) = 1 1 + R C T X ( n ) + R C T 1 + R C T X ( n − 1 ) Y(n)=\frac{1}{1+\frac{RC}{T}}X(n)+\frac{\frac{RC}{T}}{1+\frac{RC}{T}}X(n-1) Y(n)=1+TRC1X(n)+1+TRCTRCX(n1) A = T R C + T A=\frac{T}{RC+T} A=RC+TT可得 Y ( n ) = A ⋅ X ( n ) + ( 1 − A ) Y ( n − 1 ) Y(n)=A\cdot X(n)+(1-A)Y(n-1) Y(n)=AX(n)+(1A)Y(n1)

2.2 滤波系数

关于滤波系数A,根据幅频特性 f = 1 2 π ⋅ R C f=\frac{1}{2\pi \cdot RC} f=2πRC1所以 R C = 1 2 π ⋅ f RC=\frac{1}{2\pi \cdot f} RC=2πf1代入 A = T R C + T A=\frac{T}{RC+T} A=RC+TT可以得到滤波系数A与截止频率f的关系: A = T 1 2 π ⋅ f + T = 1 1 + 1 2 π ⋅ T f A=\frac{T}{\frac{1}{2\pi \cdot f}+T}=\frac{1}{1+\frac{1}{2\pi \cdot Tf}} A=2πf1+TT=1+2πTf11

3. 一阶RC低通滤波器的C语言实现

#define a 0.01               // 滤波系数a(0-1) static float oldOutData = 0; //上一次滤波值char filter(void)
{nowData  = get_Data();  //本次滤波值nowOutData = a * nowData  + (1.0f - a) * oldOutData;oldOutData = nowOutData;return nowOutData;  
}

4. 缺点及改善方法

4.1 缺点

  • 仍然存在灵敏度与平稳度之间的矛盾;
  • 小数舍弃带来的误差(单片机很少采用浮点数,小数位要么舍弃,要么四舍五入)。

4.2 改善方法——动态调整滤波系数

4.2.1 实现功能

  • 当数据快速变化时,滤波结果能及时跟进,并且数据的变化越快,灵敏度应该越高(灵敏度优先原则);
  • 当数据趋于稳定,并在一个范围内振荡时,滤波结果能趋于平稳(平稳度优先原则);
  • 当数据稳定后,滤波结果能逼近并最终等于采样数据(消除因计算中小数带来的误差)。

4.2.2 调整前判断

  • 数据变化方向是否为同一个方向(如当连续两次的采样值都比其上次滤波结果大时,视为变化方向一致,否则视为不一致);
  • 数据变化是否较快(主要是判断采样值和上一次滤波结果之间的差值)。

4.2.3 调整原则

  • 当两次数据变化不一致时,说明有抖动,将滤波系数清零,忽略本次新采样值;
  • 当数据持续向一个方向变化时,逐渐提高滤波系数,提供本次采样值得权;
  • 当数据变化较快(差值>消抖计数加速反应阈值)时,要加速提高滤波系数。

http://chatgpt.dhexx.cn/article/pr6NDZxW.shtml

相关文章

数字 一阶低通滤波器 详细分析

事件的起因是下图1,朋友偶然说到一阶低通滤波器,借此来详细介绍一阶低通滤波器的原理,并附上matlab仿真程序代码。图1中的一阶低通数字滤波器的公式为Eq(1): y(n) q*x(n) (1-q)*y(n-1) Eq(1) 其中,y(n)表示当前…

【滤波器学习笔记】一阶RC低通滤波

一阶RC低通滤波 从模拟到数字 本文整理自网络、《匠人手记》等书籍文章 模拟电路低通滤波时域、频域软件低通滤波 典型电路 图1 典型RC电路 直流、交流、脉冲信号都可以用它 时域 电容电流: Icdqdtd(C∙Uo)dtCdUodt 基尔霍夫电压定律得: UiRCdUo…

一阶低通数字滤波

一阶低通滤波算法: 3、 一阶低通滤波优缺点 一阶低通滤波数学意义:一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。 优缺点:滤波系数越小,滤波结果越平稳…

MATLAB—FIR数字滤波器设计

目录: 1 FIR滤波器的原理2 FIR滤波器的特点2.1 相位特性2.1.1 偶对称2.1.2 奇对称 2.2 幅度特性 3 几种滤波器函数3.1 fir1()3.2 fir2()3.3 kaiserord()3.4 firpm() 4 仿真实例4.1 代码4.2 仿真分析 本文是基于MATLAB的数字滤波器设计,所有数据基于计算机…

窗函数法设计FIR中,如何选择窗函数和阶数N

在用窗函数法设计FIR滤波器时,给出了滤波器要求的具体指标,包括通带频率fp、阻带频率fs、通带波纹Rp和阻带衰减As等,有了这些指标后,是否什么窗函数都可以选择呢?答案是否定的。那么怎么选择窗函数呢?在本小…

一阶RC低通滤波器(二)

这篇文章补充下前面讲的一阶低通滤波器。在母线电压采样或是在电机的三相端电压采样时,往往是先分压,再经过RC低通滤波器。电路图如下: 1:先求输出和输入的关系(Uao/Ua) 从上式可以看出系统相当于一个典…

二阶有源滤波器设计

1引入 为什么要用有源二阶滤波器? (1)从有源来说 对于无源二阶低通滤波器: 其幅頻方程为: 我们从中可以看出其通带截止频率为 有其品质因子为0.372。 我们根据上图得到二阶无源低通滤波器的品质因子只有0.372,如果希望Q大于0.5…

滤波算法——均值滤波,中值滤波,一阶(αβ)滤波,卡尔曼滤波

滤波算法——均值滤波,中值滤波,一阶(αβ)滤波,卡尔曼滤波 因工作涉及到数据滤波(滤噪)处理,汇总了一些网上简单的滤波算法,方便日后查看。 滤波算法包括:均值滤波,中值滤波,一阶…

一阶滤波器

1. 一阶滤波算法的原理 一阶滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。 一阶低通滤波的算法公式为: Y(n)αX(n) (1-α)Y(n-1) 式中:α滤波系数;X(n)本次采样值&…

FIR数字滤波器设计

今天给大侠带来FIR数字滤波器设计,由于篇幅较长,分三篇。今天带来第三篇,FIR数字滤波器设计,包括窗函数法设计FIR滤波器、频率采样法设计FIR滤波器以及基于firls函数和remez函数的最优化方法设计FIR滤波器。话不多说,上…

一阶二阶数字滤波器笔记

数字滤波器 一阶数字滤波器时域分析频域分析数字化代码示例 二阶巴特沃斯低通滤波器S域和Z域的频率关系分析巴特沃斯滤波器举例说明代码示例 声明:感谢知乎大佬的文章,原文链接 数字滤波器实现方法是把滤波器所要完成的运算编成程序并让计算机执行,也就…

简单二阶滤波器截止频率的计算

最近刚好学习到这了,而我在网上查资料的时候却非常难找,不少资料讲解不够详细,所以经过我努力也为了为大家做点贡献的想法,以自己的见解写下这篇文章。废话不多说,先从一阶滤波器讲起。 一阶低通滤波器: …

如何确定插值滤波器的阶数

在信号处理中,滤波器的系数我们往往都是通过MATLAB来设计,只要我们知道滤波器的通带截止频率和阻带起始频率,就可以通过MATLAB中的fdatool(在MATLAB2020中使用filterDesigner)来设计滤波器了。 我们使用归一化的参数来…

标识符无效

表中存在该列,插入的时候却显示 标识符无效,使用dbsql插入报错,自己写入数据没有问题! 查资料发现可能和列的大小写有关。这里强调sql一定用全大写来写避免不必要的麻烦!但是我改过后发现并不是这个问题…… 问题已解…

ORA-00904 ID 标识符无效 解决方案

msg:"数据访问异常" dev:"ORA-00904:"ID":标识符无效 ORA:即 Oracle 报错。 标识符无效是因为:SQL语句中,列名(ID)不在表中。解决方案&#x…

PLSQL ORA-00904 标识符无效

问题在于“COMPONET_ID” 是字符串,无法识别,如果不是字符串,就可以识别

Oracle标识符无效

Oracle在创建表的时候提示“ORA-00904:标识符无效” 原因为最后一行列定义多了一个逗号,去掉即可。

【Oracle相关】坑!使用oracle时,发生标识符无效解决办法

–真是个大坑 使用oracle时,发生标识符无效解决办法 一般出现该错误的原因: 1、列名写错导致 2、使用了关键字作为了列名 但是这次遇到的情况有点奇葩 通过dblink直接查询该表,并没有报出问题,但在存储过程中通过dblink访问就一直报标识符…

ORA-00904 标识符无效 解决方案

ORA:即Oracle报错。 标识符无效:SQL语句中,这个字段名不在表中。 解决方案:修改SQL语句中对应的字段或者修改表里面对应的列名。 在这里我想说一下,因为我用的是hibernate内部封装好的save方法,咱也不能去改…

HQL 标识符无效

这是报错 因为刚学HIbernate,很多小问题其实挺折磨人的 这是代码(我根据网上搜索的答案还有自己的判断测试,感觉应该可能是字段没有" "的问题) Configuration configuration new Configuration().configure();Session…