簡體   English   中英

2D插值導致OverflowError:太多數據點無法插值

[英]2D interpolation results in OverflowError: Too many data points to interpolate

我正在將在球坐標網格上采樣的信號映射到圓柱坐標網格。 顯然兩者都不是統一的網格。 兩個網格的大小均為256 X 864(行X col)。

所以我嘗試了這樣的事情:

f = interp2d(x, y, z, kind='cubic')
zz= f(xx, yy)

這里,

x, y = meshgrid(spherical_x, spherical_y)
xx, yy = meshgrid(cylindrical_x, cylindrical_y)

其中spherical_x, spherical_y, cylindrical_x, and cylindrical_y y在1D方向上均不一致。

當我運行interp2D時,出現一條錯誤消息,內容為:

  File "C:\Users\MyComputer\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\interpolate\_fitpack_impl.py", line 48, in _intc_overflow
    raise OverflowError(msg)

OverflowError: Too many data points to interpolate

因此,我想知道如何使用Python / NumPy / SciPy進行這種非格式2D插值嗎? 我知道有一個rectbivariatespline ,但看來您的原始數據必須在統一的網格上。 謝謝。

您正在錯誤地調用使用interp2d創建的對象。 它的調用方法具有參數

x:一維數組,要在其上進行插值的網格的x坐標。
y:一維數組,要在其上插值的網格的y坐標。

因此,您應該傳遞一維數組,例如cylindrical_x, cylindrical_y _x cylindrical_x, cylindrical_y _y cylindrical_x, cylindrical_y而不是根據它們創建的meshgrid。

即使在創建時,interp2d也不需要meshgrid:請參閱說明文件中示例,示例對x和y使用一維數組。

有一個rectbivariatespline,但是看來您的原始數據必須在統一的網格上。

它必須在網格上,而不是統一的網格上。 例如,具有x坐標1、3、10和y坐標-3、2的6個點有資格作為網格。 網格是可以由單獨的一維數組指定的任何內容,就像我在上面所做的一樣,而不是由元組數組指定。


對於球體上的插值,有RectSphereBivariateSpline 但是我不明白您如何期望通過2D插值從球形到圓柱形的轉換,因此無法建議合適的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM