【发布时间】:2016-01-19 21:13:37
【问题描述】:
我有一个插值问题。它不应该太复杂,但我找不到任何有效的解决方案。
我正在研究 2D 机翼截面,我知道机翼的每个坐标点 (x_inf,y_inf) 上的压力(标量),并且我想将此压力内插到机翼的另一个离散化点((x_profil ,y_profile) 坐标)。这是我拥有的配置文件的图片((x_inf,y_inf),绿色)和我想要插值的网格((x_profil,y_profil),红色)。 Points for interpolation。 数据 x_inf、y_inf、p_inf 是相同大小的 numpy 数组(它们是从特定文件中提取的)。 x_profil, y_profil 也是相同大小的 numpy 数组(但与 _inf 数据不同)。
我首先尝试了 interp2d 函数,但结果是一个大小为插值点大小平方的数组。
pressure=interp2d(x_inf,y_inf,p_inf)
p_profil=pressure(x_profil,y_profil)
我还尝试使用 interp1d 仅在 x 轴上进行插值,但这也不起作用。将插值类型设置为“最近”或“零”有效,但插值中有“孔”,如下图所示:presure interpolation,其中绿色点是输入数据,红色点是插值.
pressure=interp1d(x_inf,p_inf,kind='zero',bounds_error=False)
p_profil=pressure(x_profil)
我正在使用 Python 2.7.10、scipy 0.16.1 和 numpy 1.9.2,在带有 Enthought Canopy 的 Windows 7 上运行。
有人知道我该如何解决我的问题吗?
提前非常感谢!
【问题讨论】:
-
您是在测量机翼周围的气压还是由压力引起的机翼上的力?一种需要压力值的二维数组,另一种需要一维数组。
-
我测量的是机翼周围的气压,而不是力。它也可以是另一个标量值,例如密度或温度。
-
所以它不仅限于机翼的轮廓,它也可能是高于或低于一英尺?
-
你可能需要定义另一个参数,T,所以你可以有一个函数,它接受任何 T 并返回坐标和压力
-
在这种情况下,我需要皮肤上的值。我正在比较来自模拟和风洞实验的数据。