我有兩點。每個點有一個路線(度)和一個速度(米/秒)。計算角加速度c#
這些點來自GPS文件,並有成千上萬個。
我試圖消除文件中的故障,令人難以置信的不良數據。這樣做的一種方法是計算兩點之間的速度和航向變化的角加速度,如果它超過某種閾值,則可以將該點從該集中消除爲一個不良數據(尖峯)
當我的積分相距1秒時,這很好用,但現在我處理的積分間隔小於1秒(通常爲0.2秒),而更多有效數據被標記爲虛假。我想知道我是否做錯了什麼?
這裏是我使用的代碼:
double radCourse2 = p1.Course*Math.PI/180;
double radCourse1 = p2.Course*Math.PI/180;
double vel1X = Math.Abs(p1.Speed*Math.Cos(radCourse1));
double vel1Y = p1.Speed*Math.Sin(radCourse1);
double vel2X = Math.Abs(p2.Speed*Math.Cos(radCourse2));
double vel2Y = p2.Speed*Math.Sin(radCourse2);
// secs is normally -1, but now sometimes -.2
double secs = p1.CreationTime.Subtract(p2.CreationTime).TotalSeconds;
double accX = (vel2X - vel1X)/secs;
double accY = (vel2Y - vel1Y)/secs;
// If p2.Acceleration is above about 5.5, then it is too fast.
p2.Acceleration = Math.Sqrt(accX*accX + accY*accY);
// Adjusting for deceleration vs acceleration
if (p1.Speed > p2.Speed)
p2.Acceleration *= -1;
的樣本數據。根據上面的代碼,三條標記線目前出界。
Speed course
12.06999973 135.459997
12.27999973 138.9399969
12.63999972 141.7999968
12.53999972 142.9699968
12.50999972 146.1299967
12.79999971 149.9399966
12.91999971 154.9699965 <--
12.95999971 157.0699965
13.11999971 163.3799963 <--
13.2399997 167.6799963
13.13999971 172.3599961
13.14999971 178.019996 <--
13.3799997 181.6499959
13.2799997 183.9299959
12.51999972 188.0699958
12.42999972 191.0599957
11.95999973 196.1499956
11.71999974 200.5499955
11.16999975 204.7399954
10.74999976 210.3599953
10.19999977 215.2699952
您還可以嘗試使用'Math.Atan2'函數計算角度 – user287107
如果沒有看到您的課程/速度數據的典型繪圖,就不能給出任何有意義的建議。 –
「角速度和航向變化的角加速度」:下襬,你是什麼意思? –