在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于遞推算術平均算法的平滑濾波器設計

CHANBAEK ? 來源:木南創智 ? 作者:尹家軍 ? 2022-12-13 17:33 ? 次閱讀

信號采集是非常常見的需求,我們也總是希望采集到的數據是純凈而真實的,但這只是我們的希望。環境中存在太多的干擾信號,為了讓我們得到的數據盡可能地接近實際值,我們需要降低這些干擾信號的影響,于是就有了濾波器的用武之地。這里我們討論的主要是軟件實現的數字濾波器,這一篇我們就來討論基于遞推算術平均算法的平滑濾波器。

1 、問題的提出

在我們通過AD采集獲取數據時,不可避免會受到干擾信號的影響,而且很多時候我們希望盡可能的將這種影響減到最小。為實現這一目的,人們想了很多辦法,有硬件方面的,也有軟件方面的。在硬件難以改變或者軟件能夠達到相應效果時,我們一般采用軟件方法來實現,通常稱之為數字濾波。

實現數字濾波的算法有很多種,根據不同的應用需求我們可以選擇不同濾波算法來實現。對于一般的AD采集最常見的是周期性干擾和隨機性噪聲,對于此類干擾一般采用算術平均的方法就能得到比較理想的效果。其計算公式如下:

使用簡單的算術平均值算法雖然能夠實現濾波,但在一些情況下有一個問題可能會有影響,那就是當做算術平均的數量比較大時會出現曲線并不是十分平滑的情況。這很容易理解,因為一次采集n個數做算術平均得到一個結果,當n越大則間隔的時間就越長。為了解決這一問題我們并不是甲酸完后就將n個數同時丟棄,而是將最早的數丟棄并采用最新采集的數代替,這就是所謂的遞推算術平均算法。但其計算公式并沒有發生變化。

2 、算法設計

我們如何實現這種遞推方式的平滑濾波器呢?首先我們來看一看一般的算術平均算法是如何實現的。算術平均算法就是采集N個數然后對這N個數取平均值作為最終的結果。我們將這些數的序列記錄如下:

這N個數計算完畢后就會丟棄,然后再采集N個數。很顯然,如果N值較大,采集所耗費的時間跨度就會比較長,數據看起來可能就并不那么平滑,而且數據的輸出速率會慢很多,也不能展示數據的變化過程。而遞推平均算法則不存在這些問題。同樣是一個長度為N的數據隊列,但沒采樣一次數據,我們就用最新的數據替換掉最久的數據,并輸出算術平均值。我們將這些數的序列記錄如下:

這樣每采樣一個數據我們都會輸出一個濾波后的數據,而不是等待采集N個數據后才會輸出,這樣既可保證數據的連續性也可達到平滑濾波的效果。

3 、代碼實現

我們分析了平滑濾波器的實現算法,接下來我們來討論如何實現這一濾波器。首先我們將濾波器作為一個對象,我們實現的濾波器操作也將面向這一對象來實現。那么我們實現對濾波器對象的操作需要確定該對象的那些屬性呢?

作為濾波器肯定需要獲取當前采集到的數據值;同時我們為了實現對N個數據的遞推平均就需要有一個存儲這N個數的隊列;我們需要記錄最新的數據硬件存儲到哪個位置就需要一個位置指針;同時我們也需要知道N的大小,所以我們將它們都定義濾波器對象的屬性。平滑濾波的過程必須要計算算術平均值,而遞推算術平均則是在每次采集一個數據之時都計算平均值,可是如果N值較大時,就會存在大量的重復計算。我們考慮到上一次采樣的平均值已經得到,我們將其記錄下來的話就可以用最新采集的數據替換掉最老的數據,從而得到新的平均值,所以我們將上一時間的輸出值記錄下來作為對象的一個屬性。根據以上分析我們可定義濾波器對象類型為:

1 /*定義平滑濾波對象類型*/
2 typedef struct FilterObject{
3   float newValue;       //最新測量值
4   float lastValue;      //上一個輸出值
5   float *buffer;        //數據緩存區
6   int16_t position;    //寫操作位置指針
7   uint16_t bufCount;    //濾波的數量
8 }FilterObjectType;

