Привет всем!
С самим фильтром разобрался, а вот модель не могу слепить... Есть 1-осевой акселерометр, надо получить скорость и дистанцию. Задача более теоретическая, чем практическая.
Отбросим все шумы.
Код
x[k] = F*x[k-1] + B*u[k]; - Модель реального состояния
z[k] = H*x[k]; - Модель измеренного состояния
Вктор состояния x=[real_acceleration; real_velocity; real_position];
Вектор воздействия по идее должен быть
u=[real_acceleration; 0; 0];, верно?
Тогда матрицы F, B, H по идее должны быть такими:
Код
F=[
0 0 0
Ts 1 0
0 Ts 1 ];
B=H=[
1 0 0
0 0 0
0 0 0 ];
Теперь вот в чем запутался - вкторы z и u, которые собственно подаем на фильтр калмана. в какой из них пихать данные с акселерометра? Ведь, если пихать в
u, а
z обнулить - не будет работать корректор. Если пихать в
z, а
u обнулить - не будет работать эстиматор? Или я чего-то не понял до конца?
Напрашивается только приведение матрицы F до такого вида, приняв, что ускорение не меняется:
Код
F=[
1 0 0
Ts 1 0
0 Ts 1 ];
Тогда обнулив
u, B и установив вектор
z=[measured_acc; 0; 0]; вроде все логично получается, если я все правильно понял...
пс. Имена переменных такие, как тут
http://en.wikipedia.org/wiki/Kalman_Filter#The_Kalman_filter