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

Красавин Компютерныы практикум в среде МатЛаб 2015

.pdf
Скачиваний:
121
Добавлен:
12.11.2022
Размер:
9.22 Mб
Скачать

ylabel('y=f(x)',

'FontName',

'Trebuchet

MS',

'FontAngle',

'italic', 'FontSize', 10, 'FontWeight', 'bold')

 

'NorthWest');

leg = legend('y(x)=cos(6x)e^{-x^{2}} ', 'Location',

задание легенды в правом верхнем углу графика

 

 

set(leg, 'Box', 'off', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold') % задание параметров и стиля легенды

Рис. 5.1. График функции

cos 6

Цвет и стиль линии графика задаются как параметр функции plot строковой переменной (в примере 5.1 – 'k' – черный цвет). В табл. 5.1 – 5.3 приведены возможные значения, задающие цвет линии, форму символов и стиль линии графика.

 

Цвет линии графика

Таблица 5.1

 

 

 

 

 

 

 

 

Символ

Цвет

Символ

Цвет

b

Синий

m

Фиолетовый

 

c

Голубой

r

Красный

 

g

Зеленый

w

Белый

 

k

Черный

y

Желтый

 

51

 

 

 

 

 

Таблица 5.2

 

 

Форма символов графика

 

 

 

 

 

 

 

 

 

Символ

Форма

 

Символ

Форма

o

z

 

s

 

 

d

 

 

*

Ë

 

h

¥

 

v

T

 

p

¢

 

<

W

 

+

 

«

 

>

X

 

.

 

x

 

^

S

 

 

 

Стиль линии графика

Таблица 5.3

 

 

 

 

 

 

 

 

 

 

Символ

 

Линия

Символ

Линия

--

 

Штриховая

:

Пунктирная

 

-.

 

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

-

Сплошная

 

5.2. График с погрешностями

Построить график с указанием погрешностей можно при помощи функции errorbar. Ее действие аналогично функции plot, однако дополнительным третьим аргументом является вектор, содержащий значения погрешностей для каждой точки. Вариант построения графика с указанием погрешностей приведен в примере 5.2. Функция set, использованная в примерах, – универсальная функция MatLab, позволяющая установить свойства любого объекта – аргумента функции. В данном случае функция gca задает объект – текущие оси. Кроме gca, могут быть использованы функции gcf – текущее графическое окно и gco – текущий графический объект. После определения объекта идет перечисление его атрибутов и значений этих атрибутов, например: set(gco, 'Свойство1', 'Значение1', 'Свойство2', 'Значение2'). График изображен на рис. 5.2.

52

Пример 5.2.

x = linspace(0,1,10); % задание сетки по оси x от 1 до 10 с шагом

1

y = sin(4*x).*tan(x); % задание функции в точках x

e = 0.08*ones(1,10); % задание значений погрешностей, в данном случае – 0.08 для каждой точки errorbar(x,y,e,'r','LineWidth',2.5,'Marker','d','MarkerSize',8,'Ma rkerEdgeColor','k','MarkerFaceColor','k') % построение графика с погрешностями, указание свойств линии

axis([-0.1 1.1 -1.3 0.6]) % установка пределов по осям set(gca, 'LineWidth',1) % толщина линий осей

set(gca, 'FontName', 'Trebuchet MS') % установка шрифта обозначений по осям

set(gca, 'FontSize', 8) set(gca, 'FontWeight', 'bold')

xlabel('x', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel('y', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

leg = legend('Plot with errorbars', 'Location', 'Best');

set(leg, 'Box', 'on', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

Рис. 5.2. График с погрешностями

53

5.3. Несколько графиков на одном рисунке

Функция subplot(i,j,k) используется для построения нескольких графиков в одном графическом окне. При этом графическое окно разбивается на матрицу из i графических подокон по горизонтали и j графических подокон по вертикали. Параметр k обозначает номер текущего подокна и отсчитывается от левого верхнего угла построчно.

В примере 5.3 показано построение четырех графиков в одном графическом окне.

Рис. 5.3. Несколько графиков в одном графическом окне

Первый график построен в логарифмическом масштабе по оси x при помощи функции semilogx. Цвет линии задан в данном случае в координатах RGB (например, черный цвет соответствует координатам [0,0,0], белый – [1,1,1], красный – [1,0,0] и т.д.).

На втором графике построено семейство кривых, заданных

параметрически

через

параметр

t:

 

;

 

54

(лемниската Бернулли). Команда hold on обеспечивает построение нового графика в текущем графическом подокне, сохраняя предыдущие графики. Цвет кривой меняется в

зависимости от четности параметра a.

 

 

Третий

график

представляет

собой

графическое решение

На

 

0.1

cos

.

 

 

 

уравнения

 

 

 

 

 

 

 

четвертом

 

графике приведен

пример построения

точек при помощи функции hist.

 

10000

случайных

гистограммы нормального распределения из

 

Команда print

-dtiff -r400

figure.tif в конце примера

сохраняет содержание графического окна в файл figure.tif формата tiff с разрешением 400 точек на дюйм.

Пример 5.3.

figure(1)

subplot(2,2,1)

x= linspace(10^(-2),20,1000);

y= sin(x).*cos(x);

semilogx(x,y,'Color',[0.12,0.35,0.14],'LineWidth',2.5) %

построение графика в логарифмическом масштабе по оси х axis([0.008 23 -0.52 0.52])

set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

xlabel('x', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel('y', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

subplot(2,2,2)

t = [-20:0.001:20]; % задание сетки значений параметра t

for a = 1 : 10

x = a*(t+t.^3)./(t.^4+1); % вычисление х на сетке t y = a*(t-t.^3)./(t.^4+1); % вычисление y на сетке t if mod(a,2) == 0 % проверка четности параметра a

plot(x,y,'Color',[0.95,0.38,0.14],'LineWidth',3)

else

plot(x,y,'k','LineWidth',3)

end

hold on

55

end

set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

xlabel('x', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel('y', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

subplot(2,2,3)

x1 = linspace(0,10,1000);

y1 = cos(x1).^2;

y2 = 0.1*x1;

plot(x1,y1,'--r','LineWidth',2) hold on plot(x1,y2,'b','LineWidth',3) axis([0 10 0 1])

set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

xlabel('x', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel('y', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

subplot(2,2,4)

r = randn(1,10000); % задание вектора из 10000 случайных чисел, нормально распределенных на отрезке [0,1]

hist(r,20) % построение гистограммы с 20 столбцами set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

xlabel('x', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel('N(x)', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

print -dtiff -r400 figure.tif

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

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

56

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

1000

и

.

функции

 

. В списке аргументов100

plotyy после перечисления массивов данных и значений идут способы построения осей – в данном случае логарифмическая ось y для первого графика и обычные оси для второго графика. При этом параметры осей и линий для первого и второго графиков записываются в переменные zaxes, zline1, zline2, соответственно. Для создания сложных подписей к осям используется синтаксис языка LaTex. График функций приведен на рис. 5.4.

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

57

Пример 5.4.

x = linspace(0,5,1000);

y1 = 100*exp(-2*x) + 1000*exp(-10*x);

y2 = exp(-(x-2.5).^2);

figure(1)

[zaxes,zline1,zline2] = plotyy(x,y1,x,y2,'semilogy','plot');

set(zaxes(1),

'LineWidth',1,

'FontName',

'Trebuchet

MS','FontSize', 8, 'FontWeight',

'bold')

'Trebuchet

set(zaxes(2),

'LineWidth',1,

'FontName',

MS','FontSize', 8, 'FontWeight',

'bold')

 

set(zaxes(2), 'XTickLabel','') % отключение обозначений по второй оси x

xlabel(zaxes(1), 'x','FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel(zaxes(1), 'y=100e^{-2x}+1000e^{-10x}', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel(zaxes(2), 'y=e^{-(x-2.5)^2}', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold') set(zline1,'LineWidth',3)

set(zline2,'LineWidth',2)

grid(zaxes(1),'on') % создание сетки для первого графика

5.5. Создание врезки на графике

Для создания врезки на графике, демонстрирующей, например, поведение функции на определенном отрезке в увеличенном масштабе, можно воспользоваться функцией axes, которая создает новые оси координат в текущем графическом окне. В примере 5.5 у функции axes задан аргумент Position, определяющий положение новых осей, при этом первая пара значений этого аргумента определяет положение начала координат новых осей по отношению к графическому окну ([0,0] соответствует левой нижней точке, [1,1] – правой верхней), а вторая пара значений определяет длину осей (длине, равной единице, соответствует все графическое окно). На рис. 5.5 приведен результат работы скрипта из примера 5.5.

Пример 5.5.

x = linspace(0,2*pi,1000); y1 = sin(x).*(cos(15*x)).^2; y2 = sin(x);

58

figure(1)

plot(x,y1,'b','LineWidth',2) hold on plot(x,y2,'r','LineWidth',3)

axis([0 2*pi -1 1]) set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

xlabel('x', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

ylabel('y=sin(x)cos^2(15x)', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

axes('Position', [0.25 0.2 0.2 0.2]); % Построение второй пары осей

x = linspace(2.64,3.64,100); y1 = sin(x).*(cos(15*x)).^2; y2 = sin(x); plot(x,y1,'b','LineWidth',1.5) hold on plot(x,y2,'r','LineWidth',2.5) axis([2.64 3.64 -0.5 0.5]) set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

Рис. 5.5. График с врезкой

59

6

3D-Графики

6.1. Гистограммы

Многие функции MatLab, относящиеся к построению плоских графиков, имеют трехмерные аналоги, отличающиеся от двумерных наличием цифры «3» в имени. Например, функция bar3 позволяет строить трехмерные гистограммы (пример 6.1,

рис. 6.1).

Пример 6.1.

mat = spiral(5) % функция spiral возвращает квадратную матрицу, у которой элементами являются целые числа, возрастающие от центра матрицы к ее краям

mat =

22

23

24

25

21

20

7

8

9

10

19

6

1

2

11

18

5

4

3

12

17

16

15

14

13

figure subplot(1,2,1)

bar3(mat) % трехмерная гистограмма спиральной матрицы set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

zlabel('z', 'FontName', 'Trebuchet MS', 'FontAngle', 'italic', 'FontSize', 10, 'FontWeight', 'bold')

subplot(1,2,2)

bar3(1./mat) % трехмерная гистограмма матрицы, у которой каждый элемент является обратным соответствующему элементу спиральной матрицы

set(gca, 'LineWidth',1)

set(gca, 'FontName', 'Trebuchet MS') set(gca, 'FontSize', 8)

set(gca, 'FontWeight', 'bold')

60

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]