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

1-2 Моделирование / Matlab. Практический подход. Самоучитель

.pdf
Скачиваний:
763
Добавлен:
31.01.2021
Размер:
12.72 Mб
Скачать

Глава 2. Графика в Matlab

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

Описанный способ размещения в одном графическом окне нескольких графиков далеко не единственный. Для этих целей можно использовать все ту же функцию plot(), но несколько иначе указать ее аргументы, а именно последовательно указать узловые точки и значения в узловых точках для первой и второй функций. В частности, с помощью команды plot(x1,y1,x2,y2) создается практически такое же графическое окно и такими же кривыми, как на рис. 2.6, но с той лишь разницей, что кривые отображаются разным цветом. То есть в случае вызова функции plot() в формате plot(x1,y1,x2,y2) разные кривые отображаются разным цветом, но тип линии, как и в предыдущем случае, одинаков для обеих кривых.

На заметку

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

Настройки вида графика

Это мелочи. Но нет ничего важнее мелочей!

К/ф "Приключения Шерлока Холмса и доктора Ватсона. Знакомство"

Хотя стандартные средства и утилиты графического окна позволяют выполнять полный спектр настроек вида графики, крайне неудобно выполнять настройки каждый раз после его создания. Намного удобнее делать это непосредственно при создании графики. Для определения параметров создаваемых графиков используют ряд команд и инструкций. Например, цвет линии, используемой для отображения графика, можно указать с помощью специальной опции – третьего необязательного аргумента функции plot(). Значением аргумента является кодовая буква, обозначающая цвет. Буква заключается в одинарные кавычки. В табл. 2.1 перечислены кодовые буквы для основных цветов.

51

Самоучитель Matlab

Табл. 2.1. Кодовые буквы для обозначения цветов

Кодовая буква

Цвет

 

 

y

Кодовая буква для обозначения желтого цвета (английское назва-

ние цвета yellow)

 

 

m

Кодовая буква для обозначения малинового цвета (английское на-

звание цвета magenta)

 

 

c

Кодовая буква для обозначения цианового цвета (английское на-

звание цвета cyan)

 

 

r

Кодовая буква для обозначения красного цвета (английское на-

звание цвета red)

 

 

g

Кодовая буква для обозначения зеленого цвета (английское на-

звание цвета green)

 

 

b

Кодовая буква для обозначения синего цвета (английское назва-

ние цвета blue)

 

 

w

Кодовая буква для обозначения белого цвета (английское назва-

ние цвета white)

 

 

k

Кодовая буква для обозначения черного цвета (английское назва-

ние цвета black)

 

 

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

>>x=0:0.01:6;

>>y=exp(-x).*cos(2*pi*x);

>>plot(x,y,'r')

>>z=x.^2.*exp(-x);

>>plot(x,y,'r',x,z,'g')

>>plot(x,y,'r:',x,z,'g--')

>>plot(x,y,'pr',x,z,'g-')

Разберем последовательно эти команды и результат их выполнения. Командой x=0:0.01:6 создается массив узловых точек, а командой y=exp(-x).*cos(2*pi*x) в этих точках табулируется функция y(x) = exp(−x)cos(2πx). График функции создается командой plot(x,y,'r'), при этом в соответствии с использованной опцией цвет отображения кривой на графике – красный. Результат показан на рис. 2.9.

Если создается несколько графиков в одном графическом окне, опции определения цвета задаются практически так же: для каждого графика указывается значение опции цвета. Опция цвета указывается после векторов базовых точек для каждого из графиков. В частности, командой z=x.^2.*exp(-x) в узловых точках табулируется функция z(x) = x2 exp(−x) . Для вычисления вектора квадратов аргумента в узловых точках использован оператор .^ (оператор поэлементного возведения в степень), а поэлементное произведе-

52

Глава 2. Графика в Matlab

Рис. 2.9. График создан с явным указанием цвета линии

Рис. 2.10. В одном графическом окне разным цветом отображаются два графика

53

Самоучитель Matlab

ние массивов реализуется с помощью оператора .* (оператор поэлементного произведения). Далее, командой plot(x,y,'r',x,z,'g') в одном графическом окне отображаются графики двух функций, причем для отображения первой функции использована кривая красного цвета, а для отображения второго графика – кривая зеленого цвета. Результат представлен на рис. 2.10.

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

