我在zk
处有一系列z值Tadjust0
和温度值zk
。从此我想创建一系列高度Tadjust0(j)
从zk(j-1)
到zk(j)
的步骤。
我试图通过以下方式实现这一目标:
zk=[40.41; 50.04; 59.56; 68.95; 78.22; 87.40; 99.95];
Tadjust0=[-1.1500; 1.6033; 2.4287; 3.2430; 3.8500; 3.8500; 3.8500];
zo=[1:0.01:100];
Tadjust1=interp1(zk,Tadjust0,zo,'next','extrap');
figure
plot(zo,Tadjust1)
figure
scatter(zk,Tadjust0)
但据我所知,插值似乎是使用“最近的”'而不是“下一步”:步骤不会在zk(j)
结束,而是以(zk(j)+zk(j+1))/2
结束。事实上,如果我将代码更改为最近的'我得到完全相同的情节。
答案 0 :(得分:0)
我怀疑问题在于同时使用下一个邻居插值和外推。您可以将插值和外推分开以确保:
zk=[40.41; 50.04; 59.56; 68.95; 78.22; 87.40; 99.95];
Tadjust0=[-1.1500; 1.6033; 2.4287; 3.2430; 3.8500; 3.8500; 3.8500];
zo=[1:0.01:100];
% Nearest neigbour inter-/ extrapolation
Tadjust1=interp1(zk,Tadjust0,zo,'nearest','extrap');
% Get indices of zo within the range of zk
interp_range = zo > min(zk) & zo < max(zk);
% Replace the interpolated values by next neighbour interpolation
Tadjust1(interp_range)=interp1(zk,Tadjust0,zo(interp_range),'next');
figure
plot(zo,Tadjust1)
figure
scatter(zk,Tadjust0)