2013-01-01 37 views
1

我有以點(x,Y,Z)爲特徵的2d網格的數據。 X和Y值表示每個點的位置,Z是每個點的「高度」或「強度」。我的問題是我沿着X軸的數據座標是非常接近的(〜1000點),而我的Y座標是分散的(〜50點)。這意味着,當繪製在散點圖上時,我基本上具有在相鄰線之間具有等量空白空間的數據行。Python - 數據行之間的插值

我的數據是如何在散點圖上間隔例:

ooooooooooooooooooooooooooooooo 


ooooooooooooooooooooooooooooooo 


ooooooooooooooooooooooooooooooo 

我想插這些點來得到一個連續的表面。我希望能夠評估這個表面上任何位置的「高度」。我已經嘗試了每種scipy插值方法,並且不清楚最「智能」方法是什麼。我應該插入每個垂直數據片,然後將它們拼接在一起?

我希望表面儘可能光滑,但需要保持形狀的方法。我不希望任何插值曲面超出我的輸入數據。

任何幫助你可以提供將是非常有益的。

編輯:

當我想到這個問題多,似乎內插垂直切片,然後將它們訂在一起,是行不通的。這會導致垂直切片上的值只受該切片影響,這不會導致表面不準確嗎?

+0

'overshoot'是什麼意思? –

+0

你有沒有把這個整理出來? – tacaswell

回答

0

如果你正在尋找表面,我的假設是你可以通過使用垂直切片,然後繪製填充的數據。

3

我推薦這個tutorial。它的膽量是(從鏈接取消):

>>> grid_x, grid_y = np.mgrid[0:1:100j, 0:1:200j] 
>>> from scipy.interpolate import griddata 
>>> grid_z0 = griddata(points, values, (grid_x, grid_y), method='nearest') 
>>> grid_z1 = griddata(points, values, (grid_x, grid_y), method='linear') 
>>> grid_z2 = griddata(points, values, (grid_x, grid_y), method='cubic') 

這將讓你三個不同級別的數據(doc)的插值。

+0

感謝您的鏈接。這實際上是我正在實施的許多方法之一。由於超過輸入數據,Cubic不在問題範圍內。線性插值似乎不太適合,但它是一種選擇。 – user1764386

+0

您是否還看過該頁面的樣條曲線?我發現1D樣條曲線對噪音數據非常有效。你能否平滑你的數據(這將有助於數據的二階導數波動引起的過度拍攝)。 – tacaswell