http://kazus.ru/forums/showthread.php?p=1025804#

typedef struct
{
  float Result;                 //результирующее значение
  float Value;                  //исходное значение
  float Previous;               //результат вычисления в предыдущей интерации
  float K;                      //коэффициент стабилизации, по-умолчанию = 0.1
} KalmanFloatTypeDefStruct;

void KalmanFloatCalc (KalmanFloatTypeDefStruct * KalmanFloatStruct)
{
  KalmanFloatStruct->Result = KalmanFloatStruct->K * KalmanFloatStruct->Value;
  KalmanFloatStruct->Value = 1.0 - KalmanFloatStruct->K;
  KalmanFloatStruct->Previous *= KalmanFloatStruct->Value;
  KalmanFloatStruct->Result += KalmanFloatStruct->Previous;
  KalmanFloatStruct->Previous = KalmanFloatStruct->Result;
}

-=-=-=-=-
Взято отсюда:
http://avrproject.ru/publ/poleznaja_informacija/filtr_kalmana_bascom_avr/4-1-0-164
