Progress-servis55.ru

Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Matlab 3d график

Matlab 3d график

Программа MatLab обладает рядом инструментов для визуализации графиков в трехмерном пространстве. Такие задачи обычно возникают при отображении графиков функций типа .

В самом простом случае, для визуализации графика в трехмерных координатных осях, используется функция

которая в качестве первых двух аргументов принимает матрицы с координатами точек по осям Ox и Oy соответственно, а в качестве третьего аргумента передается матрица значений точек по оси Oz. Рассмотрим работу данной функции на примере отображения графика функции

,

при и .

Сформируем матрицы X и Y, содержащие координаты точек данного графика по осям Ox и Oy соответственно. Данные матрицы нужны для того, чтобы функция plot3() «знала» какие реальные координаты соответствуют точке Z(i,j) матрицы значений по оси Oz. Для этого достаточно взять i-ю и j-ю компоненту матриц

Формирование матриц X и Y можно осуществить с помощью функции

языка MatLab. Здесь x и y – одномерные векторы значений координат по осям Ox и Oy соответственно, которые можно сформировать как

x=-1:0.1:1; % координаты точек по оси Ox
y=-2:0.1:2; % координаты точек по оси Oy

и, затем, вычислить матрицы

[X,Y]=meshgrid(x,y); % матрицы координат точек по осям Ox и Oy

В результате, матрицы X и Y будут содержать следующие первые восемь значений по строкам и столбцам:

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-1 -0,9 -0,8 -0,7 -0,6 -0,5 -0,4 -0,3

-2 -2 -2 -2 -2 -2 -2 -2

-1,9 -1,9 -1,9 -1,9 -1,9 -1,9 -1,9 -1,9

-1,8 -1,8 -1,8 -1,8 -1,8 -1,8 -1,8 -1,8

-1,7 -1,7 -1,7 -1,7 -1,7 -1,7 -1,7 -1,7

-1,6 -1,6 -1,6 -1,6 -1,6 -1,6 -1,6 -1,6

-1,5 -1,5 -1,5 -1,5 -1,5 -1,5 -1,5 -1,5

-1,4 -1,4 -1,4 -1,4 -1,4 -1,4 -1,4 -1,4

-1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3 -1,3

Используя данные матрицы, можно вычислить значения матрицы Z, следующим образом:

и отобразить результат на экране

Рис. 3.10. Пример отображения графика с помощью функции plot3()

Из приведенного рисунка видно, что функция plot3() отображает график в виде набора линий, каждая из которых соответствует сечению графика функции вдоль оси Oy.

Такое представление графика не всегда удобно, т.к. набор одномерных не дает полное представление о характере двумерной плоскости. Более лучшей визуализации можно получить, используя функцию

mesh(X,Y,Z); % отображение графика в виде сетки

В результате получим следующий вид трехмерного графика (рис. 3.11).

Благодаря использованию функции mesh() получается график, образованный интерполяцией точек массивов X, Y и Z линиями по осям Ox и Oy. Кроме того, цветом указывается уровень точки по оси Oz: от самого малого значения (синего) до самого большого (красного) и производится удаление «невидимых» линий. Это позволяет лучше визуально оценивать структуру трехмерного графика по сравнению с функцией plot3(). Если же необходимо отобразить «прозрачный» график, то следует выключить режим удаления «невидимых» линий:

hidden off; % скрытые линии рисуются

В системе MatLab предусмотрена функция визуализации непрерывной поверхности в трехмерных осях

surf(X,Y,Z); % отображение непрерывной поверхности

В результате получается график, представленный на рис. 3.12.

Рис. 3.11. Результат работы функции mesh()

Рис. 3.12. Результат работы функции surf()

Функция surf() может использоваться в режиме

shading interp; % интерполяция тени на гранях графика

которая интерполирует цвет на гранях для получения более гладкого изображения поверхности (рис. 3.13). Также существует возможность менять цветовую карту отображения графика с помощью функции

colormap( ); % установка цветовой карты

