专栏中心

EEPW首页 > 专栏 > 10种滤波方法(很实用)

10种滤波方法(很实用)

发布人:0750long 时间:2009-07-08 来源:工程师 发布文章
10种滤波方法(很实用)

 

在日常的项目设计中,经常要用到一些算法程序,假设对AD的取样函数为get_ad( )

5种滤波方法(很实用)

1、限幅滤波

/*A值可以根据实际情况调整

#define  A   10   //设置两次采样的最大偏差值

char value;          //上次采样的有效数据变量

char fifter( )

{         

                     char  new_value  ;  //本次采样的值变量

                     new_value=get_ad( );           //读如本次采样数据

                    if((new_value-value)>A||(value-new_value)>A) //比较是否超出最大偏差

                           return value; //如果超出,返回上次的有效值做为本次的有效值

                   else

                  return    new_vlaue; //没有超出,返回本次采样值作为本次的有效值

}

2 中位值滤波方法

/* N值可以根据实际情况调整

#define    N    11  //设置连续采样的次数

char fifter( )

{

      char value_buf[N];   //连续采样N次值缓冲寄存器

      char  count i ,  j,  temp;          //i ,j是水泡下标量,count为采样数据读入的下标量

     for(count=0;count<N;count++)

            {

                      value_buf[count]=get_ad( );

delay();

for(j=0;j<N;j++)  //水泡排序

{

      for(i=0;i<N-j;i++)

                     {

                              if(value_buf[i]>value_buf[i+1])

                                   {

                                            temp="value"_buf[i];

                                           value_buf[i]=valu_buf[i+1];

                                          value_buf[i+1]=temp;

}

3  算术平均值方法

/*N (-----------)呵呵

#define  N    13

void   fifter( )

{

         int  sum="0";         //求和变量,用于采样的累加值

        char  count;

for(count=0;count<N;count++)

{

    sum+=get_ad( );

}

return(char)(sum/N);

}

4 消抖滤波方法

#define   N    13    //设置计数器益出值

char fifter( )

{

                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  new_value

}

5//限幅消抖滤波方法

/*A值可以根据实际情况调整,value为上次采样有效值,new_value为当前采样值

/*N  设置计算器益处值

char   value;   //有效值变亮

char fifter( )

{

             char   count="0";  //计数变量

             char new_value;   //本次采样值

             new_value=get_ad;           //导入本次采样值

             if((value-new_value)>N)||(new_value-value))

                        {

                                new_value=value;

while(value!=new_value)

{

           count++;  //

           if(count>=N)   return   new_value;

           delay( )

           return   value;

}

return   value;

}

//以上为经常用到的算法

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

生成式AI为制造业员工赋能

CC2530 片上系统视频

视频 2010-03-15

C64x+ 网络培训(五)

视频 2010-03-12

vxWorks开发环境构建步骤及开发资源 1.0

VxWorks设备驱动介绍

汽车微控制器技术为下一代车辆带来全新突破

MIT研发机器蜂 有望实现人工授粉

消费电子 2025-01-20

VxWorks实时内核开发环境

强化定位服务 提高距离测量精度 蓝牙6.0技术探勘

以无线物联网系统监测确保室内空气质量

模仿猫咪撒娇 新型机器人「磨蹭」助舒压

CC2520 社区视频

视频 2010-03-15

VxWorks设备驱动介绍(PDF)

以马达控制器ROS1驱动程序实现机器人操作系统

CC430 概述

视频 2010-03-15

利用CPU和SVE2加速视讯译码和图像处理

VxWorks实时内核开发环境(PDF)

UNO SPE扩充板,即插即用UNO R4实现超高数据传输、实时链接

大电流、高性能降压-升压稳压器

CC2431.CC2430及Zigbee应用的片上系统(SOC)解决方案

视频 2010-03-15
更多 培训课堂
更多 焦点
更多 视频

技术专区