Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Xlabel('Значения x'); ylabel('Значения функции'), grid



 

Рисунок. Результат применения функций title, xlabel, ylabel

 

 
 

В среде MATLAB несложно выводить и графики, заданные параметрически. Например, построим график функции, которая определена формулами (рис.):

 

t=0: 0.1: 50;

x=4*exp(-0.05*t).*sin(t); y=0.2*exp(-0.1*t).*sin(2*t);

plot(x, y); title('Параметрическая функция');

Xlabel('x'); ylabel('y'); grid

 

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

 

Система MATLAB предоставляет очень удобную возможность ― не указывать аргумент функции при построении ее графика. В таком случае в качестве аргумента система принимает номер элемента вектора, график которого строится. Например, построим график вектора х (рис.7):

x=[3 5 2 7 3 9 1];

plot(x); title('График вектора x');

Xlabel('Номер элемента'); ylabel('Значение элемента'); grid

 

 

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

 

stem(x); title('График вектора x');

Xlabel('Номер элемента'); ylabel('Значение элемента')

 

Рисунок 9. График, построенный с помощью процедуры stem

 

Чрезвычайно полезной для нас является функция hist (построение графика гистограммы заданного вектора). Стандартное обращение к ней имеет вид:

Hist(y, x)

 

где y ― вектор, гистограмму которого нужно построить; x ― вектор, элементы которого определяют интервал изменения первого вектора. Эта функция осуществляет две операции: 1) подсчитывает количество элементов вектора y, значения которых попадают внутрь соответствующего диапазона, указанного вектором x; 2) строит столбцовую диаграмму подсчитанных чисел элементов вектора y как функцию диапазонов, указанных вектором x.

В качестве примера построим гистограмму вектора у, элементы которого распределены по нормальному закону с математическим ожиданием 0 и среднеквадратическим отклонением 1. Общее количество элементов вектора у 10000 (рис.10):

 

x=-2.5: 0.05: 2.5; y=randn(10000, 1);

hist(y, x); title('Гистограмма нормального распределения');

Xlabel('x'); ylabel('Вероятность x'); grid

 

Рисунок 10. Гистограмма функции randn

 

MATLAB имеет несколько функций, которые позволяют строить графики в логарифмическом масштабе. К примеру, функция logspace с обращением

 

x=logspace(d1, d2, n)

 

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

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

 
 

Для примера построим амплитудно-частотную и фаза-частотную характеристики фильтра нижних частот (рис.), имеющего коэффициент передачи вида:

Как известно, коэффициент передачи, представляющий из себя комплексное число, равен K()=K(ω )exp(φ (ω )), где K(ω ) ― амплитудно-частотная характеристика (модуль комплексного числа), φ (ω ) ― фаза-частотная характеристика (аргумент комплексного числа). Воспользуемся известными нам функциями:

 

f=1: 10^4; w=2*pi*f; R=1000; C=10^-5;

K=1./(1+j*w*R*C); ACH=abs(K); FCH=angle(K)*180/pi;

Subplot(2, 1, 1); semilogx(f, ACH);

title('Амплитудно-частотная характеристика');

xlabel('Частота (Гц)'); ylabel('Отношение амплитуд'); grid;

subplot(2, 1, 2); semilogx(f, FCH);

title('Фаза-частотная характеристика');

xlabel('Частота (Гц)'); ylabel('Фаза (град)'); grid

 

Рисунок 11. АЧХ и ФЧХ фильтра нижних частот

 

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

 

Subplot(m, n, p).

 

Здесь m указывает, на сколько частей разделяется графическое окно по вертикали, n, соответственно, ― по горизонтали, а p является номером подокна, в котором будет строиться график. При этом подокна нумеруются слева направо построчно сверху вниз.

Если необходимо изменить режим масштабирования, можно воспользоваться функцией axis: axis([xmin xmax ymin ymax]) устанавливает жесткие границы поля графика в единицах величин, которые откладываются по осям, axis('auto') приводит масштабы по осям по умолчанию, axis('ij') перемещает начало отсчета в левый верхний угол (матричная система координат), axis('xy') возвращает декартову систему координат с началом отсчета в левом нижнем углу графика, axis('square') устанавливает одинаковый диапазон изменения переменных по осям графика, axis('equal') обеспечивает одинаковый масштаб по осям графика.

Команда text(x, y, < 'текст'> ) позволяет расположить указанный текст в поле графика, при этом начало текста помещается в точку с координатами х и у. Но не всегда удается указать «удобные» координаты, поэтому используют команду gtext('текст'), в результате вызова которой в активном графическом окне появляется перекрестие. Перемещение перекрестия с помощью мыши позволяет указать место начала вывода указанного текста.

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

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

Для примера построим в одном графическом поле несколько функций Бесселя первого рода различных порядков (рис.12):

 

x=0: 0.1: 20; y1=besselj(1, x);

y2=besselj(2, x); y3=besselj(3, x);

figure; hold on; plot(x, y1, x, y2, x, y3); grid;

title('Функции Бесселя первого рода');

xlabel('x'); ylabel('Значение функции');


Поделиться:



Последнее изменение этой страницы: 2016-05-03; Просмотров: 2562; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.015 с.)
Главная | Случайная страница | Обратная связь