Втабл. 2.2 перечислены кодовые символы для определения типа линии.

Табл. 2.2. Кодовые символы для определения типа линии

Кодовый символ

Тип линии

 

 

-

Сплошная линия. Используется по умолчанию, если опция опре-

деления типа линии не задана

 

 

:

Пунктирная линия

--

Штрихованная линия

-.

Штрихпунктирная линия

Вид маркера также определяется специальными кодовыми символами, которые описаны в табл. 2.3.

Табл. 2.3. Кодовые символы для определения маркера

Кодовый символ

Маркер

 

 

.

В качестве маркера используется крупная точка

o

В качестве маркера используется кружек

x

В качестве маркера используется косой крест

+

В качестве маркера используется прямой крест

*

В качестве маркера используется звездочка

s

В качестве маркера используется квадрат

d

В качестве маркера используется ромб

v

В качестве маркера используется треугольник с направленной

вниз вершиной

 

 

^

В качестве маркера используется треугольник с направленной

вверх вершиной

 

 

<

В качестве маркера используется треугольник с направленной

влево вершиной

 

 

>

В качестве маркера используется треугольник с направленной

вправо вершиной

 

 

p

В качестве маркера используется пятиконечная звезда

h

В качестве маркера используется шестиконечная звезда

54

Глава 2. Графика в Matlab

Кодовые символы, определяющие параметры кривой (тип линии, цвет, маркер), указываются вместе в любой комбинации и любой последовательности. При этом если указан тип маркера и не указан тип базовой линии, базовые точки отображаются маркерами, но не соединяются кривыми. Поэтому, например, командой plot(x,y,'r:',x,z,'g--') в одном окне создаются два графика. Для отображения первого используется красная пунктирная кривая. Второй отображается зеленой штрихованной кривой. Результат выполнения команды показан на рис. 2.11.

Рис. 2.11. Графики отображаются с помощью кривых разного цвета и разного типа

В команде plot(x,y,'pr',x,z,'g-') задается не только цвет и тип кривой, но и базовые символы (маркеры) для первого графика. В частности, первый график отображается в виде маркеров - пятиконечных звезд красного цвета, которые между собой не соединяются линией. Второй график отображается сплошной линией зеленого цвета без отображения маркеров. Результат выполнения команды показан на рис. 2.12.

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

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

55

Самоучитель Matlab

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

но отнести, например, LineWidth (толщина базовой линии), MarkerSize (размер маркера), MarkerEdgeColor (цвет линии границы маркера – он может не совпадать с цветом заливки маркера), MarkerFaceColor (цвет заливки маркера).

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

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

56

Глава 2. Графика в Matlab

целочисленного параметра функции legend() и место размещения легенды для каждого из значений аргумента.

Табл. 2.4. Целочисленный аргумент функции legend()

Значение аргумента

Размещение легенды

 

 

-1

Легенда размещается в правом верхнем углу над областью

графика

 

 

0

Место для легенды выбирается автоматически так, чтобы не

перекрывать область кривых

 

 

1

Легенда размещается в правом верхнем углу области графи-

ка. Этот режим используется по умолчанию

 

 

2

Легенда размещается в левом верхнем углу области графика

3

Легенда размещается в левом нижнем углу области графика

4

Легенда размещается в правом нижнем углу области графика

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

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

>>x=2*pi*cos(t);

>>y=2*pi*sin(t);

>>u=t.*cos(4*t);

>>v=t.*sin(4*t);

>>plot(x,y,'p','MarkerSize',10,'MarkerFaceColor','r','MarkerEdgeColor','g')

>>axis equal

>>grid on

>>hold on

>>plot(u,v,'b-','LineWidth',2)

>>title('All Stars')

>>xlabel('x(t)')

>>ylabel('y(t)')

>>legend('stars','line',3)

Результат выполнения этих команд представлен на рис. 2.13.

