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)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)