Progress-servis55.ru

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

3d графики в matlab

3d графики в matlab

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 являются одномерными массивами координат точек, которые и нужно последовательно соединить отрезками прямых. Например, следующий фрагмент кода

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

x = sin( t );

y = cos( t );

plot3( x , y , t );

grid on

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

grid on

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

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

Читать еще:  Matlab работа с файлами

Функция 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

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

Документация

2D и 3D-графики

Линейные графики

Чтобы построить двумерные графики, используйте plot функция. Например, постройте значение синусоидальной функции от 0 до 2 π :

Можно подписать оси и добавить заголовок.

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

‘r—‘ спецификация линии . Каждая спецификация может включать символы для цвета линии, стиля и маркера. Маркером является символ, который появляется в каждой нанесенной на график точке данных, такой как + O , или * . Например, ‘g:*’ задает рисование зеленых точек линии с * маркеры.

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

Чтобы добавить графики в существующее окно рисунка, используйте hold on . Пока вы не используете hold off или закройте окно, все графики появляются в окне текущей фигуры.

Читать еще:  Решение системы уравнений matlab

3-D Графики

Трехмерные графики обычно отображают поверхность, заданную функцией двух переменных,z = f (x, y).

Чтобы вычислить z, сначала создайте множество (x, y) точек в области определения функции с помощью meshgrid .

Затем создайте объемную поверхностную диаграмму.

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

Подграфики

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

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

Открытый пример

У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?

Документация MATLAB
Поддержка

© 1994-2020 The MathWorks, Inc.

1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.

2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.

3. Сохраняйте структуру оригинального текста — например, не разбивайте одно предложение на два.

4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.

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

Построение трехмерных графиков в 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:

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 графика функции

Читать еще:  Команды в matlab

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