|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我购买的一个RTU里面有这个给客户二次开发的高斯函数,但是我是菜鸟不太明白怎么使用,请教大神给我指点,谢谢。
#if 1//(GAOSI_FILTER > 0)
/* 高斯滤波器 */
#define FILTER_MAXNUM 1000
uint16 filter_num;
uint8 filter_start = 0;
double filter_old;
double filter_buf[FILTER_MAXNUM];
/* 高斯滤波器,提供给客户二次开发 */
extern double gaosi_filter(double *pfb, uint32 num);
double filter_gaosi(double src)
{
if (filter_start == 0)
{
filter_start = 1;
filter_old = src;
filter_num = 0;
}
filter_num++;
if (filter_num < read_reg_n(40299) &&
filter_num < FILTER_MAXNUM)
{
filter_buf[filter_num] = src;
}
else
{
filter_num = 0;
filter_old = gaosi_filter(filter_buf, read_reg_n(40299));
}
return filter_old;
}
#endif
我在编写的C里面这样写的,但是不能用,请指教。
if (gen_zong==1)
{
liuliang22=filter_gaosi(liu_liang1);
she_ding22=gen_zongbi*(liuliang22/100.0 );
she_ding2= she_ding22;
}
这个liu_ling1运行之后有数据变化,但是经过函数之后的liulinag22一直为零,并且那个gen_zong已经设置为1了 |
|