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

ГРАФИЧЕСКИЕ СРЕДСТВА В MATLAB

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

1 ИЗМЕНЕНИЕ СВОЙСТВ ПРЕДСТАВЛЕНИЯ ГРАФИКОВ

Поскольку MATLAB – матричная программа, то ее графические команды могут разнообразными способами визуализировать результат обработки векто-

ров и матриц.

MATLAB предоставляет возможность управлять видом графиков, построенных при помощи plot, loglog, semilogx, semilogy, для чего служит ар-

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

тип маркера и тип линии. В табл.1 приведены возможные значения данного ар-

гумента с указанием результата.

Таблица 1 Свойства линии

 

Цвет

 

Тип маркера

 

Тип линии

y

желтый

.

точка

 

 

 

 

o

кружок

-

сплошная

 

 

x

крестик

 

 

 

 

c

голубой

+

знак "плюс"

 

 

 

 

*

звездочка

 

 

 

 

s

квадрат

 

 

g

зеленый

d

ромб

:

пунктирная

 

 

v

треугольник верши-

 

 

 

 

 

ной вниз

 

 

b

синий

^

треугольник верши-

 

 

 

 

 

ной вверх

 

 

 

 

<

треугольник верши-

-.

штрих-

r

красный

 

ной влево

пунктирная

 

 

 

 

>

треугольник верши-

 

 

 

 

 

ной вправо

 

 

w

белый

p

пятиконечная звезда

 

 

 

 

 

 

--

штриховая

k

черный

h

шестиконечная звезда

 

 

 

 

 

 

 

 

1

Графические средства в MATLAB

Например, в результате выполнения команд

>>x = -1 : 0.005 : -0.3;

>>f = sin(x.^-2);

>>g = sin(1.2*x.^-2);

>>plot(x, f, 'k-', x, g, 'k:')

первый график изображается сплошной черной линией, а второй – черной пунктирной (рис.1). Аргументы 'k-' и 'k:' задают стиль и цвет первой и вто-

рой линий. Здесь k означает черный цвет, а дефис или двоеточие – сплошную или пунктирную линию.

Рис. 1 Пример изменения стиля графиков

С помощью дополнительных параметров или функций можно задать эле-

менты оформления графиков – координатной сетки, подписей к осям, заголовка и легенды.

Сетка наносится командой grid on. Функции xlabel, ylabel служат для размещения подписей к осям. Функция title – для размещения заголовка. При необходимости сопроводить график легендой следует использовать функцию legend. Все перечисленные команды применимы к графикам как в линейном,

так и в логарифмическом масштабах.

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

формацией:

>>time = [0 4 7 9 10 11 12 13 13.5 14 14.5 15 16 17 18 20 22];

>>temp1 = [14 15 14 16 18 17 20 22 24 28 25 20 16 13 13 14 13];

>>temp2 = [12 13 13 14 16 18 20 20 23 25 25 20 16 12 12 11 10];

2

Графические средства в MATLAB

>>plot(time, temp1, 'ro-', time, temp2, 'go-')

>>grid on

>>title('Суточные температуры')

>>xlabel('Время (час.)')

>>ylabel('Температура (C)')

>>legend('10 мая', '11 мая')

 

 

 

Суточные температуры

 

 

 

28

 

 

 

 

 

 

 

 

 

 

 

10 мая

 

26

 

 

 

 

11 мая

 

24

 

 

 

 

 

(C)

22

 

 

 

 

 

 

 

 

 

 

 

Температура

20

 

 

 

 

 

18

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

12

 

 

 

 

 

 

100

5

10

15

20

25

 

 

 

Время (час.)

 

 

 

Рис. 2 График изменения суточной температуры

При размещении легенды следует учитывать, что порядок и количество аргументов команды legend должны соответствовать линиям на графике. По-

следним дополнительным аргументом legend может быть положение легенды

вграфическом окне:

-1 – вне графика в правом верхнем углу графического окна,

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

1 – в верхнем правом углу графика (это положение используется по умолчанию),

2 – в верхнем левом углу графика,

3 – в нижнем левом углу графика,

4 – в нижнем правом углу графика.

3

Графические средства в MATLAB

