<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    10種簡單的數字濾波算法(C語言源程序)

    發布時間:2011-4-25 18:24    發布者:1770309616
    關鍵詞: C語言源程序 , 數字濾波算法
    假定從8位AD中讀取數據(如果是更高位的AD可定義數據類型為int),子程序為get_ad();  
    1、限副濾波
    /*  A值可根據實際情況調整
        value為有效值,new_value為當前采樣值   
        濾波程序返回有效的實際值  */
    #define A 10
    假定從8位AD中讀取數據(如果是更高位的AD可定義數據類型為int),子程序為get_ad();  
    1、限副濾波
    /*  A值可根據實際情況調整
        value為有效值,new_value為當前采樣值   
        濾波程序返回有效的實際值  */
    #define A 10
    char value;
    char filter()
    {
       char  new_value;
       new_value = get_ad();
       if ( ( new_value - value > A ) || ( value - new_value > A )
          return value;
       return new_value;
    }
    2、中位值濾波法
    /*  N值可根據實際情況調整
        排序采用冒泡法*/
    #define N  11
    char filter()
    {
       char value_buf[N];
       char count,i,j,temp;
       for ( count=0;count    {
          value_buf[count] = get_ad();
          delay();
       }
       for (j=0;j    {
          for (i=0;i       {
             if ( value_buf[i]>value_buf[i+1] )
             {
                temp = value_buf[i];
                value_buf[i] = value_buf[i+1];  
                 value_buf[i+1] = temp;
             }
          }
       }
       return value_buf[(N-1)/2];
    }      
    3、算術平均濾波法
    /*
    */
    #define N 12
    char filter()
    {
       int  sum = 0;
       for ( count=0;count    {
          sum + = get_ad();
          delay();
       }
       return (char)(sum/N);
    }
    4、遞推平均濾波法(又稱滑動平均濾波法)
    /*
    */
    #define N 12  
    char value_buf[N];
    char i=0;
    char filter()
    {
       char count;
       int  sum=0;
       value_buf[i++] = get_ad();
       if ( i == N )   i = 0;
       for ( count=0;count       sum = value_buf[count];
       return (char)(sum/N);
    }
    5、中位值平均濾波法(又稱防脈沖干擾平均濾波法)
    /*
    */
    #define N 12
    char filter()
    {
       char count,i,j;
       char value_buf[N];
       int  sum=0;
       for  (count=0;count    {
          value_buf[count] = get_ad();
          delay();
       }
       for (j=0;j    {
          for (i=0;i       {
             if ( value_buf[i]>value_buf[i+1] )
             {
                temp = value_buf[i];
                value_buf[i] = value_buf[i+1];  
                 value_buf[i+1] = temp;
             }
          }
       }
       for(count=1;count       sum += value[count];
       return (char)(sum/(N-2));
    }
    6、限幅平均濾波法
    /*
    */   
    略 參考子程序1、3
    7、一階滯后濾波法
    /* 為加快程序處理速度假定基數為100,a=0~100 */
    #define a 50
    char value;
    char filter()
    {
       char  new_value;
       new_value = get_ad();
       return (100-a)*value + a*new_value;  
    }
    8、加權遞推平均濾波法
    /* coe數組為加權系數表,存在程序存儲區。*/
    #define N 12
    char code coe[N] = {1,2,3,4,5,6,7,8,9,10,11,12};
    char code sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12;
    char filter()
    {
       char count;
       char value_buf[N];
       int  sum=0;
       for (count=0,count    {
          value_buf[count] = get_ad();
          delay();
       }
       for (count=0,count       sum += value_buf[count]*coe[count];
       return (char)(sum/sum_coe);
    }
    9、消抖濾波法
    #define N 12
    char filter()
    {
       char count=0;
       char new_value;
       new_value = get_ad();
       while (value !=new_value);
       {
          count++;
          if (count>=N)   return new_value;
           delay();
          new_value = get_ad();
       }
       return value;     
    }
    10、限幅消抖濾波法
    /*
    */
    略 參考子程序1、9
    本文地址:http://www.portaltwn.com/thread-63489-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    daicy1018 發表于 2011-4-26 08:10:15
    eastljd 發表于 2011-5-3 09:12:34
    hszx 發表于 2011-5-3 09:33:26
    nwnu_137 發表于 2011-5-3 22:38:18
    xiexie
    7631001 發表于 2014-8-3 08:21:34
    好東東!
    liumingqin 發表于 2015-4-17 15:08:44
    不錯,學習一下
    liumingqin 發表于 2015-4-17 15:18:08
    頂,很好很強大
    jkm99 發表于 2015-4-5 00:10:50
    受用了,用上了
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區
    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