Как создать в MATLAB серфовый сюжет с нерегулярно расположенными данными? - PullRequest
7 голосов
/ 17 мая 2010

Я знаю, что могу создать трехмерный график поверхности в MATLAB, выполнив:

x = linspace(1,10,100);
y = linspace(10,20,100);

[X Y] = meshgrid(x,y);

Z = X * Y;

surf(X,Y,Z);

Но для этого необходимо, чтобы все узлы для сгенерированной карты высот выстроились в линию. У меня есть набор данных, который имеет произвольные точки (x, y) и высоту (z). Есть ли простой способ построить график, который будет генерировать поверхность между точками аналогично surf?

Ответы [ 2 ]

9 голосов
/ 17 мая 2010

Извинения, после некоторой охоты мне удалось ответить на мой собственный вопрос:

Вы можете использовать функцию trisurf:

tri = delaunay(x,y);
trisurf(tri,x,y,z);

Если у вас есть плотные данные, которые вы хотите сделать shading interp (или другое значение, отметьте doc shading), чтобы из-за сетки не появилось черного пятна.

3 голосов
/ 17 мая 2010

Похоже, вы нашли свой ответ, используя DELAUNAY и TRISURF для создания и построения триангулированной поверхности.

В качестве альтернативы, вы также можете разместить сетку с регулярным интервалом в точках с неравномерным интервалом, чтобы создать поверхность, которая может быть нанесена с помощью команды SURF . Я обсуждаю, как это можно сделать, используя TriScatteredInterp class (или устаревшую функцию GRIDDATA ) в моем ответе на this другой вопрос по SO .

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