2 ГРАФИКИ ПАРАМЕТРИЧЕСКИХ И КУСОЧНО-ЗАДАННЫХ ФУНКЦИЙ

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

ния функций и записать их в векторы, которые и надо использовать в качестве аргументов plot. Например, формирование графика функции x t 0.5 sin t , y t 0.7 cos t для t 0,2 - эллипс (рис.3):

>>t = 0 : 0.01 : 2*pi;

>>x = 0.5*sin(t);

>>y = 0.7*cos(t);

>>plot(x, y)

0.8

 

 

0.6

 

 

0.4

 

 

0.2

 

 

0

 

 

-0.2

 

 

-0.4

 

 

-0.6

 

 

-0.8

 

 

-0.5

0

0.5

Рис. 3 График функции, заданной параметрически

Пример формирования графика кусочно-заданной функции:

sin x, 2 x ; y x x , x ;

sin3 x, x 2 .

Вначале вычисляется каждая из трех ветвей, т.е. формируются три пары массивов x1 и y1, x2 и y2, x3 и y3, значения абсцисс объединяются в вектор x, а

ординат - в y и выводится график функции, задаваемой парой массивов x и y:

>>x1 = -2*pi : pi/30 : -pi;

>>y1 = pi*sin(x1);

>>x2 = -pi : pi/30 : pi;

>>y2 = pi-abs(x2);

>>x3 = pi : pi/30 : 2*pi;

>>y3 = pi*sin(x1).^3;

4

Графические средства в MATLAB

>>x = [x1 x2 x3];

>>y = [y1 y2 y3];

>>plot(x, y)

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

3.5

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

2.5

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-0.5

 

 

 

 

 

 

 

 

-8

-6

-4

-2

0

2

4

6

8

Рис. 4 График функции, заданной кусочным способом

Можно также построить графики трех ветвей как три различные функ-

ции, указав каждую своим цветом и маркером (рис.5):

 

 

 

>> plot(x1, y1, 'r+', x2, y2, 'kx', x3, y3, 'bs')

 

 

 

3.5

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

2.5

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-0.5

 

 

 

 

 

 

 

 

-8

-6

-4

-2

0

2

4

6

8

Рис.5 График функции, заданной кусочным способом

с разным цветом и маркером ветвей

 

 

3 УПРАВЛЕНИЕ ВИЗУАЛИЗАЦИЕЙ ТРЕХМЕРНЫХ ГРАФИКОВ

Например, на прямоугольной области определения x

 

 

,

y 0,1

 

1,1

 

сформирован график функции z x, y 4 sin 2 x cos1.5 y 1 x2 y 1 y с по-

мощью следующего набора команд (рис.6а):

5

Графические средства в MATLAB

>>[X, Y] = meshgrid(-1 : 0.05 : 1, 0 : 0.05 : 1);

>>Z = 4*sin(2*pi*X).*cos(1.5*pi*Y).*(1-X.^2).*Y.*(1-Y);

>>mesh(X, Y, Z)

По умолчанию рисуется только видимая часть поверхности. При помощи

команды hidden off

можно сделать каркасную поверхность "прозрачной"

(рис.6Рис. б). Команда

hidden on убирает невидимую часть поверхности,

возвращая графику прежний вид.

1

1

0.5

0.5

0

0

-0.5

-0.5

-1

-1

1

1

 

1

 

1

0.5

0.5

0.5

0.5

0

0

 

 

 

-0.5

 

-0.5

 

0 -1

 

0 -1

а) б)

Рис. 6 Варианты каркасной поверхности графика

Функция surf строит каркасную поверхность графика функции и за-

ливает каждую клетку поверхности определенным цветом, зависящим от зна-

чения функции в точках, соответствующих углам клетки. Команда

>> surf(X, Y, Z)

Приводит к графику, изображенному на рис.7а.

1

1

 

0.5

0.5

 

0

0

 

-0.5

-0.5

 

-1

-1

1

1

 

1

 

1

0.5

0.5

0.5

0.5

0

0

 

 

 

-0.5

 

-0.5

 

0 -1

 

0 -1

а) б)

Рис. 7 Варианты поверхности, залитой цветом

6

Графические средства в MATLAB

В переделах каждой клетки цвет постоянный. Команда shading flat поз-

