这是pic单片机加权平均值滤波 这几个数是怎么运算的 我想知道运算步骤和结果

这是pic单片机加权平均值滤波 这几个数是怎么运算的 我想知道运算步骤和结果,第1张

看主程序:

void main(void)

{

while(1)

{

temp=filter() //加权平均值滤波

printf("%d\n",temp)

TX_temp() //未知,可能是串口发送

}

}

主要是这部分

char filter()

{

char i

char value_buf[N]

int sum=0

for(i=0i<Ni++)//这个for循环把table中的值赋给value_buf数组

{

value_buf[i]=table[i] //其实就是 value_buf[4]={10,20,30,65}

delay(500) /不知为何要加延时,本人感觉/毫无意义浪费cpu

}

for(i=0i<Ni++)//关键部分 sum=10*1+20*2+30*3+40*4

sum+=value_buf[i]*mul[i]

return (char)(sum/sum_mul) //返回(10*1+20*2+30*3+40*4)/sum_mul,整数部分

}

这部分代码没什么用,就做了一个简单的运算,加权平均值滤波算法如下:

/*

*输入 参数:1.需处理数组首地址

*2.权数组首地址(暂且用power_buf,英文不行)

*3.数组长度

*/

int filter(char *dat_buf_p,char *power_buf_p,char buf_num)

{

intsum=0

intsum_mul=0

for(char i=0 i<buf_num i++)

{

sum+=(*dat_buf_p)*(*power_buf_p) //数组*权值

sum_mul+=*power_buf_p //生成权值和

dat_buf_p++ //数组指针加一,指向数组中下一个数

power_buf_p++ //权数组指针加一,指向权数组中下一个权

}

return(int)(sum/ sum_mul)

}

你试试这个函数,有问题跟我说。

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<Ncount++)

{

value_buf[count]

=

get_ad()

delay()

}

for

(count=0,count<Ncount++)

sum

+=

value_buf[count]*coe[count]

return

(char)(sum/sum_coe)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8089644.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存