1. 程式人生 > >一階濾波演算法公式推導

一階濾波演算法公式推導

文章的標題起的有點大了,其實也沒有太高深的理論,就是一些簡單的轉化。事情的起因是這樣的,一位同事在網上看到了程式匠人寫的一份關於一階濾波演算法的文章(文章連結:http://www.docin.com/p-745334438.html),對裡面的一個推導過程不太理解,我就一時熱心幫忙看了一下,順便把推導過程記錄在這裡,和大家分享一下,也許會有人需要吧。公式如下圖藍色字型。

在推導之前我們先做一些符號定義:

N-----> 新取樣值

O-----> 上次濾波結果

R-----> 本次濾波結果

A-----> (一級濾波係數÷256)

按照以上定義,公式原型為:R = N*A+O*(256-濾波係數)÷256

將上面的括號開啟: R = N*A+O*256÷256 -O* 濾波係數÷256

進一步化簡得到: R = N*A+O -O* A  

將上式提公因式:R =O +(N-O)*A

分類討論:

當N > O 時:R =O +(N-O)*A

當N < O 時:R =O-(O-N)*A

將討論結果中的符號替換成文字,就得到了圖片中化簡後的公式。

其實這一化簡過程並沒有什麼難度,但是經過化簡以後可以減輕CPU的計算負擔,尤其是對做嵌入式系統來說,就想程式匠人說的可大大提高效率。

其實我覺得作為程式開發者不單單要只盯著程式語言,還要掌握一些數學的方法,數學可以幫之我們提高邏輯思維用於解決問題的能力,尤其是當我們遇到較為複雜的邏輯時除了在紙上畫一畫流程圖縷清思路以外,也可是嘗試一下數學的方法,幫我們把問題簡化。