低通滤波器和高通滤波器的程序实现原理推导
生活随笔
收集整理的這篇文章主要介紹了
低通滤波器和高通滤波器的程序实现原理推导
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
傅立葉變換,拉普拉斯變換和Z變換
對于信號分析而言,傅立葉變換是必不可少的,我們都知道傅立葉變換是把系統從時域變換到頻域進行分析,那么拉普拉斯變換和Z變換是干什么的?簡單的來說,由于傅里葉變換的收斂有一個狄利克雷條件,要求信號絕對可積/絕對可和。對于那些不符合狄利克雷條件的信號該怎么辦呢,我們將頻域的概念擴展到復頻域.首先要說明的是傅立葉變換大致有兩種,連續時間的傅立葉變換(CTFT)和離散的傅立葉變換(DTFT).而對于CTFT而言,拉普拉斯變換就是將連續時間系統的傅立葉變換擴展了;而對于DTFT而言,Z變換就是將離散時間系統的傅立葉變換擴展了.知乎上有一個很好的對三種變換的解釋:傅立葉變換、拉普拉斯變換、Z變換的聯系
RC一階低通濾波器的算法推導
一階的RC電路如下:
這里直接給出其s域的傳遞函數:
對其進行z變換(一階后差分):
s=1?z?1T,T表示采樣周期s=1?z?1T,T表示采樣周期
則傳遞函數變為:
Y(z)X(z)=TRC(1?Z?1)+TY(z)X(z)=TRC(1?Z?1)+T
又因為 Y(z)=Y(n)z?n,且Y(n?1)Y(n)=z?1Y(z)=Y(n)z?n,且Y(n?1)Y(n)=z?1, X(z)=X(n)z?n,且X(n?1)X(n)=z?1X(z)=X(n)z?n,且X(n?1)X(n)=z?1,代入到上式的傳遞函數得:
Y(n)=TT+RCX(n)+RCT+RCY(n?1)Y(n)=TT+RCX(n)+RCT+RCY(n?1)
其中:
X(n):本次采樣值X(n):本次采樣值
Y(n?1):上次濾波值Y(n?1):上次濾波值
令 a=TT+RC≈TRC=ωT=2πfTa=TT+RC≈TRC=ωT=2πfT
則濾波公式為:
Y(n)=a?X(n)+(1?a)?Y(n?1)Y(n)=a?X(n)+(1?a)?Y(n?1)
這與px4代碼的lib庫中低通濾波是一樣的: float BlockLowPass::update(float input) {if (!PX4_ISFINITE(getState())) {setState(input);}float b = 2 * float(M_PI) * getFCut() * getDt();float a = b / (1 + b);setState(a * input + (1 - a)*getState());//input:本次采樣值 getState():上次濾波值return getState(); }
一階RC高通濾波器
RC高通濾波器原理圖如下,它和低通相反,電阻兩端的電壓作為輸出,則其s域的傳遞函數為:
zz變換(一階后向差分):
s=1?z?1Ts=1?z?1T
得到 zz域的傳遞函數為:
Y(z)X(z)=RC(1?z?1)RC(1?z?1)+TY(z)X(z)=RC(1?z?1)RC(1?z?1)+T
同樣的, Y(z)=Y(n)z?n,且Y(n?1)Y(n)=z?1Y(z)=Y(n)z?n,且Y(n?1)Y(n)=z?1, X(z)=X(n)z?n,且X(n?1)X(n)=z?1X(z)=X(n)z?n,且X(n?1)X(n)=z?1,則有:
Y(n)=RCRC+T(X(n)?X(n?1)+Y(n?1))Y(n)=RCRC+T(X(n)?X(n?1)+Y(n?1))
其中:
X(n):本次采樣值X(n):本次采樣值
X(n?1):上次采樣值X(n?1):上次采樣值
Y(n?1):上次濾波值Y(n?1):上次濾波值
我們令令 b=TT+RC≈TRC=ωT=2πfTb=TT+RC≈TRC=ωT=2πfT, a=11+ba=11+b
則高通濾波的算法公式為:
Y(n)=b?(X(n)?X(n?1)+Y(n?1))Y(n)=b?(X(n)?X(n?1)+Y(n?1))
這與px4中的高通濾波是一樣的: float BlockHighPass::update(float input) {float b = 2 * float(M_PI) * getFCut() * getDt();float a = 1 / (1 + b);setY(a * (getY() + input - getU()));//getY():上次濾波器輸出值;getU():上次濾波器輸入值setU(input);return getY(); }
總結
關于低通濾波和高通濾波,最關鍵的是學到了三類變換的關系以及離散化的方法,留下各位大佬的博客鏈接在此:
【濾波器學習筆記】一階RC低通濾波
傅立葉變換、拉普拉斯變換、Z變換的聯系
基礎電路—RC組成的低通、高通濾波器
雙線性變換
z變換
總結
以上是生活随笔為你收集整理的低通滤波器和高通滤波器的程序实现原理推导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 城市身份证代号
- 下一篇: 网络游戏运营的整体流程