Например, карта с именем hot, используемая по умолчанию может быть заменена на любую другую доступную (hot, hsv, gray, pink, cool, bone copper) или созданную самостоятельно.

Читать еще:  Средства защиты баз данных

Рис. 3.13. Результат работы функции surf() в режиме shading interp

Следует отметить, что все три функции plot3(), mesh() и surf() могут быть использованы и с одним аргументом Z, который интерпретируется как матрица со значениями точек по оси Oz.

Для масштабирования отдельных участков трехмерных графиков, также как и в случае с двумерными графиками, используется функция

axis([xmin xmax ymin ymax zmin zmax]);

с очевидным набором параметров.

Для оформления трехмерных графиков можно пользоваться описанными ранее функциями: text, xlabel, ylabel, zlabel, title, grid [on/off], subplot.

Наконец, для трёхмерных графиков существует возможность изменять точку их обзора, т.е. положение виртуальной камеры с помощью функции

где az – угол азимута; el – угол возвышения. Изменение первого угла означает вращение плоскости xOy вокруг оси Oz против часовой стрелки. Угол возвышения есть угол между направлением на камеру и плоскостью xOy.

© 2020 Научная библиотека

Копирование информации со страницы разрешается только с указанием ссылки на данный сайт

Matlab 3d график

3. Трёхмерная графика .

Графики функций двух переменных представляют из себя куски поверхностей, нависающие над областями определения функций. Отсюда ясно, что изображение графиков функций двух переменных требует реализации «трёхмерной графики» на пл оском экране дисплея компьютера.

Высокоуровневая графическая подсистема MATLABа автоматически реализует трёхмерную графику без специальных усилий со стороны пользователя. Пусть в точке с координатами x1,y1 вычислено значение функции z=f(x,y) и оно равно z1. В некоторой другой точке (то есть при другом значении аргументов) x2,y2 вычисляют значение функции z2. Продолжая этот процесс, получают массив (набор) точек (x1,y1,z1), (x2,y2,z2), (xN,yN,zN) в количестве N штук, расположенных в трёхмерном пространстве. Специальные функции системы MATLAB проводят через эти точки гладкие поверхности и отображают их проекции на плоский дисплей компбютера.

Чаще всего точки аргументов расположены в области определения функции регулярно в виде прямоугольной сетки (то есть матрицы). Такая сетка точек порождает две матрицы одной и той же структуры: первая матрица содержит значения первых координат этих точек (x — координат), а вторая матрица содержит значения вторых координат (y — координат). Обозначим первую матрицу как X, а вторую — как Y. Есть ещё и третья матрица — матрица значений функции z=f(x,y)при этих аргументах. Эту матрицу обозначим буквой Z.

Простейшей функцией построения графика функции двух переменных в системе MATLAB является функция

plot3( X , Y , Z )

где X, Y и Z — матрицы одинаковых размеров, смысл которых мы только что объяснили.

В системе MATLAB имеется специальная функция для получения двумерных массивов X и Y по одномерным массивам x, y.

Пусть по оси x задан диапазон значений в виде вектора

u = -2 : 0.1 : 2

а по оси y этот диапазон есть

Для получения матриц X и Y, представляющих первые и вторые координаты получающейся прямоугольной сетки точек используют специальную функцию системы MATLAB:

[ X , Y ] = meshgrid( u, v )

Как мы видим, эта функция получает на входе два одномерных массива (вектора), представляющие массивы точек на осях координат, и возвращает сразу два искомых двумерных массива. На прямоугольной сетке точек вычисляем значения функции, например функции exp:

Z = exp( — X.^2 — Y.^2 )

Наконец, применяя описанную выше функцию plot3,получаем следующее изображение трёхмерного графика этой функции:

Из этого рисунка видно, что функция plot3 строит график в виде набора линий в пространстве, каждая из которых является сечением трёхмерной поверхности плоскостями, параллельными плоскости yOz. По-другому можно сказать, что каждая линия получается из отрезков прямых, соединяющих набор точек, координаты которых берутся из одинаковых столбцов матриц X, Y и Z. То есть, первая линия соответствует первым столбцам матриц X, Y Z; вторая линия — вторым столбцам этих матриц и так далее.

