【濾波器學習筆記】一階RC低通濾波
一階RC低通濾波
從模擬到數字
本文整理自網路、《匠人手記》等書籍文章
- 類比電路低通濾波時域、頻域
- 軟體低通濾波
典型電路
圖1 典型RC電路
直流、交流、脈衝訊號都可以用它
時域
電容電流:
基爾霍夫電壓定律得:
Ui的單位是伏特,RC的單位為秒,τ=RC;
解得:
假設電容初始電壓值為0
R=1000Ω
C=4.7uF
Ui=1V
t=0.0001~0.1s
τ=RC
Vc(τ)=0.632
圖2 一階RC系統的階躍響應曲線
頻域
u1=Ui;u2=Uo;
以電容電壓作為輸出,電路的網路函式為:
令ωc=
ωc即為截止頻率;
幅值和相角函式:
各變數取值:
R=1000Ω
C=4.7uF
|A(fc)|=0.707
θ(fc)=-45
f=0.001、1、…….100000
幅頻和相頻特性圖:
圖3
圖4
幅頻特性圖的對數表示:
圖5
-當ω<ωc時,幅值是平行於座標的直線,基本無衰減;
-當ω>>ωc時,是斜率與-20dB/十倍頻成比例的一條直線;
-當ω=ωc時,增益衰減至0.707,即-3dB,相位滯後45度,對應低通濾波器,該頻率通常被稱為截止頻率。
缺點:
採用這種模擬濾波器抑制低頻干擾時,要求濾波器有較大的時間常數和高精度的RC網路,增大時間常數要求增大R值,其漏電流也隨之增大,從而降低了濾波效果;
軟體上的一階低通濾波
優點:
-採用數字濾波演算法來實現動態的RC濾波,則能很好的克服模擬濾波器的缺點;
-在模擬常數要求較大的場合這種演算法顯得更為實用;
-其對於週期干擾有良好的抑制作用,
-比較節省RAM空間
缺點
-不足之處是帶來了相位滯後,導致靈敏度低;
-同時它不能濾除頻率高於取樣頻率的二分之一(稱為奈奎斯特頻率)的干擾(例如取樣頻率為100Hz,則它不能濾除50Hz以上的干擾訊號)對於高於奈奎斯特頻率的干擾訊號,應該採用模擬濾波器。
-對沒有乘、除法運算指令的微控制器來說,程式運算工作量較大
基本濾波演算法:
演算法由來:
頻率分析中一階RC低通濾波在S域的傳遞函式:
通過z變換(方法很多,如一階前向差分、雙線性變換等這裡用一階後向差分法)
帶入S域傳遞函式中:
推導轉化為差分方程後可得:
通過Z變換把S域的傳遞函式轉化成時域的差分方程,分析可得到
一階RC數字濾波的基本演算法
X為輸入,Y為濾波後得輸出值,則:
相關推薦
【濾波器學習筆記】一階RC低通濾波
一階RC低通濾波 從模擬到數字 本文整理自網路、《匠人手記》等書籍文章 類比電路低通濾波時域、頻域 軟體低通濾波 典型電路 圖1 典型RC電路 直流、交流、脈衝訊號都可以用它 時域 電容電流: Ic=dqdt=d(C∙Uo)dt
【OS學習筆記】一 處理器、記憶體和指令
我們已經知道,處理器是一臺電子計算機的核心,它會在振盪器脈衝的激勵下,從記憶體中獲取指令,併發起一系列由該指令所定義的操作。當這些操作結束之後,它接著再取下一條指令。通常情況下,這個過程是連續不斷、迴圈往復的。 1、暫存器和算數邏輯部件 電子計算機能能做很多事情。計算天氣預報,看
【C++學習筆記】一、如何使用Visual Studio2015進行C++專案建立
C++學習常用的編譯環境是Visual Studio系列和GCC系列,其中VS是Win下的編譯器,GCC有Win、Linux和UNIX版本,二者皆可以從網上下載到,GCC是最接近C++標準的,後續有嘗試的價值,作為初學者本文先從VS系列進行學習。 本文內容轉載自:https://www.cnbl
【opencv學習筆記】一. 網路攝像頭視訊儲存
目標:將網路攝像頭的視訊流儲存在電腦中 #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream>
【python學習筆記】25:scipy中值濾波
中值濾波技術能有效抑制噪聲,通過把數字影象中一點的值用該點周圍的各點值的中位數來代替,讓這些值接近,以消除原影象中的噪聲。 *模擬中值濾波 >>> import random >>> import numpy as np
一階RC低通濾波器雜記
本文轉自:阿呆遊樂園:http://www.eefocus.com/adaiplay/blog/ 關於一階濾波器的種種有很多資料可查,像截止頻率啊,相移啊什麼的,這些在這裡就不再重複了。本文主要闡述一下阿呆在學習過程中曾被困擾的地方,及本人的簡要分析。 本文從無源RC低通濾
【計算機網路學習筆記】一
第二章 應用層 目錄 第二章 應用層 2.1應用層協議原理 2.1.1 網路應用程式體系結構 2.1.2 程序通訊 2.1.3 可供應用程式使用的運輸服務 2.1.4&nbs
【web框架】【zheng學習筆記(一)】【本地環境搭建】
zheng專案是一個非常值得學習的web開發框架,在碼雲的web開發框架排名第一。特此記錄下學習過程。 zheng的簡介吧:https://gitee.com/shuzheng/zheng。 zheng是基於Spring+SpringMVC+Mybatis分散式敏捷開發系統架構,提供整套公共
【學習筆記】一:JavaScript簡介
1.JavaScript簡史 a.JavaScript最初的功能只是用來在客戶端做簡單的輸入驗證器,減少客戶端與伺服器端的資料互動(畢竟那個年代網速有限)。 b.JavaScript的飛速發展及Netscape和微軟的競爭,推動了ECMAScript標準的指定。 2.JavaScript實現 a.
【OS學習筆記】十三 保護模式一:全域性描述符表(GDT)
上一篇文章,我們大致領略了現代處理器的結構和特點。點解連結檢視上一篇文章:現代處理器的結構和特點 本篇文章開始,學習保護模式下的的各種機制。什麼是保護模式呢? 一般來說,作業系統負責整個計算機軟硬體的的管理,它做任何事情都是可以的。但是使用者程式就應當有所限制,使用者程式它只能訪
【OS學習筆記】十一 真實模式:中斷-軟中斷和硬中斷基本原理
上一篇文章我們模擬作業系統的載入器程式,使用匯編語言實現了一個程式載入器:點選連結檢視上一篇文章:程式載入器的實現原理 本篇文章,是真實模式學習的結尾。在經過了那麼多坎坷,終於學完了8086的真實模式!!!最重要的是本篇文章沒有彙編程式碼,只講原理~~ 今天的內容比較簡單,學習一下中
【機器學習筆記】:一文讓你徹底理解準確率,精準率,召回率,真正率,假正率,ROC/AUC
作者:xiaoyu 微信公眾號:Python資料科學 非經作者允許,禁止任何商業轉載。 ROC/AUC作為機器學習的評估指標非常重要,也是面試中經常出現的問題(80%都會問到)。其實,理解它並不是非常難,但是好多朋友都遇到了一個相同的問題,那就是:每次看書的時候
【TensorFlow學習筆記(一)】利用Anaconda安裝TensorFlow(windows系統)
1.安裝Anaconda Anaconda官網 由於檔案很大,所以下載速度會很慢,可以採用映象下載 下載完之後,如果你的電腦系統時win8+,一定要以管理員身份執行安裝包。 有一個地方需要注意下: 第一個勾是是否把Anaconda加入環境變數,這涉及到
【GANs學習筆記】(一)初步瞭解GANs
** 第一章 初步瞭解GANs ** ** 1. 生成模型與判別模型 ** 理解對抗網路,首先要了解生成模型和判別模型。判別模型比較好理解,就像分類一樣,有一個判別界限,通過這個判別界限去區分樣本。從概率角度分析就是獲得樣本x屬於類別y的概率,是一個條件概率P(
【GANs學習筆記】(十一)DCGAN、ImprovedDCGAN
在這一部分我們開始探討generator與discriminator內部網路的結構,之前我們一直在探討二者在外部的連線方式和如何使用divergence能讓結果更好,而涉及到generator與discriminator本身時一直粗略地描述成神經網路,但其實,
【PhotonEngine 學習筆記】(一)簡單使用
【PhotonEngine 學習筆記】(一)簡單使用 前言 PhotonEngine簡介 Photon SDKs SDK:SELF-HOSTED 下載安裝 伺服器端邏輯 建立自己的伺服器專案(類庫)
【C++學習筆記】模板(一)
模板的概念 模板是實現程式碼複用的一種手段,是C++重要的特徵之一此前在定義函式與類時,必須明確指明其中用到的變數的資料型別。如果需要對不同型別的資料進行相同的處理,就需要重新定義函式或者類。 我們知道函式是一種程式碼複用的方式,通過定義不同的函式實現不同的操作,但是函
【C++學習筆記】運算子過載(一)
在C++中我們定義了自己專屬的類,但是隨著類的增加,以及裡面成員複雜度的提高,以前我們常用的運算子就不能很好的處理新出現的資料型別了,這時,就有一個很“異想天開”的想法了——我們自己定義運算子! 運算子的過載 運算子過載是使同一個運算子作用於不同型別的資料時具有不同的行為。例如我們宣
【C++學習筆記】虛擬函式(一)
12.3 昨天居然斷更了,唉,寫部落格真是很需要毅力呀,更新上今天的學習筆記。 上次我們講到多型性的定義以及簡述了實現方式以及靜態編譯和動態編譯的概念。這次,我們來具體講一講虛擬函式。 什麼是虛擬函式 在某基類中宣告為 virtual 並在一個或多個派生類中被重新定義的成
【C++學習筆記】虛基類(一)
1.為什麼要引入虛基類? 在類的繼承中,如果我們遇到這種情況: “B和C同時繼承A,而B和C都被D繼承” 在此時,假如A中有一個函式fun()當然同時被B和C繼承,而D按理說繼承了B和C,同時也應該能呼叫fun()函式。這一呼叫就有問題了,到底是要呼叫B中的fun()函式還是呼叫C中的f