色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

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

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

1 、問題的提出

前面一篇我們討論了同時提高靈敏度和濾波效果的方法,在通常情況下,都能達到比較理想的效果。不過在有些情況下,我們的采集對象會是處于一定的區間內,并且干擾信號也主要存在于這一區間內。也就是說干擾信號的幅值并不是很大,但持續存在;而被測信號也基本處于一個穩定的被測區間內。在這種情況下,被測信號越是處于目標范圍內,干擾的影響越是不可忽略。在這一篇中我們就來設計一種濾波算法實現這樣的需求。

首先,我們來分析一下,干擾信號較小,但持續不斷對最終數據有較大影響。因為在有些應用中,當系統穩定時,采集的數據理論上來講是不應該出現很大波動的。基于這一點我們可以考慮對比本次采集與上次輸出之間的偏差值,如果偏差值大于一定的限值則我們認為是數據發生了較大變化,遠大于干擾造成的影響,干擾可以忽略,所以我們直接對數據進行更新。當數據偏差處于一定的變化范圍之內時,但系統并未處于穩定狀態,但干擾信號已經不能完全忽略了,我們可以進行部分濾波處理。當數據偏差小于一定的值之后,我們認為是處于穩定的范圍內,這時干擾造成的影響于數據的變化不能忽略,我們需要采用完全濾波。具體如圖所示:

上圖中SL1和SL2是我們要設定的階進處理區間限值。當數據偏差小于SL2時,干擾信號對最終數據的影響較大,我們需要進行完全濾波。當系統變化處于上圖中的SL1和SL2之間時,數據差異變較大,干擾信號相比于數據本身的變化較小,但不可忽略,我們可以進行不完全濾波來增加系統的靈敏度。當系統處于大于SL1的區間時,干擾信號對系統的影響很小,我們可以不做濾波處理。

2 、算法設計

前面描述了這種分段增加濾波作用的濾波器的特點,接下來我們來設計這種階進式濾波器的操作算法。

首先依然需要一個數據隊列,但在不同的情況下,對數據隊列的更新形式是不一樣的。在前后兩個數據的偏差小于SL2時,這個時候我們需要對這采集數據進行完全的濾波處理。這個時候我們只需要用最新的數據替換時間最久的老數據,然后取隊列的算術平均值就得到輸出數據。具體的隊列更新如下:

若是數據偏差處于SL1和SL2之間,這個時候干擾信號對采集值的影響變小但并未小到可以忽略,但數據的變化幅度已經很大,為了提高靈敏度,我們一次更新多個老數據以增加新數據的在輸出值的比重。具體的隊列更新如下:

若是數據偏差大于SL1時,數據的變化量已經遠超干擾的影響,我們可以忽略干擾信號,為了提高系統靈敏度,我們不需要在進行濾波處理。具體的隊列更新如下:

但是偏差落在大于SL1的范圍內時,并不預示著我們需要馬上更新數據隊列的全部數據,因為可能是偶然性的脈沖干擾,這時我們需要作消抖處理。我們判斷如果連續多少個的采集數據均落在相應的區間,我們就認為不是偶然的脈沖干擾。這是我們就更新隊列的全部數據。

3 、代碼實現

我們已經詳細描述了階進式平滑濾波器的操作算法,但具體如何實現呢?我們依然將濾波器當作一個對象,我們在此只考慮分成三段的階進式濾波算法,即不濾波,半濾波和全濾波。

我們先來分析一下,首先濾波器對象需要獲取當前采集到的數據值;同時我們為了實現對N個數據的遞推平均就需要有一個存儲這N個數的隊列;我們需要記錄最新的數據硬件存儲到哪個位置就需要一個位置指針;同時我們也需要知道N的大小,所以我們將它們都定義濾波器對象的屬性。平滑濾波的過程必須要計算算術平均值,而遞推算術平均則是在每次采集一個數據之時都計算平均值,可是如果N值較大時,就會存在大量的重復計算。我們考慮到上一次采樣的平均值已經得到,我們將其記錄下來的話就可以用最新采集的數據替換掉最老的數據,從而得到新的平均值,所以我們將上一時間的輸出值記錄下來作為對象的一個屬性。除此之外,我們還需要知道濾波器的限制區間,即HL和LL,所以我們將采集數據所對應的量程范圍、上限(HL)、下限(LL)比例均作為對象的屬性。同時為了實現消抖,我們需要記錄數據大幅變化的持續數及確認消抖的最大數值,這兩個也作為對象的屬性。根據以上分析我們可定義濾波器對象類型為:

1 /*定義平滑濾波對象類型*/
 2 typedef struct FilterObject{
 3   float newValue;       //最新測量值
 4   float lastValue;      //上一個輸出值
 5   float *buffer;        //數據緩存區
 6   int16_t position;    //寫操作位置指針
 7   uint16_t bufCount;    //濾波的數量
 8   uint16_t delayCount;  //延遲計數
 9   uint16_t delayLimit;  //延遲限值
10   float rangeLimit;     //量程范圍
11   float upperRario;     //比例下限
12   float lowerRatio;     //比例下限
13 }FilterObjectType;

我們已經獲得了濾波器對象,接下來將基于這一對象實現相應的濾波器功能。我們要對比當前的采集值與上一個輸出值的比較,根據它們的偏差絕對值來決定采取怎樣的處理方式。處理流程如下:

