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

Глава 2. Построение графиков в matlab

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

Таблица 2.1

Функция

Описание

plot

Построение графика в виде двумерной линии

semilogx,

semilogy,

loglog

Построение графика в виде двумерной линии в логарифмическом масштабе

polar

Построение графика в виде двумерной линии в полярных координатах

bar

Построение графика в виде вертикальной гистограммы

barh

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

contour

Построение линий уровня

contourf

Построение линий уровня с использованием заливки цветом

surf

Построение графика в виде трехмерной поверхности

surfc

Построение графика в виде трехмерной поверхности с отображением линий уровня

mesh

Построение графика в виде трехмерной сетки

plot3

Построение графика в виде трехмерной линии

scatter

Отображение данных в виде точек на плоскости

scatter3

Отображение данных в виде точек в трехмерном пространстве

quiver

Отображение векторного поля на плоскости

quiver3

Отображение векторного поля в пространстве

2.1. Построение графика в виде двумерной линии

Сначала рассмотрим построение двумерного графика y = f (x) в виде линии на плоскости. Для отображения таких данных используется функция plot. Вызывать эту функцию можно несколькими способами с использованием разного количества входных параметров, далее будут рассмотрены только некоторые из этих способов.

Если в функцию plot передать два параметра, представляющие собой одномерные вектора x и y – plot (x, y) – то будет проведена линия через точки, абсциссы которых задаются в качестве первого параметра, а ординаты – в качестве второго.

Следующий пример заполняет массив (матрицу-строку) значениями от 0 до 720 с шагом 1.0, к каждому значению матрицы применяет функцию sind (синус от угла, заданного в градусах) и выводит результат в виде графика.

>> x = 0: 0.5: 720;

>> y = sind (x);

>> plot (x, y)

После выполнения функции plot откроется окно, показанное на рисунке 2.1.

Рис. 2.1.

Если функцию plot вызвать с одним параметром (plot(y)), то по оси Y будут отложены последовательно значения элементов матрицы y, а по оси X будут отложены номера элементов матрицы y. В результате выполнения следующего примера будет выведен график, показанный на рисунке 2.2:

>> x = 0: 0.5: 720;

>> y = sind (x);

>> plot (y)

Рис. 2.2.

Функция plot также может принимать дополнительный параметр, который описывает внешний вид линии, которой будет нарисован график. Внешний вид линии описывается в виде строки, которая может содержать три составные части:

  • тип линии;

  • вид маркеров, добавляемых на линию;

  • цвет линии.

Тип линии задается комбинацией символов, приведенных в таблице 2.2

Таблица 2.2

Спецификатор

Тип линии

Внешний вид

-

Сплошная линия (значение по умолчанию)

--

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

:

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

-.

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

Тип маркера задается комбинацией символов, приведенных в таблице 2.3

Таблица 2.3

Спецификатор

Внешний вид маркера

+

o

*

.

x

s или square

d или diamond

^

v

>

<

p или pentagram

h или hexagram

Цвет линии может быть задан с помощью символов, приведенных в таблице 2.4

Таблица 2.4

Спецификатор

Цвет

r

Красный

g

Зеленый

b

Голубой

c

Салатовый

m

Маджента

y

Желтый

k

Черный

w

Белый

Например, для отображения графика красной штриховой линией, в функцию plot нужно передать в качестве третьего параметра нужно строку '--r'; для отображения графика в виде зеленых кружков, не соединенных линией, в качестве третьего параметра нужно строку 'og'; если те же самые кружки должны быть соединены сплошной линией, то третий параметр должен быть равен '-og'. Следующий пример демонстрирует отображение синусоиды черной штрихпунктирной линией.

x = 0: 1.0: 720;

y = sind (x);

plot (x, y, '-.k')

Результат работы этого примера приведен на рисунке 2.3.

Рис. 2.3.

Кроме указанного, существует и другой способ изменения внешнего вида графиков, он описан в справке к функции plot, здесь мы его описывать не будем.

Часто требуется нарисовать несколько графиков в одном окне. Если несколько вызовов функции plot следуют друг за другом, то каждый последующий вызов функции plot перерисовывает окно с графиком, поэтому в результате будет виден только результат последнего вызова функции plot. Это продемонстрировано на следующем примере, результат которого показан на рисунке 2.4.

>> x = 0: 0.01: 10;

>> f1 = sin(x);

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

>> plot (x, f1)

>> plot (x, f2)

Рис. 2.4.

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

plot (x1, y2, linestyle1, x2, y2, linestyle2, ..., xN, yN, linestyleN)

или

plot (x1, y2, x2, y2, ..., xN, yN)

Изменим предыдущий пример, чтобы на графике были отображены две кривые (Рис. 2.5):

>> x = 0: 0.01: 10;

>> f1 = sin(x);

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

>> plot (x, f1, x, f2)

Рис. 2.5.

Если нужно задать стиль линий в явном виде, то этот пример можно переписать в виде:

>> x = 0: 0.01: 10;

>> f1 = sin(x);

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

>> plot (x, f1, 'k--', x, f2, 'b:')

Результат показан на рисунке 2.6.

Другой способ построения нескольких графиков состоит в использовании команды hold on, которая "замораживает" фигуру (так в терминах MATLAB называется окно с графиком), и все последующие вызовы функции plot накладывают графики на предыдущие, пока не будет вызвана команда hold off, "размораживающая" фигуру. Изменим предыдущий пример таким образом, чтобы он использовал команду hold on/off. В результате будет создано окно, показанное на рисунке 2.7.

>> x = 0: 0.01: 10;

>> f1 = sin(x);

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

>> plot (x, f1)

>> hold on

>> plot (x, f2)

>> hold off

Рис. 2.6.

Рис. 2.7.

В отличие от случая использования одного вызова функции plot для рисования нескольких графиков, при использовании команды hold on, MATLAB будет последовательно менять цвета выводимых кривых (все кривые по умолчанию будут отображаться синим цветом), поэтому при использовании команд hold on/off для наглядности графиков желательно всегда в явном виде указывать стиль линий. Изменим предыдущий пример таким образом, чтобы получить такой же график, как и показанный на рисунке 2.6:

>> x = 0: 0.01: 10;

>> f1 = sin(x);

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

>> plot (x, f1, 'k--')

>> hold on

>> plot (x, f2, 'b:')

>> hold off

Использование команд hold on/off удобно, если нужно последовательно отобразить несколько графиков в цикле, если же требуется нарисовать небольшое число графиков (два-три графика), то удобнее использовать вызов функции plot, передавая ей данные для нескольких графиков.

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