bnb62 (30.08.2018 11:51, просмотров: 675) ответил misyachniy на Пытаюсь спереть фильтр в программе на Cortex M3
Попробуй.
//Фильтр Калмана
float varTerm = 1.0e-5; // среднее отклонение (опр. excel)
float varProcess = 1.0e-8; // скорость реакции на изменение (подбирается вручную)
float Pc = 0.0;
float G = 0.0;
float P = 1.0;
float Xp = 0.0;
float Zp = 0.0;
float Xe = 0.0;
// Input1 = filter1(thermocouple1.readCelsius());
float filter_T(float val_1) { //
Pc = P + varProcess;
G = Pc/(Pc + varTerm); // kalman gain
P = (1-G)*Pc;
Xp = Xe;
Zp = Xp;
Xe = G*(val_1-Zp)+Xp; // фильтрованное значение
return(Xe);
}