0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

10种软件滤波方法的示例程序详细资料说明

Wildesbeast 来源:福星电子网 作者:福星电子网 2021-04-05 17:02 次阅读

假定从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《N;count++)

{

value_buf[count] = get_ad();

delay();

}

for (j=0;j《N-1;j++)

{

for (i=0;i《N-j;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《N;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《N,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《N;count++)

{

value_buf[count] = get_ad();

delay();

}

for (j=0;j《N-1;j++)

{

for (i=0;i《N-j;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《N-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《N;count++)

{

value_buf[count] = get_ad();

delay();

}

for (count=0,count《N;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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 滤波器
    +关注

    关注

    160

    文章

    7712

    浏览量

    177529
  • AD
    AD
    +关注

    关注

    27

    文章

    868

    浏览量

    150114
  • 程序
    +关注

    关注

    116

    文章

    3767

    浏览量

    80788
收藏 人收藏

    评论

    相关推荐

    10软件滤波方法示例程序

    软件滤波算法 适用于各类测量的滤波 算法 介绍详细 有列程
    发表于 03-21 17:02 6次下载

    10AD采样的软件滤波方法例程

    10AD采样的软件滤波方法例程
    发表于 02-15 22:34 23次下载

    10软件滤波方法

    10 软件滤波方法示例程序
    发表于 02-28 16:54 14次下载

    SIM868_STM32示例程序详细资料合集免费下载手册免费下载

    本文档的主要内容详细介绍的是SIM868_STM32示例程序详细资料合集免费下载手册免费下载。
    发表于 08-21 08:00 228次下载
    SIM868_STM32<b class='flag-5'>示例程序</b>的<b class='flag-5'>详细资料</b>合集免费下载手册免费下载

    EDA教程之VHDL数据IF语句使用示例详细资料说明

    本文档的主要内容详细介绍的是EDA教程之VHDL数据IF语句使用示例详细资料说明
    发表于 10-17 08:00 0次下载
    EDA教程之VHDL数据IF语句使用<b class='flag-5'>示例</b>的<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    使用单片机实现串口超声波的示例程序详细资料免费下载

    本文档的主要内容详细介绍的是使用单片机实现串口超声波的示例程序详细资料免费下载。
    发表于 10-18 11:06 6次下载
    使用单片机实现串口超声波的<b class='flag-5'>示例程序</b><b class='flag-5'>详细资料</b>免费下载

    十一个经典的滤波算法的介绍和示例程序详细资料免费下载

    本文档的主要内容详细介绍的是十一个经典的滤波算法的详细资料免费下载主要内容包括了:1、限幅滤波法(又称程序判断
    发表于 11-06 19:35 20次下载
    十一个经典的<b class='flag-5'>滤波</b>算法的介绍和<b class='flag-5'>示例程序</b><b class='flag-5'>详细资料</b>免费下载

    LCD1602显示例程详细资料免费下载

    本文档的主要内容详细介绍的是 LCD1602显示例程程序详细资料免费下载。
    发表于 03-06 08:00 5次下载
    LCD1602显<b class='flag-5'>示例程</b>的<b class='flag-5'>详细资料</b>免费下载

    MDK基本软件的调试方法详细资料说明

    本文档的主要内容详细介绍的是MDK基本软件的调试方法详细资料说明
    发表于 05-09 17:15 0次下载
    MDK基本<b class='flag-5'>软件</b>的调试<b class='flag-5'>方法</b><b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    软件进行滤波方法示例程序免费下载

    本文档的主要内容详细介绍的是软件进行滤波方法示例C应用程序免费下载。
    发表于 11-04 08:00 3次下载
    <b class='flag-5'>软件</b>进行<b class='flag-5'>滤波</b><b class='flag-5'>方法</b>的<b class='flag-5'>示例程序</b>免费下载

    使用MATLAB设计实现图像频域滤波系统的详细资料说明

    本文档的主要内容详细介绍的是使用MATLAB设计实现图像频域滤波系统的详细资料说明
    发表于 01-10 08:00 2次下载
    使用MATLAB设计实现图像频域<b class='flag-5'>滤波</b>系统的<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    单相整流滤波电路的详细资料说明

    本文档的主要内容详细介绍的是单相整流滤波电路的详细资料说明包括了:1.单相整流电路,2 滤波电路
    发表于 05-20 08:00 81次下载
    单相整流<b class='flag-5'>滤波</b>电路的<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    LabVIEW的程序实例详细资料说明

    本文档的主要内容详细介绍的是LabVIEW的程序实例详细资料说明
    发表于 02-05 14:05 142次下载
    LabVIEW的<b class='flag-5'>程序</b>实例<b class='flag-5'>详细资料</b><b class='flag-5'>说明</b>

    Arduino的实验例程之点阵实验的详细资料说明

    本文档的主要内容详细介绍的是Arduino的实验例程之点阵实验的详细资料说明
    发表于 02-25 16:36 14次下载

    电子罗盘磁场传感器模块资料(含产品说明书、示例程序

    电子罗盘磁场传感器模块资料(含产品说明书、示例程序
    发表于 01-19 09:41 17次下载