Điều này đơn giản tôi nghĩ, nhưng cách tiếp cận ngây thơ của tôi đã dẫn đến một kết quả rất ồn ào. Tôi có thời gian và vị trí mẫu này trong một tệp có tên 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
và muốn ước tính vận tốc và gia tốc. Tôi biết rằng gia tốc là không đổi, trong trường hợp này khoảng 55 độ / giây ^ 2 cho đến khi vận tốc khoảng 100 độ / giây, thì acc là 0 và vận tốc không đổi. Ở cuối gia tốc là -55 độ / giây ^ 2. Dưới đây là mã scilab cung cấp các ước tính rất ồn ào và không sử dụng được, đặc biệt là khả năng tăng tốc.
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');
Tôi đã nghĩ đến việc sử dụng bộ lọc kalman thay vào đó, để có được ước tính tốt hơn. Ở đây có thích hợp không? Không biết cách xây dựng các phương trình filer, không có nhiều kinh nghiệm với các bộ lọc kalman. Tôi nghĩ rằng vectơ trạng thái là vận tốc và gia tốc và tín hiệu là vị trí. Hoặc có một phương pháp đơn giản hơn KF, cho kết quả hữu ích.
Chào mừng tất cả các đề xuất!