我們獲得了濾波器對象,接下來我們基于該對象實現平滑濾波器。對于平滑濾波自然是要采取計算平均值的過程。但我們使用了循環隊列的操作方式,所以判斷新數據指針當前所處的位置。具體實現如下:

1 /*平滑濾波處理函數,返回濾波后的值 */
 2 float SmoothingFilter(FilterObjectType *filter)
 3 {
 4   float result=0.0;
 5  
 6   if(filter->position<0)
 7   {
 8     for(int i=0;i<filter->bufCount;i++)
 9     {
10       filter->buffer[i]=filter->newValue;
11     }
12     filter->position=0;
13     filter->lastValue=filter->newValue;
14   }
15  
16   if(filter->position>=filter->bufCount)
17   {
18     filter->position=0;
19   }
20  
21   result=filter->lastValue-filter->buffer[filter->position]/filter->bufCount;
22  
23   result=result+filter->newValue/filter->bufCount;
24  
25   filter->buffer[filter->position++]=filter->newValue;
26  
27   filter->lastValue=result;
28  
29   filter->newValue=0.0;
30   return result;
31 }

4 、應用總結

我們實現了基于算術平均的平滑濾波器,對于消除周期性干擾有良好的抑制作用,對于一般具有隨機干擾的信號也能進行濾波。對于數據平滑度較高有不錯的效果。

