2013-02-07 70 views
2

這可能是一個非常簡單的問題,但是我在Matlab中插值的所有源都試圖關聯兩個值,我想從中受益的是如果我有8小時內收集的數據,但數據點之間的時間不同,我如何調整它以使時間段相等並且數據保持一致?插值函數

或者從我一直在嘗試的方法中更改:對於這些點,我有GPS lat,lon和Unix時間;我想要做的是在時間1和時間3取經緯度,對於不知道時間2的情況,只需填寫時間1的數據 - 是否有功能性的方法來做到這一點? (我知道像Python Pandas這樣的東西,你可以使用填充),但我不確定如何在Matlab中做到這一點。

回答

2

您可以查看MATLAB中的擬合方法。例如,您可以查看polyfitsplines。 讓我們來看看polyfit,使用它的方式是:

P = polyfit(X,Y,N); 

這裏X是你的時間數據,並在十GPS數據在時間價值計量Y是,n是多項式的階數。當計算P則可以使用polyval函數爲:

Y1 = polyval(P,X1); 

這裏X1是你的情況和Y1將在估計的數據例如X1 = [1 2 3 4 5 6 7 8]均勻時間樣本那些時候,P是你使用polyfit計算的。

2

你可以做的是使用interp1函數。這個功能將以不同的方式適合新的X系列。 例如,如果你有 X = [1 3 5 6 10 12] Y = [15 20 17 33 56 89]

這意味着如果要填寫爲X1 = [1 2 3 4 5 6 7 ... 12],您將鍵入 Y1 = interp1(X,Y,X 1)

1

我認爲你正在尋找一個 「零階保持」 插值又名 「近鄰」

爲什麼你不試試interp與方法'nearest'

2

你可以嘗試的東西沿着這行:

resampledTime = min(unixTime):resampleInterval:max(unixTime); 
resampledLat = interp1(time,lat,resampledTime); 
resampledLon = interp1(time,lon,resampledTime); 

默認情況下,這將返回一維線性插值。欲瞭解更多信息,請參閱help interp1

2

有一個稱爲interparc.m的MATLAB函數,這將有利於你。它通過點擬合一個三次樣條,並將結果線分成相等的弧長(取決於用戶輸入的點數)