Как я могу визуализировать / построить градиент температуры с помощью Matlab? - PullRequest
1 голос
/ 18 января 2012

One side should look like this, depending upon temperature values a smooth descriptionenter image description here У меня есть данные в определенных точках в 3D-прямоугольнике, и я хочу видеть градиент температуры. У меня есть значения в определенных точках, но я хочу непрерывный поток градиента между каждым датчиком. Я не смог понять, как визуализировать или отображать данные между датчиками, расположенными в разных точках. застрял: (

X=[5 0 0 0 0 5 10 10 10 10 0 5 10 10 0 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 0 5 10 0 5 10 10 10 5 0 0]';
Y=[10 10 5 5 10 10 5 10 5 10 0 0 0 0 0 0 3.5 7 3.5 7 3.5 7 3.5 7 3.5 7 3.5 7 3.5 7 3.5 7 0 0 0 0 0 0 5 10 10 10 5 ]';
Z=[20 20 20 14 14 14 14 14 20 20 20 20 20 14 14 14 3.8 3.8 0 0 7.5 7.5 10 10 12.5 12.5 15 15 17.5 17.5 20 20 0 0 0 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5]';
%# temperature vector
T = [20 22 24 22.1 26.1 22.4 15 17 21 22 19 22 18 17 18 20 21 22 21 24 22.3 22.5 22.8 28.9 22 27 26 20 19 24 21 23 19 18 22 25 27 21 29 25 22 21 22];
scatter3(X,Y,Z,[4000],T,'.');
grid off
box off
view(32,18); axis equal tight off vis3d; % azimuth 26
camproj perspective
camlight; lighting gouraud; alpha(0.75);
rotate3d on

Код ниже просто показывает, как должна выглядеть моя одна сторона трехмерного прямоугольника (это просто случайный код)

datagrid = 500*peaks(100);
R = makerefmat('RasterSize',size(datagrid));
[aspect,slope,gradN,gradE] = gradientm(datagrid,R);
figure; axesm eqacyl
meshm(datagrid,R)
colormap (jet(64))
colorbar('vert')
title('Peaks: elevation')
axis square

1 Ответ

1 голос
/ 18 января 2012

Вы можете разбить проблему на две подзадачи:

  • Интерполяция
  • Визуализация

Давайте сначала посмотрим на интерполяцию. Доступно много методов, но давайте попробуем функцию MATLAB griddatan. Это будет интерполировать (линейно) значения на новый набор точек (здесь я использовал регулярную сетку, построенную с использованием meshgrid).

M = 20;
N = 20;
L = 40;

T = transpose(T);

% Set up the grid of points we wish to interpolate at
[xi,yi,zi] = meshgrid(linspace(0,10,M),linspace(0,10,N),linspace(0,20,L));

% Perform interpolation
ti = griddatan([X,Y,Z],T,[xi(:),yi(:),zi(:)]);

% Reshape back from a column vector to a MxNxL matrix
ti = reshape(ti, size(xi));

% Visualise in some way
scatter3(xi(:),yi(:),zi(:),400,ti(:),'.')

Когда дело доходит до визуализации, тогда предел неба и трехмерная визуализация объема - больше искусство, чем наука. Боюсь, я не могу запустить ваш пример (у меня нет доступа к makerefmat), но http://www.mathworks.co.uk/help/techdoc/visualize/bqliccy.html имеет несколько хороших отправных точек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...