Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция 2. Графическая визуализация результатов вычисления

..pdf
Скачиваний:
183
Добавлен:
28.03.2016
Размер:
491.04 Кб
Скачать

Лекция 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