Графика MATLAB® задает поверхность z-координатами точек выше прямоугольной сетки в x-y плоскости. График формируется путем присоединения смежных точек с прямыми линиями. Объемные поверхностные диаграммы полезны для визуализации матриц, которые являются слишком большими, чтобы отобразиться в числовой форме и для функций построения графика двух переменных.
MATLAB может создать различные формы объемных поверхностных диаграмм. Сетчатые графики являются каркасными поверхностями, которые окрашивают только линии, соединяющие определяющие точки. Объемные поверхностные диаграммы отображают и соединительные линии и полигоны поверхности в цвете. Эта таблица приводит различные формы.
Функция | Используемый, чтобы создать |
---|---|
mesh , surf | Объемная поверхностная диаграмма |
meshc , surfc | Объемная поверхностная диаграмма с контурным графиком ниже его |
meshz | Объемная поверхностная диаграмма с графиком занавеса (базовая плоскость) |
pcolor | График плоской поверхности (значение пропорционально только, чтобы окрасить), |
surfl | Объемная поверхностная диаграмма освещается от заданного направления |
surface | Низкоуровневая функция (на котором высокоуровневые функции базируются) для создания поверхностных графических объектов |
Эти функции полезны, когда необходимо реструктурировать и интерполировать данные так, чтобы можно было представлять эти данные как поверхность.
Функция | Используемый, чтобы создать |
---|---|
meshgrid | Прямоугольная сетка в 2D и трехмерном пространстве |
griddata | Интерполируйте данные, имеющий разброс |
griddedInterpolant | Interpolant для данных с координатной сеткой |
scatteredInterpolant | Интерполируйте данные, имеющий разброс |
Для обсуждения того, как интерполировать данные, смотрите Интерполирующие Данные С координатной сеткой и Интерполяцию данных, имеющих разброс.
mesh
и surf
команды создают 3-D объемные поверхностные диаграммы матричных данных. Если Z
матрица для который элементы Z(i,j)
задайте высоту поверхности по базовому (i,j)
сетка, затем
mesh(Z)
генерирует цветное, каркасное представление поверхности и отображает его в 3-D представлении. Точно так же
surf(Z)
генерирует цветное, фасетное представление поверхности и отображает его в 3-D представлении. Обычно, фасеты являются четырехугольниками, каждый из которых является постоянным цветом, обрисованным в общих чертах с черными линиями mesh, но shading
команда позволяет вам устранять линии mesh (shading flat
) или выбрать интерполированную штриховку через фасет (shading interp
).
Свойства объекта подложки обеспечивают дополнительное управление общим видом поверхности. Можно задать стили линии ребра, маркеры вершины, окраску поверхности, подсветку характеристик, и так далее.
Отобразить функцию двух переменных, z = f (x,y
), сгенерируйте X
и Y
матрицы, состоящие из повторных строк и столбцов, соответственно, по области функции. Вы будете использовать эти матрицы, чтобы оценить и изобразить функцию в виде графика.
meshgrid
функционируйте преобразовывает область, заданную двумя векторами, x
и y
, в матрицы X
и Y
. Вы затем используете эти матрицы, чтобы выполнить функции двух переменных: строки X
копии векторного x
и столбцы Y
копии векторного y
.
Проиллюстрировать использование meshgrid
, рассмотрите sin(r)/r
или sinc
функция. Чтобы выполнить эту функцию между-8 и 8 в обоих X и Y, вы должны передать только один аргумент вектора meshgrid
, который затем используется в обоих направлениях.
[X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps;
Матричный R
содержит расстояние от центра матрицы, которая является источником. Добавление eps
предотвращает деление нулем (на следующем шаге), который производит Inf
значения в данных.
Формирование sinc
функция и графический вывод Z
с mesh
результаты на 3-D поверхности.
Z = sin(R)./R; figure mesh(X,Y,Z)
По умолчанию MATLAB удаляет линии, которые скрыты от представления в сетчатых графиках, даже при том, что поверхности графика не заполнены. Можно отключить удаление невидимой линии и позволить поверхностям сетчатого графика быть прозрачными с hidden
команда:
hidden off
MATLAB обеспечивает много методов, которые могут улучшить информационное содержимое ваших графиков. Например, этот график sinc
функционируйте использует те же данные в качестве предыдущего графика, но использует подсветку, корректировки представления и различную палитру, чтобы подчеркнуть форму графической функции (daspect
, axis
, view
, camlight
).
figure colormap hsv surf(X,Y,Z,'FaceColor','interp',... 'EdgeColor','none',... 'FaceLighting','gouraud') daspect([5 5 1]) axis tight view(-50,30) camlight left
Смотрите surf
функция для получения дополнительной информации об объемных поверхностных диаграммах.
Можно использовать meshgrid
создать сетку однородно выборочных данных указывает, в котором можно оценить и изобразить в виде графика sinc
функция. MATLAB затем создает объемную поверхностную диаграмму путем соединения соседних элементов матрицы, чтобы сформировать сетку четырехугольников.
Чтобы произвести объемную поверхностную диаграмму из неоднородно выборочных данных, используйте scatteredInterpolant
интерполировать значения в однородно расположенных с интервалами точках, и затем использовать mesh
и surf
обычным способом.
Этот пример оценивает sinc
функционируйте наугад указывает в определенной области значений и затем генерирует однородно выборочные данные для отображения как объемная поверхностная диаграмма. Процесс включает эти задачи:
Использование linspace
сгенерировать равномерно распределенные значения в области значений ваших неравномерно выборочных данных.
Использование meshgrid
сгенерировать сетку графического вывода с выходом linspace
.
Используйте scatteredInterpolant
интерполировать нерегулярно выборочные данные к расположенной с равными интервалами сетке, возвращенной meshgrid
.
Используйте функцию построения графика, чтобы отобразить данные.
Сгенерируйте неравномерно выборочные данные в области значений [-8, 8] и используйте ее, чтобы выполнить функцию:
x = rand(100,1)*16 - 8; y = rand(100,1)*16 - 8; r = sqrt(x.^2 + y.^2) + eps; z = sin(r)./r;
linspace
функция обеспечивает удобный способ создать однородно распределенные данные с желаемым числом элементов. Следующие операторы производят векторы в области значений случайных данных с тем же разрешением как сгенерированный-8:.5:8 оператором в предыдущем sinc
пример:
xlin = linspace(min(x),max(x),33); ylin = linspace(min(y),max(y),33);
Теперь используйте эти точки, чтобы сгенерировать однородно расположенную с интервалами сетку:
[X,Y] = meshgrid(xlin,ylin);
Ключ к этому процессу должен использовать scatteredInterpolant
интерполировать значения функции в однородно расположенных с интервалами точках, на основе значений функции в исходных точках данных (которые случайны в этом примере). Этот оператор использует линейную интерполяцию по умолчанию, чтобы сгенерировать новые данные:
f = scatteredInterpolant(x,y,z); Z = f(X,Y);
Постройте интерполированный и неоднородные данные, чтобы произвести:
figure mesh(X,Y,Z) %interpolated axis tight; hold on plot3(x,y,z,'.','MarkerSize',15) %nonuniform
Предположим, что у вас есть набор данных со следующим (X, Y, Z) триплеты:
X | Y | Z |
---|---|---|
1 | 1 | 152 |
2 | 1 | 89 |
3 | 1 | 100 |
4 | 1 | 100 |
5 | 1 | 100 |
1 | 2 | 103 |
2 | 2 | 0 |
3 | 2 | 100 |
4 | 2 | 100 |
5 | 2 | 100 |
1 | 3 | 89 |
2 | 3 | 13 |
3 | 3 | 100 |
4 | 3 | 100 |
5 | 3 | 100 |
1 | 4 | 115 |
2 | 4 | 100 |
3 | 4 | 187 |
4 | 4 | 200 |
5 | 4 | 111 |
1 | 5 | 100 |
2 | 5 | 85 |
3 | 5 | 111 |
4 | 5 | 97 |
5 | 5 | 48 |
Можно представлять данные, которые находятся в векторной форме с помощью различных типов графика MATLAB, такой как surf
, contour
, и stem3
, первой реструктуризацией данных. Используйте (X, Y) значения, чтобы задать координаты в x-y плоскости, в которой существует значение Z. reshape
и transpose
функции могут реструктурировать ваши данные так, чтобы (X, Y, Z) триплеты сформировали прямоугольную сетку:
x = reshape(X,5,5)'; y = reshape(Y,5,5)'; z = reshape(Z,5,5)';
Изменение результатов в трех массивах 5 на 5:
x = 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 y = 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5 z = 152 89 100 100 100 103 0 100 100 100 89 13 100 100 100 115 100 187 200 111 100 85 111 97 48
Можно теперь представлять значения Z относительно X и Y. Например, создайте 3-D график основы:
stem3(x,y,z,'MarkerFaceColor','g')
Функции, которые чертят поверхности, могут взять два дополнительных аргумента вектора или матричные аргументы, чтобы описать поверхности с определенными данными о X и Y. Если Z
матрица m на n, x
n-вектор и y
m-вектор, затем
mesh(x,y,Z,C)
описывает поверхность mesh с вершинами, имеющими цветной C(i,j)
и расположенный в точках
(x(j), y(i), Z(i,j))
где x
соответствует столбцам Z
и y
к его строкам.
В более общем плане, если X
Y
Z
, и C
матрицы тех же размерностей, затем
mesh(X,Y,Z,C)
описывает поверхность mesh с вершинами, имеющими цветной C(i,j)
и расположенный в точках
(X(i,j), Y(i,j), Z(i,j))
Этот пример использует сферические координаты, чтобы чертить сферу и окрасить ее с шаблоном плюсов и минусов в матрице Адамара, ортогональная матрица используемый в теории кодирования обработки сигналов. Векторы theta
и phi
находятся в области значений -
π ≤ theta
≤ π и -
π/2 ≤
phi
≤ π/2 . Поскольку
theta
вектор-строка и phi
вектор-столбец, умножение, которое производит матрицы X
Y
, и Z
векторные векторные произведения.
figure k = 5; n = 2^k-1; theta = pi*(-n:2:n)/n; phi = (pi/2)*(-n:2:n)'/n; X = cos(phi)*cos(theta); Y = cos(phi)*sin(theta); Z = sin(phi)*ones(size(theta)); colormap([0 0 0;1 1 1]) C = hadamard(2^k); surf(X,Y,Z,C) axis square