2012-07-16 69 views
2

我需要一個相當於MATLAB的函數的python。我試圖使這個MATLAB example在Python中工作,但我不能。MATLAB中的interp2函數

import numpy as np 

from scipy.interpolate import interp2d 
from scipy.interpolate import RectBivariateSpline 

service = np.array(range(10, 31, 10)) 
years = np.array(range(1950, 1991, 10)) 

wage = np.array([[150.6970,199.5920,187.6250], 
    [179.3230, 195.0720, 250.2870], 
    [203.2120, 179.0920, 322.7670], 
    [226.5050, 153.7060, 426.7300], 
    [249.6330, 120.2810, 598.2430]]) 

ip = RectBivariateSpline(years, service, wage) 

print(ip(15, 1975)) 

但我得到這個錯誤(RectBivariateSpline),我解決不了:

Traceback (most recent call last): 
    File "/Users/andrea/Documents/workspace/PythonProjects/pyArmBot/src/foo.py", line 15, in <module> 
    ip = RectBivariateSpline(years, service, wage) 
    File "/Library/Python/2.7/site-packages/scipy-0.10.1-py2.7-macosx-10.7-intel.egg/scipy/interpolate/fitpack2.py", line 728, in __init__ 
    kx,ky,s) 

回答

1

我相信你需要被調用ip通過使用以下行,而不是返回一個值,你打印線。

print(ip.ev(15, 1975))

更新:

很容易的調整。並盯着我的臉。您可以設置KX和KY的價值,這是度二元樣條See documentation here

的總之,只要調整線路爲:

ip = RectBivariateSpline(years, service, wage, kx=2, ky=2)

你不需要,如果調整KX你不想。我懷疑它會改變插值很多,如果你離開kx爲3.

+0

號。在RectBivariateSpline出現的錯誤。 – blueSurfer 2012-07-16 12:37:27

+0

好的,我現在看到,我已經將我的代碼插入python了。如果在下一次拋出錯誤時包含整個回溯,那將會更好。我會再一次在這裏再次發現一隻g g。 – 2012-07-16 12:50:40

+0

哎呀,你是對的。我編輯它。 – blueSurfer 2012-07-16 12:57:15

0

blueSurfer,我想你已經設置你的插值的方式,正確的結果將通過ip(1975, 15)而不是相反。

0

我遇到了同樣的問題,並發現scipy.ndimage.map_coordinatesVq = interp2(V,Xq,Yq)一樣。請閱讀這些命令的文檔以找出適合您的案例的解決方案。

嘗試此Matlab的Vq = interp2(V,Xq,Yq)

Vq = scipy.ndimage.map_coordinates(V, [Xq.ravel(), Yq.ravel()], order=3, mode='nearest').reshape(V.shape) 
+0

左右歡迎來到Stack Overflow!請刪除鏈接並改進您的答案,以包含該鏈接中包含的信息,即使這是您自己的答案之一。請在鏈接的答案中這樣做。 – 2017-05-08 14:52:00

+0

嗨安託萬謝謝你的提醒!請嘗試此解決方案,我希望它可以幫助您解決問題! – 2017-05-18 07:42:02