Nic*_*sui 5 python interpolation 2d numpy scipy
我正在将球坐标网格上采样的信号映射到柱坐标网格。显然两者都不是统一的网格。两个网格的大小均为 256 X 864(行 X 列)。
所以我尝试了这样的事情:
f = interp2d(x, y, z, kind='cubic')
zz= f(xx, yy)
Run Code Online (Sandbox Code Playgroud)
这里,
x, y = meshgrid(spherical_x, spherical_y)
xx, yy = meshgrid(cylindrical_x, cylindrical_y)
Run Code Online (Sandbox Code Playgroud)
一维方向上所有的spherical_x, spherical_y, cylindrical_x, and cylindrical_y都是不均匀的。
当我运行 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
Run Code Online (Sandbox Code Playgroud)
所以,我想知道我将如何使用 Python/NumPy/SciPy 进行这种非均匀 2D 插值?我知道有一个rectbivariatespline,但似乎你的原始数据必须位于统一的网格上。谢谢。
小智 1
您正在错误地调用创建的对象interp2d。它的调用方法有参数
x :一维数组,要在其上进行插值的网格的 x 坐标。
y :一维数组,要在其上进行插值的网格的 y 坐标。
因此,您应该传入一维数组,cylindrical_x, cylindrical_y而不是从它们创建的网格。
即使在创建时,interp2d 也不需要 meshgrid:请参阅文档中的示例,该示例使用一维数组作为 x 和 y。
有一个 rectbivariatespline,但似乎你的原始数据必须位于统一的网格上。
它必须在网格上,而不是统一的网格上。例如,x 坐标为 1, 3, 10,y 坐标为 -3, 2 的 6 个点就符合网格的条件。网格是可以由单独的一维数组指定的任何东西,就像我上面所做的那样,而不是元组数组。
对于球体上的插值,有RectSphereBivariateSpline。但我不明白您期望如何通过二维插值从球形到圆柱形的转换,因此无法建议适当的方法。
| 归档时间: |
|
| 查看次数: |
6982 次 |
| 最近记录: |