我知道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的替代方法?