/**/
/// <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;
}
/// 限副滤波
/// </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;
}