Лекция 2. Графическая визуализация результатов вычисления
..pdfЛекция 2 |
|
Лекция 2. Графическая визуализация результатов вычисления. |
|
1. Основы двумерной графики. ................................................................................................................ |
1 |
1.1. Построение графиков в декартовой системе координат. ......................................................... |
1 |
1.2. Построение графиков в полярной системе координат. ............................................................ |
4 |
1.3. Прочие возможности 2D-визуализации. ....................................................................................... |
4 |
Графики в логарифмическом и полулогарифмическом масштабе. ...................................................... |
4 |
Столбцовые диаграммы.......................................................................................................................... |
5 |
Гистограммы. .......................................................................................................................................... |
5 |
2. Основы трехмерной графики................................................................................................................ |
6 |
2.1. Создание массивов данных для трехмерной графики.............................................................. |
6 |
2.2. Графики поверхностей. ................................................................................................................... |
6 |
2.3. Сетчатые 3D-графики с окраской................................................................................................... |
7 |
2.4. Улучшенные средства визуализации 3D-графики...................................................................... |
9 |
3. Оформление и форматирование графики........................................................................................ |
10 |
3.1. Текстовое оформление графиков. .............................................................................................. |
10 |
3.2. Форматирование графиков........................................................................................................... |
10 |
Вывод пояснений и легенды. ................................................................................................................ |
10 |
Управление свойствами осей графиков. .............................................................................................. |
10 |
Включение и выключение сетки. ......................................................................................................... |
11 |
Наложение графиков друг на друга...................................................................................................... |
11 |
Разбиение графического окна. .............................................................................................................. |
11 |
Установка палитры цветов................................................................................................................... |
12 |
Окраска поверхностей. ......................................................................................................................... |
13 |
В результате вычислений в системе MATLAB обычно получается большой массив данных, который трудно анализировать без наглядной визуализации. Одно из достоинств системы MATLAB – обилие средств графики, начиная от команд построения простых графиков функций одной переменной в декартовой системе координат и кончая комбинированными и презентационными графиками с элементами анимации, а также средствами проектирования графического пользовательского интерфейса (GUI). Особое внимание в системе уделено трехмерной графике с функциональной окраской отображаемых фигур и имитацией различных световых эффектов.
Графические возможности системы MATLAB являются очень мощными и разнообразными. В первую очередь целесообразно изучить наиболее простые в использовании возможности. Их часто называют высокоуровневой графикой. Это название отражает тот приятный факт, что пользователю нет никакой необходимости вникать во все тонкие и глубоко спрятанные детали работы с графикой.
1.Основы двумерной графики.
1.1.Построение графиков в декартовой системе координат.
Функции одной переменной находят широкое применение в практике математических и других расчетов, а также в технике компьютерного математического моделирования. Для отображения функций вида у(х) используются графики в декартовой (прямоугольной) системе координат. Поскольку MATLAB – матричная система, совокупность точек у(х) задается векторами X и Y одинакового размера.
Команда plot служит для построения графиков функций в декартовой системе координат. Эта команда имеет различные форматы вызова, рассматриваемые ниже.
•plot(X,Y) – строит график функции у(х), координаты точек (х,у) которой берутся из векторов одинакового размера Y и X. Если X или Y – матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.
Пример построения графика функций – у(х)=sin(x):
1
Лекция 2
>>X=-pi:0.1:pi;
>>Y=sin(X);
>>plot(X,Y)
График функций для этого примера показан на рис. 1. Сразу бросается в глаза тот факт, что очень большую работу MATLAB берет на себя. Мы в командной строке ввели лишь одну функцию plot(X,Y), а система сама создала графическое окно, построила оси координат, вычислила диапазоны изменения переменных X и Y; поставила на осях метки и соответствующие им числовые значения, провела через опорные точки график функции некоторым, выбранным по умолчанию, цветом; в заголовке графического окна надписала номер графика в текущем сеансе работы. К этому следует добавить, что у графического окна имеется меню и собственная панель инструментов, которые дают пользователю широкие возможности выполнять различные операции над графиком (например, масштабировать, форматировать, сохранять в различные графические форматы и пр.).
Рис. 1. Графическое окно и график функций у(х)=sin(x).
•plot(Y) – строит график функции у(k), где значения у берутся из вектора Y, а k представляет собой индекс соответствующего элемента. Если у содержит комплексные элементы, то выполняется команда plot(real(Y), imag(Y)). Во всех других случаях мнимая часть данных игнорируется.
•plot(X,Y,S) – аналогична команде plot(X,Y), но тип линии графика можно задавать с помощью строковой константы S. Значениями константы S могут быть следующие символы.
Таким образом, с помощью строковой константы S можно изменять цвет линии, представлять узловые точки различными отметками (точка, окружность, крест, треугольник с разной ориентацией вершины и т. д.) и менять тип линии графика.
2
Лекция 2
|
Цвет |
|
Тип маркера |
|
|
|
|
y |
Желтый |
. |
Точка |
|
|
|
|
m |
Розовый |
o |
Кружок |
|
|
|
|
c |
Голубой |
x |
Крестик |
|
|
|
|
r |
Красный |
+ |
Знак плюс |
|
|
|
|
g |
Зеленый |
* |
Звездочка |
|
|
|
|
b |
Синий |
s |
Квадрат |
|
|
|
|
w |
Белый |
d |
Ромб |
|
|
|
|
k |
Черный |
v |
Треугольник вершиной вниз |
|
|
|
|
|
Тип линии |
^ |
Треугольник вершиной вверх |
|
|
|
|
- |
Сплошная |
< |
Треугольник вершиной влево |
|
|
|
|
: |
Пунктирная |
> |
Треугольник вершиной вправо |
|
|
|
|
-. |
Штрих-пунктирная |
p |
Пятиконечная звезда |
|
|
|
|
-- |
Штриховая |
h |
Шестиконечная звезда |
|
|
|
|
Например, вызов команды plot(X,Y,'c+:') построит график функций пунктирной линией голубого цвета со звездочками. При этом следует отметить, что порядок символов в строковой константе не имеет значение.
•plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) – эта команда позволяет строить сразу несколько графиков различным цветом и стилем в рамках одних и тех же осей координат. При отсутствии указания на цвет линий и точек он выбирается автоматически из таблицы цветов (белый исключается). Если линий больше шести, то выбор цветов повторяется.
Рассмотрим пример построения графиков трех функций с различным стилем представления каждой из них. Графики функций для этого примера показаны на рис. 2.
>>x=-2*pi:0.1*pi:2*pi;
>>y1=sin(x);
>>y2=sin(x).^2;
>>y3=sin(x).^3;
>>plot(x,y1,'-m',x,y2,'-.+r',x,y3,'-ok')
Рис. 2. Построение графиков трех функций на одном рисунке с разным стилем линий.
3
Лекция 2
1.2. Построение графиков в полярной системе координат.
В полярной системе координат любая точка представляется как конец радиус-вектора, исходящего из начала системы координат, имеющего длину r и угол φ. Для построения графика функции r(φ) используются приведенные ниже команды. Угол φ обычно меняется от 0 до 2*pi. Для построения графиков функций в полярной системе координат используются команды типа polar:
•polar(phi,r) – строит график в полярной системе координат, представляющий собой положение конца радиус-вектора с длиной r и углом phi;
•polar(phi,r,S) – аналогична предыдущей команде, но позволяет задавать стиль
построения с помощью строковой константы S по аналогии с командой plot. Рисунок 3 демонстрирует результат выполнения команд:
>>t=0:pi/50:2*pi;
>>polar(t,sin(5*t))
Рис. 3. Построение графиков трех функций на одном рисунке с разным стилем линий.
1.3. Прочие возможности 2D-визуализации.
В данном разделе мы кратко рассмотрим некоторые другие возможности 2D визуализации. Подробную информацию по использованию этих функций всегда можно получить при помощи команды help.
Графики в логарифмическом и полулогарифмическом масштабе.
Для построения графиков функций со значениями x и y, изменяющимися в широких пределах, нередко используются логарифмические масштабы. Рассмотрим команды, которые используются в таких случаях.
•loglog(...) – логарифмический масштаб используется для координатных осей X и Y.
Внекоторых случаях предпочтителен полулогарифмический масштаб графиков, когда по одной оси задается логарифмический масштаб, а по другой – линейный. Для построения графиков функций
вполулогарифмическом масштабе используются следующие команды:
•semilogx(...) – строит график функции в логарифмическом масштабе (основание 10) по оси X и линейном по оси Y;
•semilogy(...) – строит график функции в логарифмическом масштабе по оси Y и линейном по оси X.
4
Лекция 2
Запись параметров (...) во всех трех функциях выполняется по аналогии с функцией plot(...).
В системе MATLAB, кроме описанных функций имеется так называемая специальная графика, направленная в первую очередь не на выявление функциональных зависимостей между переменными, а на визуализацию информации, накопленной в виде больших массивов числовых данных.
Столбцовые диаграммы.
Для визуализации данных, накопленных в массивах, хорошо подходит специальная графическая функция системы MATLAB bar(...). Примеры ее использования на рисунке 4.
Рис. 4. Примеры использования функции bar(...).
Гистограммы.
Для построения гистограммы служит функция hist(...). Пример:
Рис. 5. Пример использования функции hist(...).
5
Лекция 2
2.Основы трехмерной графики.
2.1.Создание массивов данных для трехмерной графики.
Возможности отображения трехмерных графических объектов в системе MATLAB весьма обширны. В частности, имеется возможность решать разнообразные задачи трехмерного моделирования объектов реального мира. Это исключительно обширный раздел современной компьютерной графики, для более-менее подробного изложения которого требуется отдельный курс. Мы же сосредоточимся на изображении графиков двух переменных, которые представляют из себя поверхности в пространстве.
Трехмерные поверхности обычно описываются функцией двух переменных z(x,y). Специфика построения трехмерных графиков требует не просто задания ряда значений х и у, то есть векторов х и y. Она требует определения для X и Y двумерных массивов – матриц. Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid записывается в следующих формах:
•[X,Y]=meshgrid(х,у) – преобразует область, заданную векторами x и y, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора x; а столбцы Y – копиями вектора y;
•[X,Y]=meshgrid(x) – аналогична [X,Y]=meshgrid(x,x);
[X,Y]=meshgrid(1:6,11:14) |
|
|
|||
X = |
2 |
3 |
4 |
5 |
6 |
1 |
|||||
1 |
2 |
3 |
4 |
5 |
6 |
1 |
2 |
3 |
4 |
5 |
6 |
1 |
2 |
3 |
4 |
5 |
6 |
Y = |
11 |
11 |
11 |
11 |
11 |
11 |
|||||
12 |
12 |
12 |
12 |
12 |
12 |
13 |
13 |
13 |
13 |
13 |
13 |
14 |
14 |
14 |
14 |
14 |
14 |
2.2. Графики поверхностей.
Простейшей функцией в системе MATLAB для построения трехмерных поверхностей – функция plot3(...), которая является аналогом команды plot(...), но относится к функции двух переменных z{x,y). Она строит аксонометрическое изображение трехмерных поверхностей и представлена следующими формами:
•plot3(X,Y,Z), где X, Y и Z - три матрицы одинакового размера, строит точки с координатами X(k,:), Y(k,:) и Z(k,:) и соединяет их отрезками прямых. Ниже дан пример построения трехмерной поверхности, описываемой функцией z(х, у)=х^2+у^2:
>>[X,Y]=meshgrid([-3:0.15:3]);
>>Z=X.^2+Y.^2;
>>plot3(X,Y,Z)
График этой поверхности показан на рис. 6.
•plot3(X,Y,Z,S) – обеспечивает построения, аналогичные рассмотренным ранее, но со спецификацией стиля линий и точек, соответствующей спецификации команды plot.
•plot3(X1,Y1,Z1,S1,X2,Y2,Z2,S2,X3,Y3,Z3,S3,...) – строит на одном рисунке графики z1(x1,y1), z2(x2,y2) и т.д. со спецификацией линий и маркеров каждой из них.
6
Лекция 2
Рис. 6. Пример использования функции plot3(...).
2.3. Сетчатые 3D-графики с окраской.
Наиболее представительными и наглядными являются сетчатые графики поверхностей с заданной или функциональной окраской. В названии их команд присутствует слово mesh. Имеется три группы таких команд. Ниже приведены данные о наиболее полных формах этих команд. Наличие более простых форм можно уточнить, используя команду help.
•mesh(X,Y,Z) – выводит в графическое окно сетчатую поверхность Z(X,Y). При этом используется функциональная окраска узлов, при которой цвет задается высотой поверхности. Ниже приводится пример применения команды mesh:
>>[X,Y]=meshgrid([-3:0.15:3]);
>>Z=X.^2+Y.^2;
>>mesh(X,Y,Z)
Рис. 7. Пример использования функции mesh(...).
7
Лекция 2
Нетрудно заметить, что функциональная окраска линий поверхности заметно усиливает наглядность ее представления.
Иногда график поверхности полезно объединить с контурным графиком ее проекции на плоскость, расположенным под поверхностью. Для этого используется команда meshc:
•meshc(...) – аналогична mesh(...), но помимо графика поверхности дает изображение ее проекции в виде линий равного уровня (графика типа contour). Предыдущий пример с использованием функции meshc представлен на рис. 8.
Рис. 8. Пример использования функции meshc(...).
Еще один тип представления поверхности, когда она строится из многочисленных столбцов, дают команды класса meshz:
•meshz(...) – аналогична mesh(...), но строит поверхность как бы в виде столбиков. Предыдущий пример с использованием функции meshz представлен на рис. 9.
Рис. 9. Пример использования функции meshz(...).
8
Лекция 2
2.4. Улучшенные средства визуализации 3D-графики.
Особенно наглядное представление о поверхностях дают сетчатые графики, использующие функциональную закраску ячеек. Например, цвет окраски поверхности z(x,y) может быть поставлен в соответствие с высотой z поверхности с выбором для малых высот темных тонов, а для больших – светлых. Для построения таких поверхностей используются функции surf и surfc предназначение и формат вызова которых эквивалентны функциям mesh и meshc. Для примера приведем результат использования функции surfc (рис. 10).
Рис. 10. Пример использования функции surfc(...).
Пожалуй, наиболее реалистичный вид имеют графики поверхностей, в которых имитируется освещение от точечного источника света, расположенного в заданном месте координатной системы. Графики имитируют оптические эффекты рассеивания, отражения и зеркального отражения света. Для получения таких графиков используется команда surfl. Формат вызова этой функции рекомендуем изучить с помощью команды help. Пример использования этой функции на рис. 11.
Рис. 11. Пример использования функции surfl(...).
9
Лекция 2
3.Оформление и форматирование графики.
3.1.Текстовое оформление графиков.
После того как график уже построен, MATLAB позволяет выполнить его форматирование или оформление в нужном виде. Соответствующие этому средства описаны ниже.
•title('string') – установка на двумерных и трехмерных графиках титульной надписи, заданной строковой константой 'string'.
•Для установки надписей возле осей х, у и z используются следующие команды: xlabel('String')
ylabel('String')
zlabel('String')
Часто возникает необходимость добавления текста в определенное место графика, например для обозначения той или иной кривой графика. Для этого используется команда text:
•text(X,Y,'string') – добавляет в двумерный график текст, заданный строковой константой 'string', так что начало текста расположено в точке с координатами (X,Y).
•text(X,Y,Z,'string') – добавляет в трехмерный график текст, заданный строковой константой 'string', так что начало текста расположено в позиции, заданной координатами
X, Y и Z.
3.2.Форматирование графиков.
Вывод пояснений и легенды.
Пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него, называется легендой. Для создания легенды используются различные варианты команды legend. Некоторые из них:
•legend(stringl,string2,string3,...) – добавляет к текущему графику легенду в виде строк, указанных в списке параметров;
•legend OFF – устраняет ранее выведенную легенду;
•legend – перерисовывает текущую легенду, если таковая имеется;
•legend(...,Pos) – помещает легенду в точно определенное место, специфицированное параметром Pos:
Pos=0 – лучшее место, выбираемое автоматически;
Pos=l – верхний правый угол;
Pos=2 – верхний левый угол;
Pos=3 – нижний левый угол;
Pos=4 – нижний правый угол;
Pos=-1 – справа от графика;
Управление свойствами осей графиков.
Обычно графики выводятся в режиме автоматического масштабирования. Следующие команды класса axis меняют эту ситуацию:
•axis([XMIN XMAX YMIN YMAX]) – установка диапазонов координат по осям х и у для текущего двумерного графика;
•axis([XMIN XMAX YMIN YMAX ZMIN ZMAX]) – установка диапазонов координат по осям х, у и z текущего трехмерного графика;
•axis auto – установка параметров осей по умолчанию;
10