等间距数据的N-D插值

时间:2012-07-09 18:54:26

标签: numpy scipy

我正在尝试复制Scipy Cookbook功能:

from scipy import ogrid, sin, mgrid, ndimage, array
x,y = ogrid[-1:1:5j,-1:1:5j]
fvals = sin(x)*sin(y)
newx,newy = mgrid[-1:1:100j,-1:1:100j]
x0 = x[0,0]
y0 = y[0,0]
dx = x[1,0] - x0
dy = y[0,1] - y0
ivals = (newx - x0)/dx
jvals = (newy - y0)/dy
coords = array([ivals, jvals])
newf = ndimage.map_coordinates(fvals, coords)

使用我自己的功能,必须适用于许多场景

import scipy
import numpy as np
"""N-D interpolation for equally-spaced data"""                                         
x = np.c_[plist['modx']]                                                                
y = np.transpose(np.c_[plist['mody']])                                                  
pdb.set_trace()                                                                         
#newx,newy = np.meshgrid(plist['newx'],plist['newy'])                                   
newx,newy = scipy.mgrid[plist['modx'][0]:plist['modx'][-1]:-plist['remapto'],               
                     plist['mody'][0]:plist['mody'][-1]:-plist['remapto']]                                                                                        
x0 = x[0,0]                                                                             
y0 = y[0,0]                                                                             
dx = x[1,0] - x0                                                                        
dy = y[0,1] - y0                                                                        
ivals = (newx - x0)/dx                                                                  
jvals = (newy - y0)/dy                                                                  
coords = scipy.array([ivals, jvals])                                                    
for i in np.arange(ivals.shape[0]):                                                     
    nvals[i] = scipy.ndimage.map_coordinates(ivals[i], coords)                                                                                                                              

我很难让这段代码正常工作。问题领域是: 1.)重新创建这一行:newx,newy = mgrid [-1:1:100j,-1:1:100j]。在我的情况下,我有一个字体与矢量形式的网格。我试图使用np.meshgrid重新创建这一行但是我在行coords = scipy.array([ivals,jvals])上得到一个错误。我正在寻找一些帮助来重新创建这个Cookbook功能并使其更具动态性 非常感谢任何帮助。

/ M

1 个答案:

答案 0 :(得分:1)

您应该查看map_coordinates的文档。我没有看到您尝试插入的实际数据在您的代码中的位置。我的意思是,大概你有一些数据inputxy的函数;即想要插入的input = f(x,y)。在您显示的第一个示例中,这是数组fvals。这应该是map_coordinates的第一个参数。

例如,如果您尝试输入的数据是input,它应该是形状为(len(x),len(y))的二维数组,则插值数据将为:

interpolated_data = map_coordinates(input, coords)