воляет убрать каркасные линии. Для получения поверхности, плавно залитой цветом, зависящим от значения функции (рис.7б), предназначена команда shading interp. Вернуться к виду поверхности, изображенному на рис.7а, можно с помощью команды shading faceted.

Команда colorbar выводит рядом с графиком цветовую шкалу, устанав-

ливающую соответствие между цветом и значением функции (рис.8а). Эту ко-

манду можно применять в сочетании со всеми функциями, строящими трех-

мерные объекты:

>>surf(X, Y, Z)

>>colorbar

Возможно также формирование графика, содержащего линии уровня функции, т.е. линии постоянства значений функции на плоскости xy (рис.8б).

Для этого вместо команд mesh или surf надо использовать команды meshc или surfc соответственно:

>>surfc(X, Y, Z)

>>colorbar

 

 

 

0.8

 

 

0.8

 

 

 

 

 

 

 

 

 

0.6

1

 

0.6

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.4

 

 

0.4

0.5

 

 

 

0.5

 

 

 

 

 

0.2

 

 

0.2

0

 

 

 

0

 

0

 

 

 

0

 

 

-0.5

 

 

-0.2

-0.5

 

-0.2

 

 

 

 

 

-1

 

 

-0.4

-1

 

-0.4

1

 

 

 

1

 

 

 

 

1

-0.6

 

1

-0.6

 

 

0.5

 

0.5

0.5

 

 

0.5

 

 

0

 

0

 

 

 

-0.8

 

-0.8

 

-0.5

 

-0.5

 

 

 

 

 

 

0

-1

 

 

0 -1

 

 

 

а)

 

 

б)

 

 

Рис. 8 Примеры использования функций colorbar и

surfc

 

7

Графические средства в MATLAB

4 КОНТУРНЫЕ ГРАФИКИ

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

ние вектора удобно, когда требуется исследовать поведение функции в некото-

рой области ее значений. Например, на рис.9 показан результат формирования поверхности, состоящей из линий уровня, соответствующих значениям функ-

ции от 0 до 0.5 с шагом 0.01:

>>levels = 0 : 0.01 : 0.5;

>>contour3(X, Y, Z, levels)

>>colorbar

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

и contourf. Например, использование contour с тремя аргументами приводит

кграфику с линиями уровней на плоскости xy (рис.9б):

>>contour(X, Y, Z)

 

 

 

1

 

 

 

 

 

 

0.45

0.9

 

 

 

 

 

 

 

 

 

 

 

0.5

 

0.4

0.8

 

 

 

 

 

 

 

 

 

 

 

0.4

 

0.35

0.7

 

 

 

 

 

 

 

 

 

 

0.3

 

0.3

0.6

 

 

 

 

 

 

 

 

 

 

0.2

 

0.25

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.1

 

0.2

0.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.15

0.3

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0.1

0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

0.5

0.5

0.05

0.1

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0

-0.5

 

0

 

 

 

 

-1

 

-1

-0.5

0

0.5

1

а)

б)

Рис. 9 Графики среза (а) и линий уровней функции (б)

8

Графические средства в MATLAB

Каждую линию уровня можно снабдить ярлыком с соответствующим значением при помощи функции clabel, которая вызывается с двумя аргумен-

тами: матрицей, содержащей информацию о линиях уровня и указателем на график, на котором следует нанести разметку. Пользователю не нужно самому создавать аргументы clabel. Функция contour, вызванная с двумя выходными параметрами, не только строит линии уровня, но и находит для clabelпарамет-

ры. В следующем примере матрица CMatr содержит информацию о линиях уровня, а вектор h – указатели:

>>[CMatr, h] = contour(X, Y, Z);

>>clabel(CMatr, h)

>>grid on

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

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

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

пользования которой для графика, состоящего из двадцати линий уровня, пока-

зан на рис.10б:

>>contourf(X, Y, Z, 20)

>>colorbar

1

0

 

 

 

 

 

 

 

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

.

2

 

 

 

 

 

-

0

 

 

0.8

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

2

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

6

0

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

0

 

 

.

 

 

.

 

 

 

 

.

 

 

 

.

 

 

0

 

 

0

 

 

 

 

0

4