В одном графическом окне создается два графика, причем обе функции заданы в параметрическом виде. Кривая для первой функциональной зависимости представляет собой окружность радиуса 2π . Вторая кривая – это спираль. Для создания базовых точек первой кривой используем команды t=0:0.1:2*pi (узловые точки параметра, через который задаются в параметрическом виде обе функциональные зависимости), x=2*pi*cos(t) (соответствует уравнению x(t) = 2π cos(t)) и y=2*pi*sin(t) (соответствует уравнению y(t) = 2π sin(t)). Вторая кривая (спираль) задана зависимостями u(t) = t cos(4t) (ей соответствует команда u=t.*cos(4*t)) и v(t) = t sin(4t) (ей соответствует команда v=t.*sin(4*t)).

57

Самоучитель Matlab

Рис. 2.13. При создании графика использовались команды настройки параметров графики

Командой plot(x,y,'p','MarkerSize',10,'MarkerFaceColor', 'r','MarkerEdgeColor','g') создается график первой функции. Базовые точки отображаются пятиконечными звездами, в явном виде задан размер маркеров (значение опции MarkerSize указан равным 10), красный цвет заливки области маркера (значение 'r' для опции MarkerFaceColor) и зеленый цвет границ символа маркера (значение 'g' для опции

MarkerEdgeColor). Далее командами axis equal, grid on и hold on

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

Спираль к уже созданному графику добавляем с помощью команды plot(u,v,'b-','LineWidth',2). Здесь через опции указаны следующие параметры: сплошная линия синего цвета толщины 2 (значение опции

LineWidth).

Командой title('All Stars') добавляется заголовок графика, подпись для горизонтальной оси определяется командой xlabel('x(t)'), а подпись для вертикальной оси – командой ylabel('y(t)'). Легенда в левом нижнем углу области графика добавляется командой legend('stars','line',3).

58

Глава 2. Графика в Matlab

Достаточно полезной является функция plotyy(). Она позволяет отображать в разном масштабе по вертикальной координатной оси одновременно два графика. Результат применения этой функции показан на рис. 2.14.

Рис. 2.14. Результат создания графики с помощью функции plotyy()

В данном случае для создания графика использовалась следующая последовательность команд:

>>x=0:0.01:10;

>>y=-5:0.01:5;

>>f=cos(x)./(1+x);

>>F=10*y.^5.*exp(-y.^2);

>>plotyy(x,f,y,F)

cos(x)

В графическом окне представлены графики функций f (x) = 1 + x на

интервале 0 ≤ x ≤ 10 и функции F(y) = 10y5 exp(−y2) на интервале −5 ≤ y ≤ 5 . Общий интервал аргумента вдоль горизонтальной координатной оси изменяется, таким образом, от -5 до 10. Что касается вертикальной координатной оси, то для каждой из двух функций масштаб свой. Масштаб для первой функции определяется по координатной оси вдоль левой границы области графика и соответствует диапазону значений от -1 до 1. Масштаб для второй функции определяется по координатной оси вдоль правой границы области графика и соответствует диапазону значений от -10 до 10.

59

Самоучитель Matlab

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

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

вотдельных подокнах одного графического окна. В этом случае используют функцию subplot(). У функции три аргумента. Первые два определяют количество подокон, на которые разбивается графическое окно. Третий аргумент определяет порядковый номер подокна для вывода следующего графика. В частности, все графическое окно условно разбивается на подокна равного размера (хотя, как будет показано далее, это не всегда так). Образуется своеобразная матрица из подокон. Первый аргумент функции subplot() определяет количество строк, а второй – количество столбцов такой матрицы. Например, если первый аргумент 2, а второй аргумент 3, то

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

>>x=-4*pi:0.01:4*pi;

>>y1=sin(x);

>>y2=sin(x)./x;

>>y3=(1-cos(x))./x.^2;

>>y4=x.^4.*exp(-x.^2);

>>y5=tanh(x);

>>y6=exp(-x.^2).*cos(x);

>>subplot(2,3,1);plot(x,y1)

>>subplot(2,3,2);plot(x,y2)

>>subplot(2,3,3);plot(x,y3)

>>subplot(2,3,4);plot(x,y4)

>>subplot(2,3,5);plot(x,y5)

>>subplot(2,3,6);plot(x,y6)

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

На заметку

Такой режим не является обязательным: можно было команды вводить последовательно, одна за другой.

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

60