使用具有通用秩的 N-D 插值?



我正在寻找一种优雅的方式来以更"通用"的方式使用ndgridinterpn- 基本上对于任何给定的输入大小,而不是在单独的情况下处理每个等级。

给定一个 N-D 源数据,其中每个坐标Mesh={[x1]; [x2]; ...; [xn]}的一维向量单元数组中给出匹配的 N-D 网格,并以相同的方式(QueryMesh(给出查询/输出坐标,如何生成ndgrid矩阵并在interpn中使用它们而不为每个维度设置案例?

此外,如果有更好的方法来定义网格 - 我非常愿意改变。

这是一个非常明显的,概念性的(并且不起作用的(示意图,如果不清楚的话,我想得到什么

Mesh={linspace(0,1,10); linspace(0,4,20); ... linsapce(0,10,15)};
QueryMesh={linspace(0,1,20); linspace(0,4,40); ... linsapce(0,10,30)};
Data=... (whatever)
NewData=InterpolateGeneric(Mesh,QueryMesh,Data);

function NewData=InterpolateGeneric(Mesh,QueryMesh,Data)
InGrid=ndgrid(Mesh{:});
OutGrid=ndgrid(QueryMesh{:});
NewData=interpn(InGrid{:},Data,OutGrid{:},'linear',0.0)
end

我认为您正在寻找的是如何从此行获取多个输出:

OutGrid = ndgrid(QueryMesh{:});

由于ndgrid生成的输出数组与它接收的输入数组一样多,因此您可以通过以下方式创建一个空单元数组:

OutGrid = cell(size(QueryMesh));

接下来,证明OutGrid的每个元素作为输出参数:

[OutGrid{:}] = ndgrid(QueryMesh{:});

相关内容

  • 没有找到相关文章

最新更新