4

 

6

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

0.7

 

 

2

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0 -

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

-

 

 

 

4

 

0

 

.0

 

 

 

 

 

640

 

 

 

 

 

 

 

 

 

 

 

...

0

 

 

.

 

 

 

6

 

 

 

 

 

 

 

 

0.6

0

 

 

 

 

 

 

 

 

002 .

 

 

0

0

 

-

 

 

--

 

4

 

 

-

 

.

 

 

 

 

 

 

 

2

 

 

0

 

 

 

.

 

0

-0.8

 

 

 

 

 

4

8

2

 

 

 

.

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

0

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.2

 

 

 

 

 

 

 

 

 

 

 

 

 

0.4

-0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.3

 

 

0

 

 

 

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

0.1

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

0

 

 

 

 

0

 

 

-1

 

-0.5

 

 

 

 

0

 

 

 

0.5

 

1

1

 

 

 

 

0.9

 

 

 

0.6

0.8

 

 

 

0.4

 

 

 

 

0.7

 

 

 

 

 

 

 

 

0.2

0.6

 

 

 

 

0.5

 

 

 

0

 

 

 

 

0.4

 

 

 

-0.2

0.3

 

 

 

-0.4

 

 

 

 

0.2

 

 

 

 

 

 

 

 

-0.6

0.1

 

 

 

 

0

 

 

 

-0.8

 

 

 

 

-1

-0.5

0

0.5

1

а)

б)

Рис. 10 Графики с маркированными линиями (а)

и заливкой уровней (б)

9

Графические средства в MATLAB

5 ОФОРМЛЕНИЕ И ПОВОРОТ ГРАФИКОВ

При помощи функции colormap можно изменять цветовое оформление

графиков. Цветовые палитры, доступные в MATLAB, приведены в табл.2.

 

 

 

 

Таблица 2. Палитры цвета

Палитра

Изменение цвета

 

Палитра

Изменение цвета

autumn

Плавное изменение красный-

 

jet

Плавное изменение синий-

оранжевый-желтый

 

голубой-зеленый-желтый-красный

 

 

 

 

Аналогична палитре gray, но

 

 

Аналогична палитре gray, но с лег-

bone

с легким оттенком синего

 

pink

 

ким оттенком коричневого цвета

 

цвета

 

 

 

 

 

 

 

Каждый цвет изменяется от

 

 

Циклическое изменение красный-

colorcube

 

prism

оранжевый-желтый-зеленый-

темного к яркому

 

 

 

 

синий-фиолетовый

 

 

 

 

cool

Оттенки голубого и пурпур-

 

spring

Оттенки пурпурного и желтого

ного цветов

 

 

 

 

 

copper

Оттенки медного цвета

 

summer

Оттенки зеленого и желтого

 

Циклическое изменение

 

 

Палитра Windows из шестнадцати

flag

красный-белый-синий-

 

vga

 

цветов

 

черный

 

 

 

 

 

 

gray

Оттенки серого

 

white

Один белый цвет

 

Плавное изменение черный-

 

 

 

hot

красный-оранжевый-

 

winter

Оттенки синего и зеленого

 

желтый-белый

 

 

 

hsv

Плавное изменение по ана-

 

 

 

логии с цветами радуги

 

 

 

 

 

 

 

Заголовки графиков и подписи к осям устанавливаются командами title, xlabel, ylabel. Для вертикальной оси используется команда zlabel.

Использование в аргументах команд математических обозначений в фор-

мате TeX позволяет добавлять формулы на график. Например, для помещения в

заголовок

графика

формулы

отображаемой

функции

z x, y 4 sin 2 x cos1.5 y 1 x2 y 1 y

используется

команда (три

точки служат для размещения команды в двух строках):

>> title('4 sin(2\pi{\itx}) cos(1.5\pi{\ity}) (1 – {\ity}^{2}) … {\ity} (1 - {\ity})')

Правила набора формул и изменения свойств шрифтов в формате TeX

приведены в табл.3. Прямой шрифт текста устанавливается командой \rm. Для получения обычного прямого шрифта можно не указывать никаких команд. По умолчанию в MATLAB поддерживается основной формат TeX.

10

Соседние файлы в папке Компьютерная графика