2016-08-09 8 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 - данные о температуре.

Интересно, как рисовать траекторию над положением xyz с данными sci_temp.

Прошу интерполировать данные, поэтому я получаю 2D интерполяционное время vs z с графиком sci_temp.

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) раздел карты на хуг 3D сюжет. Как этот образ.

result

как показать траекторию над sci_temp в 3D сюжет?

Есть ли кто-нибудь, кто может мне помочь?

Благодаря

ответ

0

Во-первых, вы делаете свою интерполяцию немного неправильно, вы не хотите, чтобы интерполировать над сеткой, созданной

meshgrid(time,z); 

Потому что это будет дублировать значения. Вы хотите, чтобы интерполировать над сеткой, созданной

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

После того, как вы получите интерполированные значения, как: Вы можете построить их в 3D-пространстве с помощью функции surface, вам просто нужно, чтобы убедиться, чтобы дать х и у координаты соответственно

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

Вы даже можете иметь более сложные пути, например, те же данные, но y=z


Edit: Кроме того, я забыл упомянуть, я предлагаю вам использовать scatteredInterpolant вместо TriScatteredInterp. Это дает вам больший контроль над интерполяцией.

+0

Мне интересно, как каждый раз и каждое место соответствовать друг другу. –

+0

Я решаю это, >> [x_mesh t_mesh] = meshgrid (x, time); [y_mesh t_mesh] = meshgrid (y, время); [t_mesh z_mesh] = meshgrid (время, linspace (min (z), max (z), 50) surf (x_mesh, y_mesh, t_mesh, zt_mesh) СПАСИБО МНОГО !!!! –