六边形网格到方形网格的插值

时间:2021-05-20 13:59:59

标签: python scipy interpolation

我有形成六边形点阵顶点的 x,y 坐标(即 (x[i], y[i]) 表示一个点和 az 值(一维数组),使得 z[i] 是值在点 (x[i], y[i])。如何将 z 插值到规则的方形网格(用于计算 z 的偏导数)?

import numpy as np
import matplotlib.pyplot as plt

def hex_pts(Nx, Ny):
    x_a, y_a = [],[]  
    for jj in range (Nx):
        for ii in range(0,Ny,4):
            x_a.append(0+jj*np.sqrt(3)); y_a.append(3*ii/4)
            x_a.append(-np.sqrt(3)/2+jj*np.sqrt(3)); y_a.append(3*ii/4+1/2)
            x_a.append(-np.sqrt(3)/2+jj*np.sqrt(3)); y_a.append(3*ii/4+1/2+1)
            x_a.append(0+jj*np.sqrt(3)); y_a.append(3*ii/4+1/2+1+1/2)
    x_a = np.asarray(x_a)
    y_a = np.asarray(y_a)
    
    return x_a, y_a
def zfun(x,y):
    return x**2+y**2
xa, ya = hex_pts(20, 40)
z = zfun(xa, ya)

plt.figure(1)
plt.scatter(xa,ya, s=12)
plt.axis('equal')

plt.figure(2)
plt.scatter(xa, ya, c=z)
plt.show()

0 个答案:

没有答案
相关问题