在偏差值小于SL2時,進行全濾波處理;在偏差值大于SL2而小于SL1時,進行半濾波處理;而在偏差值大于SL1時,不進行濾波處理。根據以上的分析及流程圖我們可以設計階進平滑濾波器的代碼為:

1 /* 階梯平滑濾波處理函數,返回濾波后的值*/
 2 float StepSmoothingFilter(FilterObjectType *filter)
 3 {
 4   float result=filter->lastValue;
 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   if(fabs(filter->newValue-filter->lastValue)>(filter->rangeLimit*filter->upperRario/100))
22   {
23     filter->delayCount+=1;
24     if(filter->delayCount>=filter->delayLimit)
25     {
26       for(int i=0;i<filter->bufCount;i++)
27       {
28         filter->buffer[i]=filter->newValue;
29       }
30       filter->position++;
31       result=filter->newValue;
32       filter->delayCount=0;
33     }
34   }
35   else if(fabs(filter->newValue-filter->lastValue)>=(filter->rangeLimit*filter->lowerRatio/100))
36   {
37     result=filter->lastValue-filter->buffer[filter->position]/filter->bufCount;
38    
39     result=result+filter->newValue/filter->bufCount;
40    
41     filter->buffer[filter->position++]=filter->newValue;
42     if(filter->position>=filter->bufCount)
43     {
44       filter->position=0;
45     }
46    
47     result=result-filter->buffer[filter->position]/filter->bufCount;
48     result=result+filter->newValue/filter->bufCount;
49     filter->buffer[filter->position++]=filter->newValue;
50    
51     filter->delayCount=0;
52   }
53   else
54   {
55     result=filter->lastValue-filter->buffer[filter->position]/filter->bufCount;
56    
57     result=result+filter->newValue/filter->bufCount;
58    
59     filter->buffer[filter->position++]=filter->newValue;
60    
61     filter->delayCount=0;
62   }
63  
64   filter->lastValue=result;
65   filter->newValue=0.0;
66   return result;
67 }

4 、應用總結

我們實現了基于算術平均的階進平滑濾波器。該濾波器對周期性干擾和小幅的噪聲干擾均有較好的效果。而且通過不同偏差值區間進行不同的濾波處理,在數據快速變化時,能很好的提高系統的靈敏度。對于系統處于平穩狀態時,也能收到很好的濾波效果。

這一濾波器有效的前提是基于干擾的幅度并不是很大而且系統的采集值基本能穩定在一定范圍內的前提而實現的。如果系統存在較大幅度的脈沖干擾,在這種脈沖干擾的出現頻率較低時,消抖操作能夠很好的去除這種偶然性干擾。但如果出現持續性的高頻大幅脈沖干擾,這一濾波器將變得無能為力。

對于限值區間SL1和SL2的取值一般只能根據采集系統的特點或者工程師的經驗來判斷,但并非是盲目的,因為很多情況下我們是能夠判斷出干擾信號的大致判斷范圍的。在這些系統中絕大部分的干擾變化會落在SL2的范圍內,其概率可能會超過60%,而落在SL1范圍內的概率可能會超過90%,所以選擇合適的SL1和SL2值會取得良好的濾波效果。

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

    關注

    161

    文章

    7795

    瀏覽量

    177996
  • 數字濾波器
    +關注

    關注

    4

    文章

    270

    瀏覽量

    47016
  • 算法設計
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8149
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

    通過AD采集數據時,我們總是希望采集到的數據是純凈而真實的,而實際上環境中存在太多的干擾信號,為了讓我們得到的數據盡可能地接近實際值,我們需要降低這些干擾信號的影響。所以軟件實現的數字濾波器應運而生,這一篇我們就來討論基于中值算術平均
    的頭像 發表于 12-13 17:47 ?1279次閱讀
    基于<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>詳細資料說明
    主站蜘蛛池模板: 人人啪日日观看在线| 四虎国产精品免费观看视频 | 老太婆性BBWBBW| 日本午夜精品理论片A级APP发布 | 伊人热人久久中文字幕| yw193龙物免费官网在线| 国产探花在线精品一区二区| 啦啦啦视频在线观看WWW| 涩涩伊人久久无码欧美| 中文字幕在线观看亚洲| 国产WW高清大片免费看| 美丽的姑娘BD在线观看| 同居了嫂子在线观看| 60老妇性xxxxhd| 国产在线精品一区二区网站免费| 男女全黄h全肉细节文| 亚洲国产cao| 朝鲜黄色录像| 久久丫线这里只精品| 午夜伦伦电影理论片大片| 99精品免费久久久久久久久蜜桃| 国产日韩高清一区二区三区| 欧美一级黄色影院| 一区二区三区福利视频| 国产国产人免费观看在线视频| 麻婆豆腐传媒视频免费| 亚洲黄色在线| 富婆大保健嗷嗷叫普通话对白| 菊地凛子av| 亚洲人美女肛交真人全程| 国产AV国产精品国产三级在线L| 蜜芽国产在线精品欧美| 亚洲精品中文字幕在线| 国产成人99久久亚洲综合精品 | 日韩人妻无码专区一本二本| 尤蜜网站在线进入免费| 国产情侣真实露脸在线| 色戒床震视频片段| brazzers巨臀系列| 久热人人综合人人九九精品视频| 亚洲国产欧美在线人成aaaa20|