但是這種濾波方式有幾點是需要注意的。第一,它的靈敏度低。這很好理解,因為我們總是對N個數采取平均值算法,所以新數據對平均值的影響有限,數據變化不明顯,響應較慢,而且N越大越明顯。第二.對偶然出現的脈沖性干擾的抑制作用較差。第三,不易消除由于脈沖干擾所引起的采樣值偏差。所以這種濾波器并不適用于脈沖干擾比較嚴重的場合。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 濾波器
    +關注

    關注

    161

    文章

    7860

    瀏覽量

    178931
  • 數字濾波器
    +關注

    關注

    4

    文章

    270

    瀏覽量

    47095
  • 算法設計
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8192
收藏 人收藏

    評論

    相關推薦

    基于遞推算術平均算法的帶阻平滑濾波器設計

    濾波器的用武之地。這里我們討論的主要是軟件實現的數字濾波器,這一篇我們就來討論基于遞推算術平均算法的帶阻平滑
    的頭像 發表于 12-13 17:35 ?1147次閱讀
    基于<b class='flag-5'>遞推算術平均</b><b class='flag-5'>算法</b>的帶阻<b class='flag-5'>平滑</b><b class='flag-5'>濾波器</b>設計

    基于遞推算術平均算法的階進平滑濾波器設計

    濾波器的用武之地。這里我們討論的主要是軟件實現的數字濾波器,這一篇我們就來討論基于遞推算術平均算法的階進平滑
    的頭像 發表于 12-13 17:37 ?1211次閱讀
    基于<b class='flag-5'>遞推算術平均</b><b class='flag-5'>算法</b>的階進<b class='flag-5'>平滑</b><b class='flag-5'>濾波器</b>設計

    基于算術平均算法的中值數字濾波器設計

    在信號采集系統中,除了我們感興趣的數據外,難免會有一些來自于環境的干擾信號。但我們總希望我們得到的數據是純凈而真實的,為了達到這個目標,我們不得不想辦法去除這些干擾信號,于是濾波器就成為我們必不可少的幫手。這一篇我們就來討論如何通過軟件實現基于中值平均
    的頭像 發表于 12-13 17:41 ?1281次閱讀
    基于<b class='flag-5'>算術平均</b><b class='flag-5'>算法</b>的中值數字<b class='flag-5'>濾波器</b>設計

    基于算術平均算法的限幅濾波器設計

    通過AD采集數據時,我們總是希望采集到的數據是純凈而真實的,而實際上環境中存在太多的干擾信號,為了讓我們得到的數據盡可能地接近實際值,我們需要降低這些干擾信號的影響。所以軟件實現的數字濾波器應運而生,這一篇我們就來討論基于中值算術平均
    的頭像 發表于 12-13 17:47 ?1349次閱讀
    基于<b class='flag-5'>算術平均</b><b class='flag-5'>算法</b>的限幅<b class='flag-5'>濾波器</b>設計

    十大濾波算法程序大全

    1、限幅濾波法2、中位值濾波法3、算術平均濾波法4、遞推平均
    發表于 07-29 16:17

    史上最全濾波算法(Arduino編程)

    、算術平均濾波法4、遞推平均濾波法(又稱滑動平均濾波
    發表于 06-16 10:51

    轉:史上最全濾波算法(Arduino編程)

    算術平均濾波法4、遞推平均濾波法(又稱滑動平均濾波
    發表于 07-28 11:08

    十一種通用濾波算法(一)

    引起的波動干擾對溫度、液位的變化緩慢的被測參數有良好的濾波效果C、缺點:對流量、速度等快速變化的參數不宜3、算術平均濾波法A、方法:連續取N個采樣值進行算術平均運算N值較大時:信號
    發表于 09-12 23:10

    AD采集濾波算法

    的被測參數有良好的濾波效果 C、缺點:對流量、速度等快速變化的參數不宜3、算術平均濾波法 A、方法:連續取N個采樣值進行算術平均運算N值較大時:信號
    發表于 04-30 03:43

    算術平均濾波法的優缺點

    算術平均數能較好的過濾隨機干擾(使正負干擾的期望相互抵消)
    發表于 07-18 06:33

    分享幾種較簡單而常用的濾波算法

    法)**二、中位值濾波法****三、算術平均濾波法****四、遞推平均濾波法****五、中位值
    發表于 12-21 06:10

    加權遞推平均濾波法是什么

    加權遞推平均濾波法是對遞推平均濾波法的改進,即不同時刻的數據加以不同的權。通常是,越接近現時刻的
    發表于 01-11 07:01

    十一個經典的濾波算法的介紹和示例程序詳細資料免費下載

    本文檔的主要內容詳細介紹的是十一個經典的濾波算法的詳細資料免費下載主要內容包括了:1、限幅濾波法(又稱程序判斷濾波法)2、中位值濾波法3、
    發表于 11-06 19:35 ?20次下載
    十一個經典的<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>的介紹和示例程序詳細資料免費下載

    濾波算法有哪些十大濾波算法的資料介紹

    本文檔的主要內容詳細介紹的是十大濾波算法的資料介紹包括了:限幅濾波法(程序判斷濾波法),中位值濾波法,
    發表于 01-04 08:00 ?28次下載
    <b class='flag-5'>濾波</b><b class='flag-5'>算法</b>有哪些十大<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>的資料介紹

    單片機有哪些常用濾波算法詳細資料說明

    本文檔的主要內容詳細介紹的是單片機有哪些常用濾波算法詳細資料說明包括了:1、限幅濾波法,2、中位值濾波法,3、算術平均
    發表于 07-29 17:36 ?4次下載
    單片機有哪些常用<b class='flag-5'>濾波</b><b class='flag-5'>算法</b>詳細資料說明
    主站蜘蛛池模板: 欧美高清一级 | 一级骚片超级骚在线观看 | 免费看黄色网 | 国产婷婷一区二区三区 | 毛片黄 | 无毒不卡在线观看 | 夜夜骑首页| 日本亚洲卡一卡2卡二卡三卡四卡 | 国产三级在线观看播放 | 人人澡人人澡人人看青草 | 欧美特黄视频在线观看 | 色妞干网 | 久久亚洲国产欧洲精品一 | 天天插夜夜 | 三级网站在线播放 | 天天做天天看夜夜爽毛片 | 久久天天躁狠狠躁夜夜躁 | 丁香婷婷社区 | 欧美操操操操 | 午夜色视频 | 天天碰天天 | 绝色村妇的泛滥春情 | 日本三级最新中文字幕电影 | www.亚洲成人| 国产精品国产三级国快看 | 四虎a级欧美在线观看 | 91网站网站网站在线 | 亚洲三级视频在线观看 | 国产午夜a理论毛片在线影院 | 天堂中文在线免费观看 | 神马午夜嘿嘿 | 97一区二区三区 | 欧美18性欧美丶黑吊 | 日本一卡二卡3卡四卡网站精品 | 色偷偷资源网 | 九九九精品午夜在线观看 | www.啪啪.com | 中文字幕在线天堂 | 在线免费黄色 | 色网站免费 | 干成人|