python规则网格插值不规则边界_python – 加速scipy griddata,用于两个不规则网格之间的多次内插...

每次打电话到scipy.interpolate.griddata时,都会有几件事情:

>首先,调用sp.spatial.qhull.Dealunay进行三角测量不规则的网格坐标.

>然后,对于新网格中的每个点,搜索三角测量以找到哪个三角形(实际上,在您的3D情况下,哪个单体将在哪个四面体中).

>计算每个新网格点相对于封闭单面的顶点的重心坐标.

>使用重心坐标以及包围单纯形顶点的函数值计算该网格点的内插值.

前三个步骤对于所有内插都是相同的,因此,如果您可以为每个新的网格点存储封闭单面的顶点索引和插值的权重,则可以将计算量最小化.不幸的是,直接使用可用功能是不容易的,尽管它确实有可能:

import scipy.interpolate as spint

import scipy.spatial.qhull as qhull

import itertools

def interp_weights(xyz, uvw):

tri = qhull.Delaunay(xyz)

simplex = tri.find_simplex(uvw)

vertices = np.take(tri.simplices, simplex, axis=0)

temp = np.take(tri.transform, simplex, axis=0)

delta = uvw - temp[:, d]

bary = np.einsum('njk,nk->nj', temp[:, :d, :], delta)

return vertices, np.hstack((bary, 1 - bary.sum(axis=1, keepdims=True)))

def interpolat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值