求递推中值平均滤波代码

[复制链接]

4

主题

6

帖子

71

积分

一粒轻沙

Rank: 1

积分
71
楼主
查看: 2206回复: 2 发表于 2019-7-17 17:15:25   只看该作者
看了黄老师的视频,大家能不能分享一个递推中值平均滤波的代码,感谢感谢

0

主题

2

帖子

63

积分

一粒轻沙

Rank: 1

积分
63
沙发
发表于 2019-7-27 23:43:31   只看该作者
自己写吧

0

主题

1

帖子

57

积分

一粒轻沙

Rank: 1

积分
57
板凳
发表于 2019-8-5 20:12:46   只看该作者
(1)算术平均滤波程序,调用读取数据子函数get_ad()。
#define  N  12
#define  uchar  unsigned char
/********************************
函数名称: uchar filter()
功能 :算术平均滤波程序
入口参数:无
返回值 :sum/N
********************************/
uchar filter()
{
    int sum = 0;
    for (count=0; count<N; count++)
    {
        sum + = get ad ();
        delay ();        //调用延时子程序
    }
    return (char)(sum/N);
}
(2) 程序判断滤波程序,调用读取数据子程序get_ad()。
#define  A  10
char  value;
/********************************
函数名称: char filter ()
功能 :程序判断滤波程序
说明 :A值可根据实际情况调整,value为有效值,new_value为当前采样值,滤波程序返回有效的
实际值
入口参数:无
返回值 :value or new_value
********************************/
char filter ()
{
    char new_value;
    new_value = get_ad();
    if ((new_value - value > A ) || ( value - new_value > A )
    return( value);
    return (new_value);
}
(3) 滑动平均滤波法C语言程序, 调用读取数据子程序get_ad()。
#define  N  12
char  value_buf[N];
char  i=0;
/********************************
函数名称: char filter ()
功能 :滑动平均滤波法C语言程序
入口参数:无
返回值 :sum/N
********************************/
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);
}
(4)中值平均滤波法C语言程序,调用读取数据子函数get_ad()。
#define   N   12
/********************************
函数名称: char filter ()
功能 :中值平均滤波法C语言程序
入口参数:无
返回值 :sum/(N-2)
********************************/
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>value_buf[i+1] )
            {
                temp = value_buf;
                value_buf = value_buf[i+1];
                value_buf[i+1] = temp;
            }
        }
    }
    for(count=1;count<N-1;count++)
    sum += value[count];
    return (char)(sum/(N-2));
}
(5)中位值滤波法,N值可根据实际情况调整,排序采用冒泡法。
#define   N  11
/********************************
函数名称: char filter ()
功能 :中位值滤波法C语言程序
入口参数:无
返回值 :alue_buf((N-1)/2)
********************************/
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);
}


快速回复 返回顶部 返回列表