一階RC濾波器的演算法實現(低通和高通)3102 - 程式人生

文章推薦指數: 80 %
投票人數:10人

本文的優勢是比較詳細,引數配置都有公式依據。

... @brief implement 1 order RC low pass filter * raw data filtered by a simple RC low pass ... 程式人生>>一階RC濾波器的演算法實現(低通和高通)3102 一階RC濾波器的演算法實現(低通和高通)3102 阿新••發佈:2018-12-02 目前,專案需要處理訊號。

目標訊號是特定頻率範圍內的訊號。

高頻視為干擾。

而一階RC濾波器容易實現。

但是網上資料往往沒有詳細的推導。

因此在這裡把筆記記下。

本文的優勢是比較詳細,引數配置都有公式依據。

目錄 1、一階RC低通濾波器的演算法實現 1.1演算法推導 1.2波特圖 1.3用C語言實現  2、一階RC高通濾波器的原理以及實現 2.1原理推導 2.2波特圖 2.3用C語言實現 3上機測試 1、一階RC低通濾波器的演算法實現 1.1演算法推導 一階RC濾波器的硬體電路如圖: 圖中輸入電壓是Vi,電阻R,電容C,輸出電壓為Vo。

假設電路的輸出阻抗很大(即不帶任何負載),輸入阻抗很小(理想情況)。

可以得到以下公式: 1.2波特圖 用Octave或者Matlab可以得到傳遞函式的波特圖: fcut=1000; RC=1/2/pi/fcut; %pkgloadcontrol%Octave用的讀取control包 y1=tf(1,[RC,1]) bode(y1) 以上波特圖可見,在截止頻率處(,代入f=1k,可得截至角頻率是6283rad/s),訊號會衰減到原來的0.707。

這電路對頻率大於截止頻率的高頻訊號,具有比較強的衰減作用,同時對該訊號有比較大的相位移動。

  1.3用C語言實現 C語言的實現1 /** *@briefimplement1orderRClowpassfilter *rawdatafilteredbyasimpleRClowpass[email protected]=5Hz *@paramVi : Vi(k) *@paramVi_p : Vi(k-1) *@paramVo : Vo(k) *@paramVo_p : Vo(k-1) *@noteThisexampleshowsasimplewaytoreportendofconversion *andgetconversionresult.Youcanaddyourownimplementation. *@retvalNone */ voidLowPassFilter_RC_1order(float*Vi,float*Vo,float*Vo_p,floatsampleFrq) { floatCutFrq,RC,Cof1,Cof2; //lowpassfilter@cutofffrequency=5Hz CutFrq=5; RC=(float)1.0/2.0/PI/CutFrq; Cof1=1/(1+RC*sampleFrq); Cof2=RC*sampleFrq/(1+RC*sampleFrq); *Vo=Cof1*(*Vi)+Cof2*(*Vo_p); //update *Vo_p=*Vo; } 呼叫例子: floatb_ADCLoad1Volt,b_ADCLoad1VoltFltr,b_ADCLoad1VoltFltrPrv; LowPassFilter_RC_1order(&b_ADCLoad1Volt,&b_ADCLoad1VoltFltr,&b_ADCLoad1VoltFltrPrv,1000.0); C語言實現2: //***********StructureDefinition********// typedefstruct{ floatVi; floatVo_prev; floatVo; floatFcutoff; floatFs; }LPF_1orderRC_F; //***********StructureInitFunction****// voidLPF_1orderRC_F_init(LPF_1orderRC_F*v) { v->Vi=0; v->Vo_prev=0; v->Vo=0; //lowpassfilter@cutofffrequency=5Hz v->Fcutoff=5; //execute1000everysecond v->Fs=1000; } //***********FunctionDefinition********// floatLPF_1orderRC_F_FUNC(LPF_1orderRC_F*v) { floatRC,Cof1,Cof2; RC=(float)1.0/2.0/PI/v->Fcutoff; Cof1=1/(1+RC*v->Fs); Cof2=RC*v->Fs/(1+RC*v->Fs); v->Vo=Cof1*v->Vi+Cof2*v->Vo_prev; v->Vo_prev=v->Vo; returnv->Vo; } LPF_1orderRC_Flpf_1orderrc_handle; 呼叫方式: ... intmain(void) { ... LPF_1orderRC_F_init(&lpf_1orderrc_handle);//初始化 while(1) { ... if(flag_1ms==1) { lpf_1orderrc_handle.Vi=ADCresult;//假設ADCresult是ADC取樣結果 LPF_1orderRC_F_FUNC(&lpf_1orderrc_handle);//usage FilteredResult=lpf_1orderrc_handle.Vo;//FilteredResult存放濾波結果 } } }   什麼是半透鏡 «上一篇 懲罰函式法(內點法、外點法)求解約束優化問題最優值matlab下一篇» 相關推薦 一階RC濾波器的演算法實現(低通和高通)3102 目前,專案需要處理訊號。

目標訊號是特定頻率範圍內的訊號。

高頻視為干擾。

而一階RC濾波器容易實現。

但是網上資料往往沒有詳細的推導。

因此在這裡把筆記記下。

... 相關濾波器演算法速度做到極致 相關濾波類方法從一開始能被我盯上,就是因為速度比較快,不管哪個CV演算法,速度都是重要的指標之一,tracking問題尤甚,工業應用永遠把速度排在效能之前,學術... 機器學習演算法原理與實踐(三)、卡爾曼濾波器演算法淺析及matlab實戰 卡爾曼濾波器是一種利用線性系統狀態方程,通... 垃圾收集器與記憶體分配策略——垃圾收集演算法與HotSpot虛擬機器演算法實現 垃圾收集演算法的具體實現涉及大量的程式細節,這裡只描述其演算法的基本思想和發展過程 一、常見的垃圾收集演算法對比如下 收集... 關於N的階乘(n!)的java演算法實現 很多公司面試都會有一個問題,就是求N階乘,主要是考查一些程式設計的基礎知識如迴圈、型別的最大長度、遞迴等。

例如最簡單的實... 決策樹分類器演算法實現 #-*-coding:cp936-*- #決策樹分類器 my_data=[['slashdot','USA','ye... Android計步器演算法實現(2) 前言 之前的那套演算法自己平時玩玩其實還是沒問題的,但是在大工程裡面運用遇到了一些不得不優化的問題: 定... 協同過濾Item-based演算法實現電影推薦系統 系統詳細設計 離線計算推薦電影模組 系統所用演算法:  本系統採用協同過濾(Collaborativ... 機器學習(三):感知器演算法實現鳶尾花分類專案實戰 上一章我們已經介紹了感知器演算法規則,並且用python語言實現了。

現在我們應用感知器學習規則進行鳶尾花分類實驗... AndrewNg機器學習筆記+Weka相關演算法實現(四)SVM和原始對偶問題 這篇部落格主要講解了Ng的課第六、七個視訊,涉及到的內容包括,函式間隔和幾何間隔、最優間隔分類器(Optim... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問 一階RC濾波器的演算法實現(低通和高通)3102 彙編-將輸入的十進位制數轉化為二進位制 UI++TextInputLayout+的簡單用法 如何在vue中使用觸控事件 軟閾值(Soft+Thresholding)函式解讀 巴斯卡三角形+C++版 HDU+6441+Find+Integer(數論) ldap增刪改查 Python(10)_組織列表(排序) lnmp環境搭建方案



請為這篇文章評分?