我有形成六边形点阵顶点的 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()