что необходимо сделать перед построением трехмерного графика в системе matlab
Что необходимо сделать перед построением трехмерного графика в системе matlab
3. Трёхмерная графика .
Графики функций двух переменных представляют из себя куски поверхностей, нависающие над областями определения функций. Отсюда ясно, что изображение графиков функций двух переменных требует реализации «трёхмерной графики» на пл оском экране дисплея компьютера.
Высокоуровневая графическая подсистема MATLABа автоматически реализует трёхмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами x1,y1 вычислено значение функции z=f(x,y) и оно равно z1. В некоторой другой точке (то есть при другом значении аргументов) x2,y2 вычисляют значение функции z2. Продолжая этот процесс, получают массив (набор) точек (x1,y1,z1), (x2,y2,z2), (xN,yN,zN) в количестве N штук, расположенных в трёхмерном пространстве. Специальные функции системы MATLAB проводят через эти точки гладкие поверхности и отображают их проекции на плоский дисплей компбютера.
Простейшей функцией построения графика функции двух переменных в системе MATLAB является функция
В системе MATLAB имеется специальная функция для получения двумерных массивов X и Y по одномерным массивам x, y.
Пусть по оси x задан диапазон значений в виде вектора
а по оси y этот диапазон есть
Для получения матриц X и Y, представляющих первые и вторые координаты получающейся прямоугольной сетки точек используют специальную функцию системы MATLAB:
Как мы видим, эта функция получает на входе два одномерных массива (вектора), представляющие массивы точек на осях координат, и возвращает сразу два искомых двумерных массива. На прямоугольной сетке точек вычисляем значения функции, например функции exp:
Наконец, применяя описанную выше функцию plot3,получаем следующее изображение трёхмерного графика этой функции:
Для построения трёхмерных линий, задаваемых параметрически применяется другая форма вызова функции plot3:
plot3( x, y, z )
где x, y и z являются одномерными массивами координат точек, которые и нужно последовательно соединить отрезками прямых. Например, следующий фрагмент кода
t = 0 : pi/50 : 10*pi ;
x = sin( t );
y = cos( t );
grid on
где применена известная по плоским графикам команда
grid on
для проставления сетки координатных значений в области построения графика (также допустимо использовать команды и функции по оформлению графиков, ранее рассмотренные для «плоского» случая), позволяет построить винтовую линию, изображение которой показано на следующем рисунке:
Помимо этой простейшей функции система MATLAB располагает ещё рядом функций, позволяющих добиваться большей реалистичности в изображении трёхмерных графиков. Это функции mesh, surf и surfl.
Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции
можно получить вот такое изображение
функции mesh применить функцию surf( X, Y, Z ).
В результате получается следующее изображение представляющее плотную (непрозрачную) сетчатую поверхность, причём отдельные ячейки (грани) этой сетчатой поверхности (плоские четырёхугольники) автоматически окрашиваются в разные цвета.
С помощью функции surf получаются хотя и искусственно раскрашенные, но весьма наглядные изображения. Если же мы хотим добиться более естественных и объективных способов окрашивания поверхностей, то следует использовать функцию surfl.
Функция surfl трактует поверхность графика как материальную поверхность с определёнными физическими свойствами по отражению света. По умолчанию задаётся некоторый источник света, освещающий такую материальную поверхность, после чего рассчитываеются траектории отражённых лучей, попадающих в объектив условной камеры. Изображение в такой камере и показывается в графическом окне системы MATLAB.
Так как разные материалы по-разному отражают падающие лучи, то можно подобрать некоторый материал, чтобы получить наилучшее (с точки зрения пользователя) изображение. В частности, можно использовать функцию
colormap( copper )
surfl( X, Y, Z )
вместо surf(X,Y,Z) приводит к получению очень реалистически выглядящего и очень наглядного графика:
Можно с такого графика убрать чёрные линии, изображающие рёбра, а также добиться ещё более плавного перехода освещения поверхности, если выполнить команду
shading interp
Построение трехмерных графиков в MATLAB
Построение трехмерных графиков в MATLAB.
График функции двух переменных в MATLAB – это поверхность, расположенная над областями определения функции. Поэтому для прорисовки такого графика требуется использование трехмерного изображения.
Простейшим инструментом, способным отобразить график функции дыух переменных, является
plot3( X, Y, Z )
где X, Y и Z – матрицы со значениями функции (точками z) в наборах (x, y).
В системе MATLAB имеется специальная функция для получения двумерных массивов X и Y по одномерным массивам x, y.
В MATLAB существует функция построения двумерных массивов X и Y по одномерным x, y.
Пусть по оси x задан вектор
а по оси y диапазон
Для получения матриц X и Y, содержащих значения точек в этой прямоугольной сетке, используется функция:
[ X, Y ] = meshgrid( u, v )
Вычислим теперь на полученной прямоугольной сетке значение функции exp:
Теперь применим функцию plot3, которая была описана выше, и получим следующий график:
Чтобы построить трехмерные линии, заданные параметрически, применяется другая форма вызова функции plot3:
plot3( x, y, z )
Следующий пример позволяет построить винтовую линию:
t = 0 : pi/50 : 10*pi ;
x = sin( t );
y = cos( t );
plot3( x, y, t );
grid on
Причем следует отметить, что функции по обработке графиков, допустимые в двумерном случае, работают и для трехмерных изображений.
Кроме этой простейшей функции построения графиков в MATLAB есть набор инструментов, позволяющий сделать отображаемые объекты более наглядными. Это функции mesh, surf и surfl.
Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции
Mesh соединяет соседние вычислительные точки отрезками, причем невидимые линии при отображении скрываются. Если же такие линии для отображения необходимы, нужно воспользоваться командой.
Для примера рассмотрим использование функции mesh в случае построения того же графика функции
позволяет получить следующее изображение, представляющее собой поверхность, а не набор линий.
Раскрашивание отдельных элементов поверхности в этом случае производится автоматически. Если же раскрасить их необходимо по-другому, лучше всего воспользоваться функцией surfl.
Эта функция воспринимает построенную поверхность как материальную, обладающую определенными свойствами. По умолчанию она задает некоторый источник света, после чего рассчитывает траектории отраженных от поверхности лучей. Таким образом, если задать условные параметры материала поверхности, например:
colormap( copper ) ,
то есть набор цветов (colormap), соответствующий меди (copper), то после вызова функции
surfl( X, Y, Z )
мы получим следующий график:
Убрать черные линии и добиться более лпавного света позволяет команда