Построение трехмерных графиков в MATLAB

реклама
Построение трехмерных графиков в MATLAB.
График функции двух переменных в MATLAB – это поверхность,
расположенная над областями определения функции. Поэтому для прорисовки
такого графика требуется использование трехмерного изображения.
Простейшим инструментом, способным отобразить график функции дыух
переменных, является
plot3( X , Y , Z )
где X, Y и Z – матрицы со значениями функции (точками z) в наборах (x,y).
В системе MATLAB имеется специальная функция для получения
двумерных массивов X и Y по одномерным массивам x, y.
В MATLAB существует функция построения двумерных массивов X и Y по
одномерным x,y.
Рис.1
Пусть по оси x задан вектор
u = -2 : 0.1 : 2 ,
а по оси y диапазон
v = -1 : 0.1 : 1 .
Для получения матриц X и Y, содержащих значения точек в этой
прямоугольной сетке, используется функция:
[ X , Y ] = meshgrid( u, v )
Вычислим теперь на полученной прямоугольной сетке значение функции
exp:
Z = exp( - X.^2 - Y.^2 )
Теперь применим функцию plot3, которая была описана выше, и получим
следующий график:
Рис.2
Чтобы построить трехмерные линии, заданные
применяется другая форма вызова функции plot3:
параметрически,
plot3( x, y, z )
здесь x, y и z - одномерные массивы координат точек, которые надо
последовательно соединить отрезками прямых.
Следующий пример позволяет построить винтовую линию:
t = 0 : pi/50 : 10*pi ;
x = sin( t );
y = cos( t );
plot3( x , y , t );
grid on
Рис.3
Причем следует отметить, что функции по обработке графиков, допустимые
в двумерном случае, работают и для трехмерных изображений.
Кроме этой простейшей функции построения графиков в MATLAB есть
набор инструментов, позволяющий сделать отображаемые объекты более
наглядными. Это функции mesh, surf и surfl.
Функция mesh соединяет вычисленные соседние точки поверхности
графика отрезками прямых и показывает в графическом окне системы MATLAB
плоскую проекцию такого объёмного "каркасно-ребристого" ( по-английски
зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции
plot3 графика функции
Mesh соединяет соседние вычислительные точки отрезками, причем
невидимые линии при отображении скрываются. Если же такие линии для
отображения необходимы, нужно воспользоваться командой.
hidden off
Для примера рассмотрим использование функции mesh в случае построения
того же графика функции
exp( - X.^2 - Y.^2 )
Рис.4
Вызов же функции
surf( X, Y, Z )
позволяет получить следующее изображение, представляющее собой
поверхность, а не набор линий.
Рис.5
Раскрашивание отдельных элементов поверхности в этом случае
производится автоматически. Если же раскрасить их необходимо по-другому,
лучше всего воспользоваться функцией surfl.
Эта функция воспринимает построенную поверхность как материальную,
обладающую определенными свойствами. По умолчанию она задает некоторый
источник света, после чего рассчитывает траектории отраженных от
поверхности лучей. Таким образом, если задать условные параметры материала
поверхности, например:
colormap( copper ) ,
то есть набор цветов (colormap), соответствующий меди (copper), то после
вызова функции
surfl( X, Y, Z )
мы получим следующий график:
Рис.6
Убрать черные линии и добиться более лпавного света позволяет команда
shading interp
Скачать