1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > C 语言实现的滑动平均滤波算法 滑动平均滤波算法(递推平均滤波法)

C 语言实现的滑动平均滤波算法 滑动平均滤波算法(递推平均滤波法)

时间:2019-08-08 00:34:42

相关推荐

C 语言实现的滑动平均滤波算法 滑动平均滤波算法(递推平均滤波法)

///

///滑动平均滤波算法(递推平均滤波法)

///

///

/// GN为数组value_buf[]的元素个数,该函数主要被调用,利用参数的数组传值

///

private const int GN = 12;

private int filterPtr = 0;

private bool isFirstGF = true;

public float gSum = 0;

float[] gbuf = new float[GN];

public float GlideFilterAD(float ADNum)

{

if (isFirstGF)

{

isFirstGF = false;

for (int i = 0; i < GN; i++)

gbuf[i] = ADNum;

gSum = ADNum * GN;

return ADNum;

}

else

{

gSum += ADNum - gbuf[filterPtr] ;

gbuf[filterPtr++] = ADNum;

if (filterPtr == GN)

filterPtr = 0; //先进先出,再求平均值

return (gSum / GN);

}

}

///

/// 限幅防抖滤波法

///

///

/// RANG:幅度 LPNUM :测试计数

///

private const int RANGE = 100;

private const int LPNUM = 5;

private float currentValue = 0;

private int tmpCount = 0;

private bool isFirstLF = true;

public float LimitFilterAD(float ADNum)

{

if (isFirstLF)

{

isFirstLF = false;

currentValue = ADNum;

}

if (Math.Abs(ADNum - currentValue) > RANGE)

{

if(tmpCount++ >LPNUM)

{

isFirstLF = true; // 初始化滑动平均值

tmpCount =0;

currentValue = ADNum;

}

}

else

{

tmpCount =0;

}

return currentValue;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。