Для построения трёхмерных линий, задаваемых параметрически применяется другая форма вызова функции plot3:

plot3( x, y, z )

где x, y и z являются одномерными массивами координат точек, которые и нужно последовательно соединить отрезками прямых. Например, следующий фрагмент кода

Читать еще:  Matlab два графика в одном окне

t = 0 : pi/50 : 10*pi ;

x = sin( t );

y = cos( t );

plot3( x , y , t );

grid on

где применена известная по плоским графикам команда

grid on

для проставления сетки координатных значений в области построения графика (также допустимо использовать команды и функции по оформлению графиков, ранее рассмотренные для «плоского» случая), позволяет построить винтовую линию, изображение которой показано на следующем рисунке:

Помимо этой простейшей функции система MATLAB располагает ещё рядом функций, позволяющих добиваться большей реалистичности в изображении трёхмерных графиков. Это функции mesh, surf и surfl.

Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции

exp( — X.^2 — Y.^2 )

можно получить вот такое изображение

Для лучшего восприятия «объёмности» изображения разные рёбра автоматически окрашиваются в разные цвета. Кроме того (в отличие от функции plot3) осуществляется удаление невидимых линий. Если вы считаете, что изображённое ребристое тело является прозрачным и не должно скрывать задних линий, то можно ввести команду hidden off , после чего такие линии появятся на изображении. Более плотного изображения поверхности можно добиться, если вместо

функции mesh применить функцию surf( X, Y, Z ).

В результате получается следующее изображение представляющее плотную (непрозрачную) сетчатую поверхность, причём отдельные ячейки (грани) этой сетчатой поверхности (плоские четырёхугольники) автоматически окрашиваются в разные цвета.

С помощью функции surf получаются хотя и искусственно раскрашенные, но весьма наглядные изображения. Если же мы хотим добиться более естественных и объективных способов окрашивания поверхностей, то следует использовать функцию surfl.

Функция surfl трактует поверхность графика как материальную поверхность с определёнными физическими свойствами по отражению света. По умолчанию задаётся некоторый источник света, освещающий такую материальную поверхность, после чего рассчитываеются траектории отражённых лучей, попадающих в объектив условной камеры. Изображение в такой камере и показывается в графическом окне системы MATLAB.

Так как разные материалы по-разному отражают падающие лучи, то можно подобрать некоторый материал, чтобы получить наилучшее (с точки зрения пользователя) изображение. В частности, можно использовать функцию

colormap( copper )

