이것은 내가 생각한 단순하지만 내 순진한 접근 방식은 시끄러운 결과를 가져 왔습니다. 이 샘플 시간과 위치는 t_angle.txt라는 파일에 있습니다.
0.768 -166.099892
0.837 -165.994148
0.898 -165.670052
0.958 -165.138245
1.025 -164.381218
1.084 -163.405838
1.144 -162.232704
1.213 -160.824051
1.268 -159.224854
1.337 -157.383270
1.398 -155.357666
1.458 -153.082809
1.524 -150.589943
1.584 -147.923012
1.644 -144.996872
1.713 -141.904221
1.768 -138.544807
1.837 -135.025749
1.896 -131.233063
1.957 -127.222366
2.024 -123.062325
2.084 -118.618355
2.144 -114.031906
2.212 -109.155006
2.271 -104.059753
2.332 -98.832321
2.399 -93.303795
2.459 -87.649956
2.520 -81.688499
2.588 -75.608597
2.643 -69.308281
2.706 -63.008308
2.774 -56.808586
2.833 -50.508270
2.894 -44.308548
2.962 -38.008575
3.021 -31.808510
3.082 -25.508537
3.151 -19.208565
3.210 -13.008499
3.269 -6.708527
3.337 -0.508461
3.397 5.791168
3.457 12.091141
3.525 18.291206
3.584 24.591179
3.645 30.791245
3.713 37.091217
3.768 43.291283
3.836 49.591255
3.896 55.891228
3.957 62.091293
4.026 68.391266
4.085 74.591331
4.146 80.891304
4.213 87.082100
4.268 92.961502
4.337 98.719368
4.397 104.172363
4.458 109.496956
4.518 114.523888
4.586 119.415550
4.647 124.088860
4.707 128.474464
4.775 132.714500
4.834 136.674385
4.894 140.481148
4.962 144.014626
5.017 147.388458
5.086 150.543938
5.146 153.436089
5.207 156.158638
5.276 158.624725
5.335 160.914001
5.394 162.984924
5.463 164.809685
5.519 166.447678
속도와 가속도를 추정하려고합니다. 속도가 약 100도 / 초가 될 때까지 가속이 일정하다는 것을 알고 있습니다. 마지막에 가속도는 -55도 / 초 ^ 2입니다. 다음은 특히 가속에 대한 잡음이 많고 사용할 수없는 추정치를 제공하는 실 라브 코드입니다.
clf()
clear
M=fscanfMat('t_angle.txt');
t=M(:,1);
len=length(t);
x=M(:,2);
dt=diff(t);
dx=diff(x);
v=dx./dt;
dv=diff(v);
a=dv./dt(1:len-2);
subplot(311), title("position"),
plot(t,x,'b');
subplot(312), title("velocity"),
plot(t(1:len-1),v,'g');
subplot(313), title("acceleration"),
plot(t(1:len-2),a,'r');
더 나은 추정치를 얻으려면 대신 칼만 필터를 사용하려고 생각했습니다. 여기가 적절합니까? 칼만 필터에 익숙하지 않은 파일러 방정식을 공식화하는 방법을 모릅니다. 상태 벡터는 속도와 가속도, 신호는 위치라고 생각합니다. 또는 유용한 결과를 제공하는 KF보다 간단한 방법이 있습니까?
모든 제안을 환영합니다!