使用Scipy RegularGridInterpolator插值规则网格向量场出现旋转偏移
问题成因
核心错误是RegularGridInterpolator的网格参数顺序与输入场数据的轴顺序不匹配:
numpy.meshgrid默认使用indexing='xy'模式,你生成的Fx、Fy数组的第一维度(轴0)对应y坐标的变化,第二维度(轴1)对应x坐标的变化。- 你创建插值器时传入的网格顺序为
(x, y),和场数组的轴顺序刚好相反,导致插值过程中x、y坐标被错误映射,最终输出的向量场出现旋转偏移。
修复方法
仅需要调整插值器初始化时的网格顺序,将(x, y)改为(y, x)即可:
# 原错误代码 # my_interpolating_function_x = RegularGridInterpolator((x, y), Fx) # my_interpolating_function_y = RegularGridInterpolator((x, y), Fy) # 修改后代码 my_interpolating_function_x = RegularGridInterpolator((y, x), Fx) my_interpolating_function_y = RegularGridInterpolator((y, x), Fy)
修改后重新运行,插值得到的向量场就会和原始场完全匹配。
内容的提问来源于stack exchange,提问作者henry
相关产品推荐
相关产品推荐

