2016-08-09 58 views
0

下面是一個示例數據集。matlab 4D插值圖

x = linspace(10,20,50); 
y = linspace(10,20,50); 
z = cos(linspace(0,2*pi,50)); 
time = linspace(1,60,50); 
sci_temp = randi(100,50,1); 

x,y,z是位置,sci_temp是溫度數據。

我想知道如何用sci_temp數據繪製xyz位置的軌跡。

我嘗試插值數據,所以我用sci_temp繪圖得到2D插值時間vs z。

S = TriScatteredInterp(time',z',sci_temp); 
[t_mesh z_mesh] = meshgrid(time,z); 
tz_mesh = S(t_mesh, z_mesh); 
pcolor(t_mesh,z_mesh,tz_mesh) 

result

我想要得到的是一個2D(時間與sci_temp)在XYZ三維圖部分地圖。像這張圖片一樣。

result

如何顯示在軌道中的3D繪圖sci_temp?

有沒有人可以幫助我?

感謝

回答

0

首先,你正在做插值稍有不妥,你不想在插值通過

meshgrid(time,z); 

創建,因爲它會重複值的網格。您想在

meshgrid(time,linspace(min(z),max(z),50)); 

一旦你喜歡的插值內插在創建網格: 可以與surface功能3D空間繪製出來,你只需要確保給x和y座標適當

surface(repmat(x,50,1),repmat(y,50,1),zmesh,tzmesh) 

你甚至可以有更復雜的路徑,例如,同樣的數據,但y=z


編輯:我也忘了提,我建議你使用scatteredInterpolant而不是TriScatteredInterp。它給你更多的插值控制

+0

我想知道如何對應每個時間和每個位置一對一。 –

+0

我解決了這個問題,>> [x_mesh t_mesh] = meshgrid(x,time); [y_mesh t_mesh] = meshgrid(y,time); [t_mesh z_mesh] = meshgrid(time,linspace(min(z),max(z),50)surf(x_mesh,y_mesh,t_mesh,zt_mesh)謝謝! –