You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

曲线网格速度插值问题:interp2无效网格错误的解决方法

非矩形网格插值解决方案

问题原因

interp2仅支持规则矩形网格(即由meshgrid生成的网格,每行x值相同、每列y值相同),你的网格属于非结构化/非矩形网格,因此触发"Input grid is not a valid MESHGRID"错误。

替代方案

针对非结构化网格,Matlab提供了两个专门的插值工具:

1. 使用griddata函数

适合单次或少量插值场景,直接处理散乱点数据:

  • 先将二维矩阵x、y、u展平为一维数组(通过(:)操作)
  • 调用griddata指定插值方法和外插填充值

示例代码:

x=[0.0482114583977891,0.0482201588072998,0.0482288592168105;0.0513027685854806,0.0512573490659834,0.0512119412024664;0.0550957532853860,0.0550195888619688,0.0549437786953572;0.0589706773586289,0.0589051888951395,0.0588397004316502];
y=[-0.0481475644832381,-0.0450026617243515,-0.0418577589654650;-0.0454644879533678,-0.0426002662557475,-0.0397360636257961;-0.0434988768053532,-0.0408400599208391,-0.0381819554721181;-0.0414343539900984,-0.0389341351227583,-0.0364339162554183];
u=[1.52583130467469,14.3816671073665,58.5433654462735;108.677373003789,124.842139940676,145.468567077514;110.206733380171,111.157308056414,111.709609403516;135.414711548714,138.843419308648,147.988201447309];
xq=0.065;
yq=0.035;

% 展平网格数据并执行插值,cubic方法+外插填充0
uq = griddata(x(:), y(:), u(:), xq, yq, 'cubic', 0);

2. 使用scatteredInterpolant类

适合需要多次插值的场景,先创建插值对象,后续可重复调用,效率更高:

  • 展平数据创建插值对象
  • 设置外插规则(如填充值)
  • 调用对象获取插值结果

示例代码:

x=[0.0482114583977891,0.0482201588072998,0.0482288592168105;0.0513027685854806,0.0512573490659834,0.0512119412024664;0.0550957532853860,0.0550195888619688,0.0549437786953572;0.0589706773586289,0.0589051888951395,0.0588397004316502];
y=[-0.0481475644832381,-0.0450026617243515,-0.0418577589654650;-0.0454644879533678,-0.0426002662557475,-0.0397360636257961;-0.0434988768053532,-0.0408400599208391,-0.0381819554721181;-0.0414343539900984,-0.0389341351227583,-0.0364339162554183];
u=[1.52583130467469,14.3816671073665,58.5433654462735;108.677373003789,124.842139940676,145.468567077514;110.206733380171,111.157308056414,111.709609403516;135.414711548714,138.843419308648,147.988201447309];
xq=0.065;
yq=0.035;

% 创建散乱点插值对象,采用cubic方法
F = scatteredInterpolant(x(:), y(:), u(:), 'cubic');
% 设置超出网格范围时的填充值
F.ExtrapolationMethod = 0;
% 计算插值结果
uq = F(xq, yq);

注意事项

  • 你的查询点(0.065, 0.035)完全在现有网格范围外(现有x最大约0.0589,y最小约-0.0481),因此会触发外插逻辑,返回设置的填充值0。若需要合理外插,可更换为linear方法(默认支持外插)或调整填充值。
  • 若网格是结构化非矩形网格(如曲线网格),也可尝试interpn配合ndgrid,但griddata和scatteredInterpolant的适用性更广。

内容的提问来源于stack exchange,提问作者Hosein Bashi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 05:06:33