2017-03-04 54 views
0

我有一系列的z值zk和溫度值Tadjust0在每個zk。從這我想創建一個高度Tadjust0(j)zk(j-1)zk(j)的一系列步驟。interp1'next'似乎給'最接近'

我試圖與實現這一目標:

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。事實上,如果我將代碼更改爲「最近的」,我會得到完全相同的圖。

enter image description here

+0

我不能在我的R2016a安裝重現此。 – TroyHaskin

回答

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) 

原始數據: enter image description here 結果: enter image description here