с помощью которой для изображения графика выбирается набор цветов (по-английски — 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 задан вектор

u = -2 : 0.1 : 2 ,

а по оси y диапазон

Для получения матриц X и Y, содержащих значения точек в этой прямоугольной сетке, используется функция:

[ X, Y ] = meshgrid( u, v )

Вычислим теперь на полученной прямоугольной сетке значение функции exp:

Z = exp( — X.^2 — Y.^2 )

Теперь применим функцию plot3, которая была описана выше, и получим следующий график:

Чтобы построить трехмерные линии, заданные параметрически, применяется другая форма вызова функции plot3:

Читать еще:  Пакеты расширения matlab

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

Причем следует отметить, что функции по обработке графиков, допустимые в двумерном случае, работают и для трехмерных изображений.

Кроме этой простейшей функции построения графиков в MATLAB есть набор инструментов, позволяющий сделать отображаемые объекты более наглядными. Это функции mesh, surf и surfl.

Функция mesh соединяет вычисленные соседние точки поверхности графика отрезками прямых и показывает в графическом окне системы MATLAB плоскую проекцию такого объёмного «каркасно-ребристого» ( по-английски зовётся wireframe mesh) тела. Вместо ранее показанного при помощи функции plot3 графика функции

Mesh соединяет соседние вычислительные точки отрезками, причем невидимые линии при отображении скрываются. Если же такие линии для отображения необходимы, нужно воспользоваться командой.

Для примера рассмотрим использование функции mesh в случае построения того же графика функции

exp( — X.^2 — Y.^2 )

Вызов же функции

позволяет получить следующее изображение, представляющее собой поверхность, а не набор линий.

Раскрашивание отдельных элементов поверхности в этом случае производится автоматически. Если же раскрасить их необходимо по-другому, лучше всего воспользоваться функцией surfl.

Эта функция воспринимает построенную поверхность как материальную, обладающую определенными свойствами. По умолчанию она задает некоторый источник света, после чего рассчитывает траектории отраженных от поверхности лучей. Таким образом, если задать условные параметры материала поверхности, например:

colormap( copper ) ,

то есть набор цветов (colormap), соответствующий меди (copper), то после вызова функции

surfl( X, Y, Z )

мы получим следующий график:

Убрать черные линии и добиться более лпавного света позволяет команда

3D-построения в MatLab

Презентация, демонстрирующая виды 3D-построений в программе MatLab. Код программ и графики построений.

Содержимое разработки

3D-построения в MatLab

Выполнила: студентка 5 курса группы МДИ – 112 Слепцова Ю.

Проверила: Кормилицына Т.В.

  • Трехмерные поверхности обычно описываются функцией двух переменных z(x, у).
  • Специфика построения трехмерных графиков требует не просто задания ряда значений х и у, то есть векторов х и у. Она требует определения для X и Y двумерных массивов – матриц.

Построение графиков поверхностей в MatLab

Рисунок 1 – Построение трехмерной поверхности, описываемой функцией z(х.у)=х^2+у^2

Рисунок 2 – График поверхности, построенный линиями

Рисунок 3 – Код графика поверхности, построенной кружками

  • Рисунок 4 – График поверхности, построенный разноцветными кружками

Рисунок 5 – Код графика поверхности

  • plot3(xl ,yl.zl, sl.х2,у2.z2. s2. хЗ,уЗ.z3,s3. ) – строит на одном рисунке графики нескольких функций

Рисунок 5 – Код графика поверхности

Рисунок 6– График функции в сетчатом представлении

Сетчатые 3D-графики с окраской MatLab

Рисунок 7 – Код графика поверхности созданной командой mesh(X.Y.Z)

Рисунок 8 – График поверхности, созданный командой mesh(X,Y,Z)

Сетчатые 3D-графики с проекциями MatLab

Рисунок 10 – Код применения функции meshc(. )

Рисунок 11 – График поверхности и ее проекции на расположенную ниже плоскость

Построение поверхности столбцами MatLab

Рисунок 12 – Построение поверхности столбцами

Рисунок 13 – Построение поверхности столбцами сверху

Построение поверхности с окраской MatLab

    » [X.Y]=meshgr >Рисунок 14 ­– График параболоида с функциональной окраской ячеек

    » [X,Y]=meshgr >Рисунок 15 –­ График поверхности с функциональной окраской серым цветом

Построение поверхности и ее проекции MatLab

    » [X.Y]=meshgr >Рисунок 17 – График функции peaks с проекцией и шкалой цветов

Построение графиков функций трех переменных MatLab

    » [X.Y]=meshgr >Рисунок 18 – Трехмерная слоеная поверхность

Tрехмерные контурные графики MatLab

Рисунок 19 – Трехмерный контурный график для функции peaks

Окраска поверхностей MatLab

Рисунок 20 – Пример применения команды pcolor

Окрашенные многоугольники в пространстве MatLab

Рисунок 21 – Закрашенные многоугольники в пространстве

Рисунок 22 – Объемная круговая диаграмма

Рисунок 23 ­ – Построение цилиндра

  • » х = rand(1,40);
  • » у = rand(1,40);
  • » z = sin(x.^y);
  • » tri = delaunay(x,y);
  • » tnmesh(tri .x.y.z)

Рисунок 26 – Один из рисунков, построенных командой trisurf

Ссылка на основную публикацию
Adblock
detector