2015-09-30 3 views
3

У меня есть четыре переменные x, y, z, t. Я хотел бы показать (x, y, z) в виде поверхности, что цвет поверхности определяется t. Я хочу назначить «t» цветной полосе. Теперь цветовая полоса соответствует z, я хочу, чтобы она соответствовала «t» моей 4-й переменной.4D визуализация в Matlab (поверхность и сетка)

Спасибо за любую помощь

+0

Не могли бы вы опубликовать свой код? См. Http://stackoverflow.com/help/mcve – lhcgeneva

+0

X = 1: 10; Y = 1: 14; [x y] = meshgrid (X, Y); z = RESULT (:, 1); t = РЕЗУЛЬТАТ (:, 2) surf (x, y, z), colorbar – Emily

+0

Сделайте ** NOT ** почтовый индекс в качестве комментариев. * Измените * вопрос, нажав кнопку «edit» под тегами вашего вопроса. – Adriaan

ответ

5

Это очень легко: просто использовать

surf(x, y, z, t) 

Из documentation,

surf(X,Y,Z,C) использует C определить цвет. MATLAB® выполняет линейное преобразование этих данных для получения цветов из текущей цветовой карты.

Вот пример:

x = linspace(0,pi,50); 
y = linspace(0,pi/2,50); 
z = bsxfun(@times, sin(x), sin(y.')); %' 
t = bsxfun(@minus, x, y.'); %'// example data; 
surf(x,y,z,t); %// draw surface 
colorbar %// show colorbar 

enter image description here

+0

Спасибо большое! Он отлично работает :) – Emily

+1

Ghe, используя 'bsxfun', хотя он невостребован, великолепный. – Adriaan

+0

@Adriaan Первая идея, которая пришла мне в голову, заключалась в использовании в качестве примера функции разделения. И вот что делает 'bsxfun' :-) –