Matlab中的2d pchip

时间:2016-06-29 21:45:43

标签: matlab vectorization interpolation

我知道x(x,y)网格网格上的z值,由xgrid,ygrid定义。

xgrid和ygrid不是统一的网格。

我需要从网格点插入z的值。

我需要类似于'pchip'的插值,因为手头的问题需要预先形状,而'pchip'具有比例如更好的形状保持特性。 '花键'。

我目前的代码:

xgrid = [0.01 0.1 0.5 1]';
ygrid = [0.01 0.1 0.5 1];
z = 0.01./(repmat(xgrid,[1 4]).*repmat(ygrid,[4 1]));
x1 = 0.05;
y1 = 0.05;

[xmesh,ymesh] = ndgrid(xgrid,ygrid);
interpolant1  = griddedInterpolant(xmesh,ymesh,z,'cubic');
z1            = interpolant1(x1, y1);

for ix = 1:length(xgrid);
    interpolant2(ix) = interp1(ygrid, z(ix,:), y1, 'pchip');
end
z1            = interp1(xgrid, interpolant2,   x1, 'pchip');

在我的例子中,interpolant1将使用'spline'而不是'cubic',并且由于过冲(http://blogs.mathworks.com/cleve/2012/07/16/splines-and-pchips/)而似乎不太准确。但是,interpolant1要快得多。

我的主要问题:我能做些什么来使插值2的代码更高效?量化?使用interp1的替代方法?

0 个答案:

没有答案