python - 为什么 scipy.interpolate.griddata 表现不佳?
问题描述
我正在尝试使用来自 scipy 的 griddata 在翼型系数数据库中插入值。基本上,数据库有一组不同攻角和雷诺数的系数,我想在给定点之间进行线性插值。但是当我根据原始点绘制插值时,它们排列得不是很好。几乎看起来 griddata 只使用外部点来定义插值。如何让它使用所有点进行插值?
这是我的数据集的结果(蓝色是数据,红色是插值):
这是不同数据库的样子。注意它是如何完全切断右侧的拱门的。
这是我的代码:
# Read in file
filename = sys.argv[-1]
data = np.genfromtxt(filename, skip_header=1)
N = data.shape[0]
# Plot CL vs first two dofs
fig = plt.figure()
ax = fig.gca(projection='3d')
for i in range(data.shape[0]):
ax.plot(data[i,0], data[i,1], data[i,-3], 'b.')
ax.set_xlabel("Alpha [rad]")
ax.set_ylabel("Re")
ax.set_zlabel("CL")
# Get griddata prediction
alpha_max = np.max(data[:,0])
alpha_min = np.min(data[:,0])
Re_max = np.max(data[:,1])
Re_min = np.min(data[:,1])
for a in np.linspace(alpha_min, alpha_max, 20):
for Re in np.linspace(Re_min, Re_max, 20):
CL = interp.griddata(data[:,:2], data[:,-3], np.array([[a, Re]])).item()
ax.plot(a, Re, CL, 'r.')
解决方案
事实证明,如果我将雷诺数归一化Re_max
,则插值效果很好。标准化是一件好事。
推荐阅读
- java - 什么时候应该关闭 GRPC 上的通道?
- ios - Xamarin.iOS 应用在 iOS 14.0 中询问本地网络权限
- r - 使用 bnstruct 计算动态贝叶斯网络
- html - bootstrap 4 carousel 的控件不起作用
- html - 上传文件时如何检查 adoc 文件类型
- qt5 - Qt5:从按钮到顶部动态添加QLabel
- scala - 将递归 sql 转换转换为 spark
- maven - 使用 jaxb2-rich-contract-plugin 创建两个 Builder 时出现重复的类异常
- commercetools - 在 CommerceTools 中创建具有嵌套属性的订单
- ruby-on-rails - Rails 返回 json 取决于 webhook 操作是否符合 DRY