/**/ /// <summary> /// 限副滤波 /// </summary> /// <param name="OldValue"></param> /// <param name="NewValue"></param> /// <param name="ThresholdValue"></param> /// <returns></returns> public float DoFilter( float OldValue, float NewValue, float ThresholdValue) ... { if ( ( NewValue - OldValue > ThresholdValue ) || ( OldValue - NewValue > ThresholdValue ) ) return OldValue; else return NewValue; } /**/ /// <summary> /// 中位值滤波法 /// </summary> /// <param name="Values"></param> /// <param name="Count"></param> /// <returns></returns> public float DoFilter( float [] Values, int Count) ... { for (int j=0;j<Count-1;j++) ...{ for (int i=0;i<Count-j;i++) ...{ if ( Values[i]>Values[i+1] ) ...{ float temp = Values[i]; Values[i] = Values[i+1]; Values[i+1] = temp; } } } return Values[(Count-1)/2]; } /**/ /// <summary> /// 中位值平均滤波法(又称防脉冲干扰平均滤波法) /// </summary> /// <param name="Values"></param> /// <param name="Count"></param> /// <returns></returns> public float DoFilter( float [] Values, int Count) ... { for (int j=0;j<Count-1;j++) ...{ for (int i=0;i<Count-j;i++) ...{ if ( Values[i]>Values[i+1] ) ...{ float temp = Values[i]; Values[i] = Values[i+1]; Values[i+1] = temp; } } } float sum=0; for(int i=1;i<Count-1;i++) sum += Values[i]; return sum/(Count-2); } /**/ /// <summary> /// 一阶滞后滤波法 为加快程序处理速度假定基数为100,ThresholdValue=0~100 /// </summary> /// <param name="OldValue"></param> /// <param name="NewValue"></param> /// <param name="ThresholdValue"></param> /// <returns></returns> public float DoFilter( float OldValue, float NewValue, float ThresholdValue) ... { return (100-ThresholdValue)*OldValue + ThresholdValue*NewValue; } /**/ /// <summary> /// 加权递推平均滤波法 coe数组为加权系数表,存在程序存储区。 /// </summary> /// <param name="Values"></param> /// <param name="Count"></param> /// <returns></returns> public float DoFilter( float [] Values, int Count) ... { float[] coe = ...{1,2,3,4,5,6,7,8,9,10,11,12}; float sum_coe = 1+2+3+4+5+6+7+8+9+10+11+12; float sum=0; for (int i=0;i<Count;i++) sum += Values[i]*coe[i]; return sum/sum_coe; }