นี่เป็นเรื่องง่ายที่ฉันคิด แต่วิธีการไร้เดียงสาของฉันนำไปสู่ผลลัพธ์ที่มีเสียงดังมาก ฉันมีเวลาตัวอย่างและตำแหน่งในไฟล์ชื่อ 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
และต้องการประเมินความเร็วและความแม่นยำ ฉันรู้ว่า accelerstion คงที่ในกรณีนี้ประมาณ 55 องศา / วินาที ^ 2 จนกว่าความเร็วจะอยู่ที่ประมาณ 100 องศา / วินาทีจากนั้น ACC จะเป็นศูนย์และคงที่ความเร็ว ในตอนท้าย accelerstion คือ -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 ซึ่งให้ผลลัพธ์ที่มีประโยชน์
ยินดีต้อนรับคำแนะนำทั้งหมด!