close

Вход

Забыли?

вход по аккаунту

?

Disktetnye inform-izmerit sist metod ukaz

код для вставкиСкачать
Федеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионального образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
ДИСКРЕТНЫЕ ИНФОРМАЦИОННОИЗМЕРИТЕЛЬНЫЕ СИСТЕМЫ
Методические указания
к выполнению лабораторной работы
Санкт-Петербург
2008
Составитель Р. Н. Малаханов
Резензент кандидат технических наук доцент В. К. Пономарев
Методические указания знакомят с математическим описанием дискретных систем автоматического управления и с методикой вычисления переходных процессов дискретных систем с экстраполятором нулевого порядка в интерактивной системе для математических и технических вычи­
слений Matlab��
��������.
Содержат описание лабораторной работы по дисциплине «Дискретные
информационно-измерительные системы».
Предназначены для студентов всех форм обучения по направлению
«Приборостроение», специальностям «Авиационные приборы и измерительно-вычислительные комплексы» и «Техническая эксплуатация авиационных электросистем и пилотажно-навигационных комплексов».
Подготовлены кафедрой компьютерного проектирования аэрокосмических измерительно-вычислительных комплексов и рекомендованы к изданию редакционно-издательским советом Санкт-Петербургского государственного университета аэрокосмического приборостроения.
Редактор А. В. Подчепаева
Верстальщик С. В. Барашкова
Сдано в набор 21.12.07. Подписано в печать 04.02.08. Формат 60 × 84 1/16.
Бумага офсетная. Печать офсетная. Усл.-печ. л. 3,6. Уч.-изд. л. 3,9.
Тираж 160 экз. Заказ №
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
Лабораторная работа
ПЕРЕХОДНЫЕ ПРОЦЕССЫ ДИСКРЕТНЫХ
СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ
Цель работы: изучение математического описания дискретных
систем автоматического управления (САУ); ознакомление с методикой вычисления переходных процессов дискретных систем с экстраполятором нулевого порядка в интерактивной системе для математических и технических вычислений ��������
Matlab��.
1. Методические указания
Дискретные системы автоматического управления
Дискретными системами называются системы, в которых происходит квантование сигналов по времени и по уровню. К дискретным
САУ принадлежат импульсные и цифровые системы. В импульсных
системах происходит квантование по времени, а в цифровых – по
времени и по уровню. Дискретные САУ содержат в своей структуре
дискретную и аналоговую части, для согласования которых в импульсных системах используется импульсный элемент (ИЭ), а в цифровых системах – аналого-цифровые преобразователи (АЦП) и цифро-аналоговые преобразователи (ЦАП). Поэтому для исследования
дискретных систем используются специально разработанные методы, отличные от тех, которые используются для непрерывных САУ.
Цифровые САУ можно рассматривать как импульсные системы.
Но цифровые САУ являются нелинейными вследствие квантования
по уровню, поэтому для них теория импульсных систем может быть
применена только после линеаризации системы. Если при проектировании цифровой системы выбрать АЦП и ЦАП с большим количеством разрядов, то такую систему можно линеаризировать, а погрешности от квантования по уровню учесть добавлением в сигнал шумов
квантования с определенными статическими характеристиками.
Линейная импульсная САУ может быть представлена в виде последовательного соединения ИЭ и непрерывной части (НЧ), охваченных отрицательной обратной связью (рис. 1). Непрерывный сигнал
e(t) = g
�(t) – y
�(t),
(1)
где g(t) и y(t) – задающее воздействие и выходной сигнал системы
соответственно, является сигналом рассогласования или ошибки
системы. ИЭ преобразует непрерывный сигнал e(t) в импульсную
последовательность e*(t) определенной формы и длительности, импульсы которой следуют с периодом дискретности Т. Последовательность импульсов e*(t) с выхода ИЭ подается на вход НЧ и вслед­
ствие сглаживающих свойств последней (НЧ является фильтром
нижних частот) превращается в непрерывную величину y(t). Таким
образом, в системе только сигнал е*(t) является импульсным сигналом.
При исследовании дискретных систем вводится понятие решетчатой функции. Значения решетчатой функции f[nT] определены
в дискретные моменты времени t�����
= nT,
�� где n – целое число, и ее значения равны значениям непрерывной функции f(t) в эти моменты
времени. Операция получения решетчатой функции описывается
выражением
f [nT ] = f (t) t =nT
и показана на рис. 2 для случая, когда непрерывная функция f(t)
является функцией синуса. Решетчатая функция f[nT] обычно записывается в сокращенной форме f[n].
Единичная импульсная решетчатая функция
1, n = 0,
δ0 [n] = 
0, n ≠ 0.
Переходная решетчатая функция
∞
1, n ≥ 0,
1[n] = ∑ δ0 [t − nT ] = 
0, n < 0. n =0
g
ИЭ
e
T
e*
НЧ
Рис. 1. Структурная схема импульсной системы
(2)
y
TJOU
G<O5>
r
r
r
r
r
5 5 5 5 5 5 5 5 55 55555
U
Рис. 2. Решетчатая функция
Единичная импульсная решетчатая функция и переходная решетчатая функция играют при исследовании дискретных систем
такую же большую роль как и дельта-функция и переходная функция при исследовании непрерывных систем автоматического управления.
Аналогами первой производной для решетчатой функции являются первая прямая и первая обратная разности. Первая прямая
разность
∆f� [n] = f��� [n� ��
+ 1] – f��� [n].
Первая обратная разность
∇f� [n] = f��� [n] – f��� [n���
– 1].
Для вычисления первой прямой разности необходимо знать будущее значение f[n� +
�� 1]. Если будущее значение неизвестно, то используется первая обратная разность.
Высшие прямые и обратные разности k-го порядка можно определить соответственно по формулам [1–3]
k
и
∆k f [n] = ∑ (−1)v Ckv f [n + k − v] (3)
v =0
k
∇k f [n] = ∑ (−1)v Ckv f [n − v], (4)
v =0
k!
– биноминальные коэффициенты.
v !(k − v)!
Для упрощения структурных схем дискретных систем реальный
ИЭ заменяется последовательным соединением идеального импульсного элемента (ИИЭ) и формирующего элемента (ФЭ) (рис. 3). ФЭ
еще называют экстраполятором.
Идеальный импульсный элемент – это элемент дискретных систем, который из входной непрерывной функции вырабатывает решетчатую функцию [1–3]. При анализе систем основное значение
имеют значения сигнала ошибки в моменты времени nT, то есть значения решетчатой функции сигнала ошибки. Решетчатая функция
является математической абстракцией, поэтому для получения импульсов, реально существующих в системе, применяется ФЭ.
ФЭ и НЧ определяют динамические свойства системы, поэтому
их объединяют в приведенную непрерывную часть (ПНЧ). Динамические свойства системы могут изменяться в зависимости от типа
применяемой модуляции, значений длительности и периода следования импульсов.
Динамика линейных дискретных систем описывается линейными разностными уравнениями, которые являются аналогами дифференциальных уравнений для непрерывных систем. Линейное
разностное уравнение при использовании прямых разностей записывается в виде [1–3]
где Ckv =
А0∆my[n] + А1∆m – 1y[n] + … + Аmy[n] =
= B0∆kg[n] + B1∆k – 1g[n] + … + Bkg[n],
(5)
а при использовании обратных разностей
ПНЧ
ИЭ
g(t)
e(t)
ИИЭ
e[n]
ФЭ
T
Рис. 3. Структурная схема импульсной системы
e*[n]
НЧ
y(t)
А0∇my[n] + А1∇m – 1y[n] + … + Аmy[n] =
= B0∇kg[n] + B1∇k – 1g[n] + … + Bkg[n],
(6)
где m
� – порядок разностного уравнения; y[n] и g[n] – решетчатые
функции управляемой величины и задающего воздействия соответственно. Коэффициенты этих уравнений являются постоянными и не зависят от времени, входного и выходного сигналов. Дискретные системы, которые описываются такими уравнениями, называются линейными дискретными системами с постоянными параметрами.
Если входной и выходной сигналы системы определены только
в дискретные моменты времени nT, то такая система называется
цифровой линейной системой с постоянными параметрами.
Используя выражение (3), уравнение (5) можно переписать в виде
[1–3]
a0y[n + m] + a1y[n + m – 1] + … + amy[n] =
=b0g[n + k] + b1g[n + k – 1] + … + bkg[n],
q
�
v =0
v =0
� −v
q −v
где aq = ∑ (−1)q −v Av Cm
Bv Ck�−−vv ;
−v ; b� = ∑ ( −1)
q −v
Cm
−v =
(m − v )!
;
(q − v )! (m − q )!
Ck�−−vv =
(k − v )!
.
(� − v )! (k − � )!
(7)
Используя выражение (4), уравнение (6) можно переписать в виде
a0y[n] + a1y[n – 1] + … + amy[n – m] =
= b0g[n] + b1g[n – 1] + … + bkg[n – k],
q
m −q
где am −q = ∑ (−1)
v =0
�
k−�
q −v
Av Cm
−v ; bk − � = ∑ (−1)
v =0
(8)
q −v
� −v
Bv Ck�−−vv ; Cm
−v и Ck −v оп-
ределяется выражениями (7).
Для исследования дискретных систем применяется математический аппарат z-преобразования. z-преобразование имеет такое же
значение при исследовании дискретных систем, как и преобразование Лапласа при исследовании непрерывных систем.
Дискретное преобразование Лапласа для решетчатой функции
F ( p) =
∞
∑ f [n]e− pnT . (9)
n =0
Для сокращения записи формулу (9) записывают в символической форме
F(p) = L{f[n]}.
z-преобразование – это изображение решетчатой функции, определяемое формулой
F (z) =
∞
∑ f [n]z−n = f [0] + f [1]z−1 + ... + f [k]z−k + ... (10)
n =0
В этих формулах введено обозначение z� = ����
exp�(pT). Из формулы
(10) следует, что z-преобразование практически совпадает с дискретным преобразованием Лапласа (9) и отличается только аргументом изображения.
Для сокращения записи формулу (10) записывают в символиче­
ской форме
F(z) = Z{f[n]}.
Обратное z-преобразование
f [n] =
1
n −1
∫ F(z)z dz,
2πj 
C
где С – окружность с центром в начале координат и радиусом R > |zv|,
где zv – полюсы функции F(z), v� = 1, 2, …, L. В символической форме это преобразование записывается в виде
f[n] = Z–1{F(z)}.
Основным свойством z-преобразования является свойство линейности: изображение линейной комбинации решетчатых функций
равно той же комбинации их изображений [1–4]
 N
 N
Z ∑ ci fi [n]  = ∑ ci Fi (z),  i =1
 i =1
(11)
где сi – произвольные коэффициенты.
Одной из основных теорем теории z-преобразования является теорема запаздывания. z-преобразование решетчатой функции f[n����
– �
m],
сдвинутой вправо (запаздывающей) на целое число периодов дискретности mT, определяется выражением
mF(z),
Z{f[n����
–m
�]} = z–�
при этом решетчатая функция f [n] ≡ 0 при n < 0.
(12)
Для получения z-преобразований решетчатых функций пользуются таблицами z-преобразований. В приложении приведены некоторые исходные непрерывные функции, их изображения по Лапласу и z-преобразования. Более полно таблицы z-преобразований
представлены в литературе [1–4].
Если передаточная функция системы описывается выражением,
которое отсутствует в таблицах z-преобразований, то следует разложить выражение на элементарные дроби, которые присутствуют
в таблицах z-преобразований, и затем произвести z-преобразование.
В общем случае передаточная функция НЧ дискретной САУ определяется выражением
Wн ( p) =
m
q
с =1
n
h =1
k
i =1
d =1
K ∏ (1 + τc p )∏ τ2h p2 + 2ξhTh p + 1
(
)
(
)
pr ∏ (1 + Ti p )∏ Td2 p2 + 2ξdTd p + 1
e −τp =
B( p) −τp
e , (13)
C( p)
где r + n + 2k ≥ m + 2q; τ – суммарное время запаздывания системы.
Последнее выражение можно разложить на сумму элементарных
дробей
n
d 
 r D
Ni
L + jL2k
L − jL2k
Wн ( p) =  ∑ vv + ∑
+ ∑  1k
+ 1k
1
+
T
p
p
−
α
−
j
β
p
− αk + jβk
i
k
k
i =1
k =1 
v =1 p
где
1  dr −v pr B( p) 
Dv =

 ;
(r − v )!  dpr −v C( p)  p =0
 B( p) 
Ni = Ti 
;

 C′( p)  p =− 1
  −τp
  e , (14)
 
(15)
(16)
Ti
αk = −
ξk
; βk =
Tk
1 − ξ2k
Tk
 B( p) 
.
; L1k ± jL2k =  C′( p) 

 p =αk ± jβk
Экстраполятор нулевого порядка генерирует прямоугольные импульсы, длительность которых равна периоду дискретности Т. На
выходе экстраполятора в течение всего периода дискретности Т
удерживается величина, равная e[n] (рис. 4). Экстраполяторы нулевого порядка еще называют экстраполяторами с фиксацией на период.
FU
TJOU
FU
r
r
r
r
r
5 5 5 5 5 5 5 5 5 5 5 5 5
U
Рис. 4. Выходной сигнал экстраполятора нулевого порядка
Структурная схема дискретной САУ с экстраполятором нулевого
порядка представлена на рис. 5. Передаточная функция экстраполятора нулевого порядка, осуществляющего запоминание на период дискретности Т, имеет вид
1 − e − pT
=
p
1
z = z − 1.
p
zp
1−
Звено с дискретной передаточной функцией D(z) вводится с целью получения заданных качественных характеристик системы
(быстродействия, точности и устойчивости) посредством реализации заданных законов управления. При расчетах следует принять
D(z) = 1.
Дискретная передаточная функция разомкнутой системы с экстраполятором нулевого порядка
g
e
D(z)
T
T
z −1
zp
Wн(p)
y
Рис. 5. Структурная схема дискретной САУ с экстраполятором нулевого
порядка
10
W (z) =
z − 1  −1  Wн ( p) 
Z L 
, z
 p 

(17)
где L–1{} – символическая форма записи обратного преобразования
Лапласа.
Дискретная передаточной функции замкнутой системы определяется как отношение z-преобразование выходного сигнала к z-преобразованию входного сигнала и записывается в виде
H(z) =
b zk + b zk −1 + ... + bL
Y (z)
= 0 m 1 m −1
,
G (z) a0 z + a1z
+ ... + am
(18)
W (z)
.
1 + W (z)
(19)
где m > k�.
Передаточные функции замкнутой и разомкнутой систем связаны между собой соотношением
H(z) =
Рассмотрим линейное разностное уравнение при использовании
обратных разностей (8) в форме
m
k
i =0
j =0
∑ ai �[n − i] = ∑ bj � [n − j],
где m > k; g[n] и y[n] – решетчатые функции входного и выходного
сигналов соответственно. Возьмем z-преобразование от обеих частей уравнения. На основании свойства линейности (11)
m
k
i =0
j =0
∑ ai Z {�[n − i]}= ∑ bj Z {� [n − j]}
и теоремы запаздывания (12)
m
k
i =0
j =0
Y (z)∑ ai z−i =G (z) ∑ bj z− j ,
где Y(z) = Z{y[n]} и G(z) = Z{g[n]} – изображения выходного и входного сигналов соответственно. Из последнего выражения получаем
дискретную передаточную функцию замкнутой системы в виде передаточной функции импульсного фильтра
11
k
H(z) =
Y (z)
=
G (z)
∑ bj z− j
j =0
m
∑ ai z−i
=
b0 + b1z−1 + ... + bL z−k
a0 + a1z−1 + ... + am z−m
.
(20)
i =0
Последнее выражение определяет запись дискретной передаточной функции как дробно-рациональной функции от z–1. Умножив
числитель и знаменатель на zm, можно получить передаточную
функцию замкнутой системы в форме (18).
При решении разностного уравнения (8) выбирают нулевые начальные условия: y[–m] = y[–m� + 1] = ... = y[–1] = 0. Тогда значения
переходного процесса можно определить следующим образом. Из
уравнения (8) получаем рекуррентную формулу для вычисления решетчатой функции управляемой величины
y[n] = (b0g[n] + b1g[n – 1] + … + bkg[n – k] –
– a1y[n – 1] – … – amy[n – m]) / a0,
(21)
В начале определяется значение выходного сигнала для момента
времени n = 0. В соответствии с начальными условиями значения
решетчатой функции y[–1], y[–2], …, y[–m] равны нулю, g[0] = 1,
и уравнение (21) принимает вид
y[0] = (b0g[0]) / a0 = b0 / a0.
(22)
Далее определяется значение выходного сигнала в момент времени n = 1. Учитывая, что в соответствии с начальными условиями
все значения решетчатой функции y[n� – m] при n = 1 и m� > 1 равны
нулю, а g[0] = g[1] = 1, то уравнение (21) для n = 1 принимает вид
y[1] = (b0g[1] + b1g[0] – a1y[0]) / a0 = (b0 + b1 – a1y[0]) / a0.
После подстановки в него ранее полученного выражения (22) для
y[0] окончательно получаем
y[1] = (b0 + b1 – a1b0 / a0) / a0.
(23)
Аналогично для момента времени n = 2 уравнение (21) имеет
вид
y[2] = (b0g[2] + b1g[1] + b2g[0] – a1y[1] – a2y[0]) / a0 =
= (b0 + b1 + b2 – a1y[1] – a2y[0]) / a0.
12
После подстановки в него ранее полученных значений для y[0]
(22) и y[1] (23) окончательно получаем
y[2] = (b0 + b1 + b2 – b0a1 / a0 – b1a1 / a0 +
+ a12b0 / a02 – b0a2 / a0) / a0.����
(24)
Подобным же образом вычисляются значения выходного сигнала для последующих моментов времени n�
Т.
Основы работы с системой ������
Matlab
Система ����������������������������
Matlab����������������������
(сокращения от англ. �������
Matrix� �����������
Laboratory�������
������
– матричная лаборатория) была создана фирмой �����������
Mathworks��, Inc���������
������������
. как интерактивная система для математических и технических вычислений. После запуска системы ��������������������������������������
Matlab��������������������������������
появляется главное окно, содержащее меню, панель с инструментами toolbar������������������
�������������������������
и следующие окна:
команд� Command
�������� Window;
�������
истории��������
команд�
������� Command
�������� History;
��������
текущего директория ��������
Current� ����������
Directory�;
рабочей области ����������
Workspace�.
В окне команд вводятся команды пользователя и отображается
результат их выполнения; в окне истории команд – все ранее введенные команды. В окне текущего директория отображаются все
файлы, которые находятся в рабочем директории. В окне рабочей
области отображаются все ранее определенные переменные и их параметры.
Окно команд состоит из зоны просмотра и строки ввода и редактирования команд, в которой находится знак приглашения >>
и мигающий курсор. В этой строке пользователь должен набирать
команды с клавиатуры, при этом можно вводить: числа, имена переменных, знаки различных операций, различные встроенные команды, имена функций и файлов сценариев.
Для выполнения набранной команды необходимо нажать клавишу �������������������������������������������������������������
Enter��������������������������������������������������������
. После этого в зоне просмотра сразу же отображается результат выполнения команды, введенная команда отображается
в окне истории команд, происходит прокрутка зоны просмотра и появляется вновь строка ввода и редактирования команд со знаком
приглашения >> и мигающим курсором для ввода следующей команды. Для ввода в одной строке сразу нескольких команд необходимо отделять их друг от друга точкой с запятой.
13
Зона просмотра служит только для отображения результата выполнения команд и ее содержимое изменить уже невозможно. В эту
зону можно поместить курсор, но ввод с клавиатуры любого символа автоматически перемещает курсор в строку ввода и редактирования команд и введенный символ отображается в этой строке. Из
зоны просмотра можно копировать информацию в другие приложения ��������������������������������������������������������
Windows�������������������������������������������������
или в строку ввода и редактирования команд. Для
очистки зоны просмотра следует ввести команду ����
clc�.
Все введенные команды помещаются в стек команд, который
отображается в окне истории команд. Для вызова любой ранее введенной команды из стека команд в строку ввода и редактирования
команд следует использовать клавиши «Стрелка вверх» и «Стрелка
вниз». Нажатие клавиши «Стрелка вверх» вызывает последнюю команду, следующее нажатие этой клавиши вызывает предпоследнюю команду и так далее. Для движения по стеку команд в противоположном направлении следует использовать клавишу «Стрелка
вниз».
Любую ранее введенную команду можно также повторить, используя окно истории команд. Для этого нужно подвести курсор
мыши к команде в окне истории команд, нажать левую клавишу
мыши и, удерживая клавишу нажатой, переместить курсор в окно
команд и отпустить клавишу. После этого команда появится в строке ввода и редактирования команд. Для выполнения команды следует нажать клавишу Enter��
�������.
Если введена неправильная команда, то в зоне просмотра появляется сообщение об ошибке, которое выводится красным шрифтом. Для устранения ошибки необходимо вызвать последнюю введенную команду в строку ввода и редактирования команд посредством нажатия клавиши «Стрелка вверх», затем отредактировать
ее с целью исправления ошибки и снова нажать клавишу �����������
Enter������
. Эту
процедуру следует повторять до тех пор, пока не будет достигнут
положительный результат (прекращение вывода сообщения об
ошибке).
Типы данных
Matlab������������������������������������������������
может оперировать с числами в диапазоне от 2,23 ⋅ 10–308
308
до 1,8 ⋅ 10 . Вещественные числа представляются в формате с плавающей точкой. По умолчанию вычисления и хранение переменных в памяти всегда производится в формате двойной точности.
14
В окно команд целые, дробные и вещественные числа выводятся
в обычном для них виде. В мантиссе вещественных чисел, как и во
многих языках программирования, целая часть отделяется от дробной точкой, а не запятой. Для отделения порядка числа от мантиссы может использоваться символ «е», использование которого зависит от установленного формата вывода чисел.
Формат вывода вещественных чисел в окне команд определяется
командой
>> format имя,
где имя – указание имени формата. Может быть установлено две,
четыре или пятнадцать цифр после запятой. Имена формата и примеры вывода числа 1,23456789012345678 при различных форматах представлены в табл. 1. Установленный формат определяет
только форму вывода чисел в окне команд и не влияет на точность
вычислений. Сразу после запуска системы Matlab�����������������
�����������������������
устанавливается
формат вывода short�
������.
Ввод чисел может производиться пользователем в любом удобном для него формате.
Константа – это предварительно определенное числовое или символьное значение, представленное уникальным именем. СимвольТаблица 1
Имя формата
bank
short
short e
long
long e
rat
hex
Описание
Пример представления числа
Вывод только двух знаков
1.23
после запятой
Вывод только четырех знаков
после запятой в формате
1.2345
с фиксированной точкой
Вывод только четырех знаков
после запятой в формате
1.2345е+000
с плавающей точкой
Вывод четырнадцати знаков
после запятой в формате
1.234567890123456
с фиксированной точкой
Вывод четырнадцати знаков
после запятой в формате
1.234567890123457е+000
с плавающей точкой
Вывод числа в виде рациональ100/81
ной дроби
Вывод числа в шестнадцате3ff3c0ca428c59fb
ричном формате
15
ная константа – это несколько символов, заключенных в апострофы, например ‘ЛАХ’. Если в апострофы заключено арифметическое
выражение, например ‘1+2+3’, то оно также является символьной
константой и не вычисляется.
В системе �����������������������������������������������
Matlab�����������������������������������������
существует несколько системных констант:
i�����
или j������������������
�� –
�����������������
мнимая единица, −1;
pi���������
– число π;
eps��������������������������������������������������������
– погрешность для операций над числами с плавающей точкой;
inf�����������������������������������
– значение машинной бесконечности;
NaN��������������������������������������������������������
– значение, характеризующее нечисловой характер данных;
realmin��������������������������������������������
– наименьшее число с плавающей точкой (2,23 ⋅ 10–308);
realmax�������������������������������������������
– наибольшее число с плавающей точкой (1,8 ⋅ 10308);
true��������������������������������
– логическая единица, «истина»;
false���������������������������
– логический нуль, «ложь».
inf�������������������������������
является сокращением от англ. ���������
infinity�������������������
–
������������������
«бесконечность»
и обозначает машинную бесконечность. Значение машинной бесконечности генерируется при делении любого числа на нуль или при
превышении результата вычисления значения ������������������
realmax�����������
. При делении числа на нуль в зоне просмотра выдается сообщение: «���������
Warning��:
Divide� by�
��� zero��������������������������������������
������������������������������������������
» – «Предупреждение: деление на нуль».
Значение NaN�����������������������������������������������
��������������������������������������������������
является сокращением от английского ����������
Not�������
-������
a�����
-����
Number����������������������������������������������������������������
– «не число», и генерируется системой при делении нуля на нуль
или бесконечности на бесконечность. Присвоение этого значения
переменным или элементам числовых массивов может использоваться для исключения их из процесса машинной обработки.
Константы ������������������������������������������������
true��������������������������������������������
и false������������������������������������
�����������������������������������������
используются при выполнении логиче­
ских операций.
Переменные – это объекты, имеющие уникальные имена, и способные хранить различные данные. Типы переменных в системе
Matlab����������������������������������������������������������
не декларируются, потому что по умолчанию они все определяются как вещественные числа. Имя переменной может содержать
произвольное количество символов, но значение имеют только первые 31 начальный символ. Имя переменной не должно совпадать
с именами других переменных и встроенных функций системы.
Имя должно начинаться всегда с буквы, потому что первую цифру
Matlab�������������������������������������������������������
воспринимает как операнд для осуществления математиче­
ской операции. Цифры могут быть в любой другой позиции, кроме
первой. Допускается также использование символа подчеркивания.
Нельзя включать в имена переменных пробелы и знаки математических операций.
16
Все переменные, введенные в текущем сеансе работы, хранятся
в специальной области памяти, называемой ��������������������
workspace�����������
– рабочее
пространство, и в окне рабочего пространства отображаются их
имена, значения и типы.
Для задания переменной значения используется обычная форма
записи с использованием оператора присваивания. Например, команда
>> а1 = 2
создает новую переменную с именем а1 и присваивает ей значение
2. После ввода команды в зоне просмотра окна команд сразу же появится строки
a1 =
2
и ниже символ >> и мигающий курсор для ввода следующей команды. В дальнейшем строки из зоны просмотра будут приводиться сразу после команды, например
>> а1 = 2
a����
1=
2.
Если вывод в окно команд не требуется, то следует поставить
точку с запятой в конце команды, например
>> а1 = 2;
При создании символьных переменных присваиваемое значение
заключается в апострофы. Например, команда
>> s���������
����������
1 = ‘����
abc�’
s����
1=
���
abc
создает символьную переменную с именем s�����������������������
������������������������
1 и присваивает ей значение abc�
����.
Для удаления переменной из рабочего пространства используется команда ���������������������������������������������������
clear����������������������������������������������
. При вызове этой команды в списке аргументов
надо перечислить через запятую имена переменных, которые необходимо удалить из рабочей области. Например, команда
>> clear�����
����������
а1, b�����
������
1, d�
��
3
удаляет из рабочей области переменные с именами а1, ���������������
b��������������
1 и d���������
����������
3. Вызов
команды без аргументов удаляет все переменные из рабочей области.
17
Использование переменной, удаленной из рабочей области, не допускается. При попытке ее использования будет выдаваться сообщение об ошибке.
Числовые массивы
В системе ������������������������������������������������
Matlab������������������������������������������
операции выполняются над числовыми массивами. Каждому числовому массиву присваивается уникальное имя,
которое в дальнейшем используется для операций над массивом
или его элементами.
Числовые массивы характеризуются размером и размерностью.
Размерность характеризует структурную организацию массива.
Вектор является числовым массивом с размерностью один, матрица – числовой массив с размерностью два. Система ����������������
Matlab����������
может работать с числовыми массивами любой размерности. Размер числового массива характеризует количество его элементов. Размер вектора – это число его элементов, размер матрицы определяется числом
ее строк n и столбцов m и указывается как n × m. Следует отметить,
что обычные числа в системе �����������������������������������
Matlab�����������������������������
представляются также в виде
матрицы размером 1 × 1.
Для создания векторов и матриц используется операция конкатенации, которая обозначается с помощью квадратных скобок. Элементы располагаются между открывающей и закрывающей скобками и отделяются друг от друга запятой или пробелом. Для записи
новой строки используется точка с запятой.
При создании вектора-строки элементы должны располагаться
между открывающей и закрывающей квадратными скобками и отделяться друг от друга запятой или пробелом. Эта операция называется горизонтальной конкатенацией. Например, выражения
>> а1 = [ 1 2 3 ]
или
>> a���������������
����������������
1 = [ 1, 2, 3 ]
приводят к одинаковому результату – созданию вектора-строки
с именем а1, содержащего три элемента: 1, 2 и 3. После ввода вектора или матрицы в окне команд сразу же выводится имя и числовые
значения элементов массива. Например,
>> a1 = [1, 2, 3]
a1 =
1 2 3.
18
После ввода вектора или матрица их имена и значения отображаются в окне рабочей области.
При создании вектора-столбца элементы отделяются друг от друга точкой с запятой. Эта операция называется вертикальной конкатенацией. Знак точки с запятой ставится для обозначения начала
новой строки. Например, команда
>> a2 = [4; 5; 6]
a2 =
4
5
6
создает вектор-столбец с именем а2, содержащий элементы 4, 5 и 6.
Для преобразования вектора-строки в вектор-столбец и наоборот
следует использовать операцию транспонирования, которая обозначается символом апострофа.
При создании матрицы все строки, начиная со второй, начинаются с точки с запятой, которая обозначает начало новой строки,
а элементы одной строки записываются через пробел или запятую.
Например, команда
>> m���������������������������������
����������������������������������
1 = [ 1, 2, 3; 4, 5, 6; 7, 8, 9 ]
m1 =
1 2 3
4 5 6
7 8 9
создает квадратную матрицу размером 3 ⋅ 3.
Операндами операции конкатенации также могут быть ранее определенные векторы. Например, команда
>> a1 = [1, 2, 3]; a2 = [3, 4, 5]; a3 = [a1, a2]
a3 =
1 2 3 3 4 5
создает векторы с именами а1 и а2 и вектор с именем а3, который
является результатом конкатенации векторов с именами а1 и а2.
После выполнения этой операции вектор с именем а3 будет содержать элементы, входящие в векторы с именами а1 и а2.
Если требуется создать вектор, элементы которого отличаются
друг от друга на одинаковое числовое значение, то для этого используется операция двоеточия, которая имеет формат
19
имя = начальное_значение: шаг: конечное_значение,
где начальное_значение и конечное_значения определяют соответственно начальное и конечное значения числовой последовательности, а шаг – значение приращения каждого элемента вектора.
Например, команда
>> i = 0:0.5:3
i=
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
создает вектор с именем i���������������������������������������
����������������������������������������
, содержащий элементы с начальным и конечным значениями 0 и 3 соответственно и шагом приращения 0,5.
В итоге вектор с именем i���������������������������������
����������������������������������
будет содержать семь элементов.
Если в операции шаг не указан, то он по умолчанию устанавливается равным единице. Например, предыдущая команда без указания шага приращения
>> i = 0:3
i=
0 1 2 3
создает вектор с именем i�������������������������������������
��������������������������������������
с шагом приращения, равным единице,
который в итоге содержит четыре элемента.
Если необходимо создать убывающую последовательность, то
следует указать начальное значение больше конечного и установить
отрицательный шаг приращения. Например, команда
>> i = 3:-0.5:0
i=
3.0000 2.5000 2.0000 1.5000 1.0000 0.5000 0
создает вектор с именем ����������������������������������������
i���������������������������������������
, элементы которого представляют собой
убывающую последовательность с шагом –0,5.
Для доступа к каждому отдельному элементу числового массива
применяется операция индексации. При этом все элементы числового массива рассматриваются как индексированные переменные.
Для указания элемента массива в команде после имени массива
в круглых скобках через запятую указываются индексы (порядковые номера) элемента по каждой размерности. Нумерация начинается с единицы, а не с нуля, как в языках программирования. Например, первый элемент вектора с именем а1 обозначается как а1(1),
второй – как а1(2), третий – как а1(3) и так далее. Для матрицы
в круглых скобках сначала указывается номер строки, а затем столбца. Например, команда
20
>> a1 = [ 1, 2 ; 3, 4 ]
a1 =
1 2
3 4
создает матрицу с именем а1, а команда
>> a1 ( 2, 2 ) = a1 ( 1, 2 ) + a1 ( 2, 1 )
a1 =
1 2
3 5
складывает два элемента этой матрицы, первый из которых a1(1,2)
находится в первой строке и втором столбце и равен двум, и второй
a1(2,1) во второй строке и первом столбце, равный трем, и присваивает результат суммы элементу, находящемуся во второй строке
и втором столбце а1(2, 2).
Для индексации многомерных массивов требуется более двух
индексов. Например���������
, команды
�������
>> a1(1, 1, 1) = 1; a1(1, 2, 1) = 2; a1(2, 1, 1) = 3; a1(2, 2, 1) = 4;
>> a1(1, 1, 2) = 5; a1(1, 2, 2) = 6; a1(2, 1, 2) = 7; a1(2, 2, 2) = 8;
создают трехмерный массив с именем а1 и размером 2 × 2 × 2.
При чтении значения элемента массива значение индекса не
должны превышать соответствующего размера массива. Если это
условие не выполняется, то в окне команд будет выдано сообщение:
«Index exceeds matrix dimensions» – «Индекс превышает размер
матрицы». Например, команда
>> a1 = [1, 2; 3, 4]; b1 = a1(1, 3)
??? Index exceeds matrix dimensions.
создает матрицу с именем а1 и размером 2 × 2 и при чтении несуще­
ствующего элемента матрицы (значение индекса, равное трем, превышает размер матрицы) выдается сообщение об ошибке.
С помощью операции индексации может осуществляться добавление новых элементов массива. Для добавления нового элемента
в команде присваивания необходимо указать индекс нового элемента и его значение. Например, команда
>> a�������������
��������������
1 = [1, 2, 3]
a����
1=
1 2 3
создает вектор с именем а1, а команда присваивания
21
>> a���������
����������
1(4) = 10
a����
1=
1 2 3 10
добавляет в вектор новый элемент, равный десяти.
Если значение индекса в команде присваивания превышает соответствующее текущее значение размера более чем на единицу, то
элементам, которые не указаны в команде присваивания, присваиваются значения нулей. Например, команда
>> a��������
���������
1(8) = 5
a����
1=
1 2 3 10 0 0 0 5
добавляет в вектор новый элемент с индексом 8, имеющий значение 5. Элементам с индексами с пятого по седьмой присваиваются
значения нуля. Аналогичные действия можно проводить и с матрицами. Например, команда
>> b1 = [1, 2; 3, 4]
b1 =
1 2
3 4
создает квадратную матрицу с именем �������������
b������������
1 размером 2 × 2, а команда
присваивания
>> b1(3, 3) = 10
b1 =
1 2 0
3 4 0
0 0 10
добавляет новый элемент, имеющий значение 10, в третью строку
и третий столбец, после чего матрица с именем b���������������
����������������
1 превращается
в квадратную матрицу размером 3 × 3.
Для выделения группы элементов из числового массива применяется операция индексации с формированием диапазона индексов, которая обозначается знаком двоеточия. При этом слева и справа от двоеточия соответственно указываются индексы, с которых
начинается и заканчивается диапазон. Например, команда
>> a1 = [ 3, 4, 5, 6, 7, 8, 9 ]
a1 =
3 4 5 6 7 8 9
создает вектор с именем а1, который содержит семь элементов,
а после выполнения команды
22
>> b1 = a1(3 : 6)
b1 =
5 6 7 8
вектор с именем ������������������������������������������������
b�����������������������������������������������
1 будет содержать элементы вектора с именем а1
с индексами с третьего по шестой.
При применении операции индексации с формированием диапазона индексов к матрице первый диапазон указывает строки, к которым применяется операция, второй – столбцы. Например, команда
>> с1 = [1, 2, 3; 4, 5, 6; 7, 8, 9]
с1 =
1 2 3
4 5 6
7 8 9
создает матрицу с именем с1 размером 3 × 3, а команда
>> d�����������������������
������������������������
1 = с1 ( 1 : 2, 2 : 3 )
d����
1=
2 3
5 6
создает матрицу с именем ���������������������������������������
d��������������������������������������
1, которая состоит из элементов матрицы с именем �����������������������������������������������������
c����������������������������������������������������
1, находящихся с первой по вторую строки и со второго по третий столбцы. Если начальное и конечное значения диапазона не указаны, то берется весь диапазон. Например, команда
>> d2 = c1 ( 1:2, : )
d2 =
1 2 3
4 5 6
создает новую матрицу с именем d��������������������������������
���������������������������������
2, который состоит из элементов
матрицы c������������������������������������������
�������������������������������������������
1, находящихся в первой и второй строках.
Операция индексации с формированием диапазона индексов без
указания начального и конечного значений часто используется для
выделения отдельных строк и столбцов в матрицах. Для выделения
отдельной строки в позиции первого индекса указывается номер
строки, а в позиции второго индекса – оператор индексации с формированием диапазона индексов без указания начального и конечного значений столбцов. Для выделения отдельного столбца в позиции второго индекса указывается номер столбца, а в позиции первого индекса – оператор индексации с формированием диапазона ин23
дексов без указания начального и конечного значений строк.
Например, команда
>> d3 = с1 ( 2, : )
d3 =
4 5 6
выделяет строку с номером два из матрицы с именем с1 и сохраняет
результат в векторе-строке с именем d�����������
������������
3. Команда
>> d4 = с1( : , 3 )
d4 =
3
6
9
выделяет столбец из матрицы с именем с1 и сохраняет результат
в векторе-столбце с именем d��
���
4.
В системе �����������������������������������������������������
Matlab�����������������������������������������������
существует понятие пустого числового массива,
который обозначается последовательностью открывающейся и закрывающейся квадратных скобок [ ]. Пустой числовой массив не
имеет ни одного элемента. Его размер определяется как 0 × 0. Результатом операции присвоения массиву значения пустого массива
является удаление из числового массива всех элементов. Пустой
массив используется для удаления элементов из векторов, строк
или столбцов из матриц.
Для удаления элементов из вектора используется команда присваивания этим элементам значения пустого массива. Для удаления элемента вектора необходимо в команде присваивания указать
его индекс, после чего элемент удаляется и размер вектора уменьшается на единицу. Например, команда
>> k1 = 2 : 10
k1 =
2 3 4 5 6 7 8 9 10
создает вектор с именем ���������������������������������������
k��������������������������������������
1 с девятью элементами, а команда присваивания
>> k1( 3 ) = [ ]
k1 =
2 3 5 6 7 8 9 10
удаляет из вектора элемент с индексом 3, имеющий значение 4.
Если в операции удаления используется операция индексации
с формированием диапазона индексов, то будут удалены те элемен24
ты, индексы которых находятся в указанном диапазоне. После выполнения операции удаления размер вектора уменьшается на значение, равное количеству элементов, указанных в диапазоне. Например, следующая команда
>> k1( 3 : 6 ) = [ ]
k1 =
2 3 8 9 10
удаляет из вектора с именем k�����������������������������������
������������������������������������
1 четыре элемента, имеющие индексы
с 3 по 6, и размер вектора уменьшается на значение, равное четырем.
Для удаления строк и столбцов из матрицы используется операция индексации с формированием диапазона индексов. Для удаления строк в операции индексации в позиции первого индекса указывается диапазон индексов строк, которые необходимо удалить,
а в позиции второго индекса – весь диапазон. После удаления размер матрицы изменяется. Например, команда
>> m1 = [1, 2, 3, 4; 5, 6, 7, 8; 9, 10, 11, 12; 13, 14, 15, 16]
m1 =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
создает матрицу с именем m��������������
���������������
1 и размером 4 × 4, а команда
>> m1( 1 : 2, : ) = [ ]
m1 =
9 10 11 12
13 14 15 16
удаляет из матрицы первую и вторую строки. Для удаления столбцов в операции индексации в позиции первого индекса указывается весь диапазон, а в позиции второго индекса – диапазон индексов
столбцов, которые необходимо удалить. Например, команда
>> m1( : , 3 : 4 ) = [ ]
m1 =
1 2
5 6
9 10
13 14
удаляет из матрицы третий и четвертый столбцы. Если необходимо
удалить только отдельные строку или столбец, то в операции ин25
дексации в соответствующей позиции указывается номер строки
или столбца, который необходимо удалить, а в другой позиции указывается весь диапазон. Например, команда
>> m1( 2, : ) = [ ]
m1 =
1 2 3 4
9 10 11 12
13 14 15 16
удаляет из матрицы вторую строку, а команда
>> m1( : , 2 ) = [ ]
m1 =
1 3 4
5 7 8
9 11 12
13 15 16
удаляет второй столбец.
Операторы
В системе ������������������������������������������������
Matlab������������������������������������������
для арифметических операций сложения, вычитания, умножения и деления используются традиционные для
языков программирования знаки. Знаки, которыми обозначаются
арифметические операции, приведены в табл. 2. Если операндами
являются векторы и матрицы, то операции выполняются по правилам линейной алгебры.
Приоритет в выполнении арифметических операций также традиционный для языков программирования – самый высокий приТаблица 2
Знак
Операция
^
*
/
+
–
.^
.*
./
Возведение в степень
Умножение
Деление
Сложение
Вычитание
Поэлементное возведение в степень элементов числового массива
Поэлементное умножение элементов числового массива
Поэлементное деление элементов числового массива
26
оритет имеет операция возведения в степень, затем умножение и деление, далее сложение и вычитание. Операции одинакового приоритета выполняются в порядке слева направо. Выражения, помещенные в круглые скобки, имеют самый высокий приоритет.
Арифметические операции и их операнды можно вводить непосредственно в строке ввода и редактирования. Если не указана переменная, которой присваивается результат арифметической операции, то он присваивается системной переменной ���������������
ans������������
. Например,
команда
>> 2.1 + 3.2 - 4.3
ans =
1.0000
производит арифметические операции и присваивает результат их
выполнения переменной ans�
����.
Если операндами операций сложения и вычитания являются
матрицы, то их размеры должны быть равны. Например, после выполнения команды
>> a1 = [ 1, 2; 3, 4 ]; b1 = [ -1, 3; 7, 10 ]; c1 = a1 + b1
c1 =
0 5
10 14
элементы матрицы с именем с1 равны сумме соответствующих элементов матриц с именами а1 и ���������������������������������
b��������������������������������
1. Если при выполнении операций
сложения или вычитания размеры матриц не равны, то будет выдано сообщение об ошибке: «������������������
Matrix������������
dimensions�
����������� �����
must� ����������������
agree�����������
» – «Размеры матриц должны быть равны».
При сложении матрицы и скаляра значение скаляра складывается с каждым элементом матрицы. При этом в операции сложения
скаляр может занимать место как левого, так и правого операнда.
Например, команда
>> a1 = [1, 2; 3, 4]; b1 = a1 + 2
b1 =
3 4
5 6
прибавляет значение 2 к каждому элементу матрицы с именем а1
и присваивает результат матрице с именем b�������������������
��������������������
1. Аналогичное действие имела бы команда b��������
���������
1 = 2 + a���
����
1.
27
При использовании операции умножения число столбцов в левой
матрице должно быть равно числу строк в правой. Например, команда
>> a1 = [1, 2; 3, 4]; b1 = [2, 3; 4, 5]; c1 = a1 * b1
c1 =
10 13
22 29
создает две матрицы с именами а1 и ������������������������������
b�����������������������������
1 и присваивает результат их
умножения матрице с именем с1. Если число столбцов в левой матрице не равно числу строк в правой, то будет выдано сообщение об
ошибке: «������
Inner� ������������������
matrix������������
�����������
dimensions� �����
must� �������������������������
agree��������������������
» – «Внутренние размеры матриц должны быть согласованы».
Операция умножения также позволяет производить умножение
матрицы или вектора на скаляр. Например, команда
>> a1 = [ 1, 2; 3, 4 ]; b1 = a1 * 2.1
b1 =
2.1000 4.2000
6.3000 8.4000
вводит матрицу с именем а1 и создает новую матрицу с именем ����
b���
1,
которая является результатом умножения матрицы с именем а1 на
вещественное число 2,1.
При операциях поэлементных умножения .* или деления ./ элементы матрицы результата равны произведению или отношению
соответствующих элементов матриц операндов. Например, после
выполнения команды
>> a1 = [ 1, 2; 3, 4 ]; b1 = [ 2, 3; 4, 5 ]; c1 = a1 .* b1
c1 =
2 6
12 20
элементы матрицы с именем с1 равны произведению соответствующих элементов матриц с именами а1 и �����������������������
b����������������������
1: с1(1, 1) = а1(1, 1) ⋅ b���������
1(1, 1);
с1(1, 2) = а1(1, 2) ⋅ b���������������������
1(1, 2) и так далее.
Знаки, которыми описываются операции отношения и логиче­
ские операции, представлены в табл. 3. Операции отношения имеют
более низкий приоритет, чем арифметические операции, поэтому
их следует заключать в круглые скобки, если необходимо изменить
порядок проведения операций.
28
Таблица��
3
Знаки
<
<=
>
>=
==
~=
Операция отношения
Меньше
Меньше или равно
Больше
Больше или равно
Равно
Не равно
Знак
&
|
~
Логическая операция
Дизъюнкция (логическое И)
Конъюнкция (логическое ИЛИ)
Логическое отрицание
Результат операции отношения в случае истинности равен единице («истина»), в противном случае нулю («ложь»), и поэтому он может
участвовать в арифметическом выражении. Например, команда
>> с1 = с1 + (а1 > b��
���
1)
приведет к инкрементированию переменной с именем с1 в случае,
если значение переменной с именем а1 больше значения переменной
с именем b����������������������������������������
�����������������������������������������
1, потому что результат выражения (�����
a����
1 > ����������������
b���������������
1) равен единице. Если значение переменной с именем а1 меньше значения переменной с именем b���������������������������������������������������
����������������������������������������������������
1, то значение переменной с именем с1 не изменится.
Если операндами операции отношения являются матрицы, то
в результате получается новая матрица, элементы которой равны
результату отношения соответствующих элементов матриц операндов. Например, после выполнения команды
>> a1 = [ 1, 2; 3, 4 ]; b1 = [ 2, 1; 4,3 ]; c1 = a1 < b1
c1 =
1 0
1 0
создаются матрицы с именами а1 и b������������������������������
�������������������������������
1 и в результате их сравнения
образуется матрица результата с именем с1, содержащая нули
и единицы, при этом формирование элементов матрицы с именем
с1 происходит следующим образом: с1(1, 1) = а1(1, 1) < b���������
����������
1(1, 1);
с1(1, 2) = а1(1, 2) < b��������������������
���������������������
1(1, 2) и так далее.
Операндами операции отношения могут быть также матрица
и скаляр. Например, команда
>> a1 = [ 1, 2; 3, 4 ]; c1 = a1 = = 2
c1 =
0 1
0 0
определяет, какой из элементов матрицы с именем а1 равен двум.
29
Знаки логических сложения и умножения ставятся между операндами, знак логического отрицания перед операндом. Операнд
логической операции считается «ложью», если он равен нулю,
и «истиной» в противном случае. Результату логической операции
присваивается единица, если результат равен «истине», и нуль
в противном случае.
При выполнении логических операций могут использоваться
как числовые переменные, так и константы ������������������������
true��������������������
и �����������������
false������������
. Например��,
команды
>> a1 = true; b1 = false; c1 = a1 & b1
c1 =
0
и
>> a��������
���������
1 = 10; b�������
��������
1 = 0; c����
�����
1 = �����
a����
1 & ��
b�
1
c����
1=
0
одинаковы по результату своего действия и присваивают переменной с именем с1 значение логического умножения переменных
с именами а1 и b��
���
1.
Если операндами логической операции являются матрицы, то
каждый элемент матрицы результата равен логической операции
соответствующих элементов матриц операндов. При этом размеры
матриц операндов должны быть одинаковы. Например, команда
>> a1 = [1, 0; -4, 3]; b1 = [2, 3; 4, 5.1]; c1 = a1 & b1
c1 =
1 0
1 1
создает матрицу с именем с1, которая является результатом логического умножения матриц с именами а1 и �����������������������
b����������������������
1, при этом формирование элементов матрицы с именем с1 происходит следующим образом: с1(1,1) = а1(1,1)&����������������������������������������������
b���������������������������������������������
1(1,1) = 1&2 = 1; с1(1,2) = а1(1,2)&���������
b��������
1(1,2) =
= 0&3 = 0 и так далее, причем элемент а1(2, 1), равный –4, считается «истиной», так как отличен от нуля.
Логические операции имеют самый низкий приоритет и их результат также может участвовать в арифметических выражениях.
Все вышеперечисленные операции могут использоваться для образования новых векторов и матриц в операции конкатенации. Например���������
, команда
�������
30
>> a1 = [0, 1]; b1 = [20, 30]; c1 = [a1; b1; a1 + b1; a1 & b1; a1 > b1]
c1 =
0 1
20 30
20 31
0 1
0 0
создает матрицу с именем с1, которая в первой строке включает
в себя элементы вектора с именем а1, во второй – элементы вектора
с именем �������������������������������������������������������
b������������������������������������������������������
1; третья, четвертая и пятая строки являются результатами соответственно операций сложения, логического умножения
и отношения элементов векторов с именами а1 и b��
���
1.
Операция транспонирования в системе �������������������������
Matlab�������������������
обозначается с помощью апострофа, который ставится сразу после имени транспонируемого вектора или матрицы без пробела. Например, команда
>> a1 = [1, 2, 3; 4, 5, 6; 7, 8, 9]
a1 =
1 2 3
4 5 6
7 8 9
создает квадратную матрицу с именем а1 размером 3 × 3, а команда
>> b1 = a1'
b1 =
1 4 7
2 5 8
3 6 9
транспонированную матрицу с именем �������������������������
b������������������������
1. При транспонировании
вектора-столбца он преобразуется в вектор-строку и наоборот.
Для циклического повторения команд используются операторы
цикла, один из которых обозначается с помощью служебных слов
for�����������
(‘для’) и ����
end�������������������������
(‘конец’)
������������������������
и имеет формат
for����������������
var������������
���������������
= выражение
команды цикла
end�,
где ����������������������������������������������������������
var�������������������������������������������������������
– имя переменной цикла, которое выбирается пользователем произвольно.
Выражение может представлять собой операцию формирования
диапазона значений. Тогда переменная цикла изменяется от начального значения диапазона до конечного, принимая последова31
тельно все значения диапазона. Количество повторений цикла равно количеству значений в диапазоне. Например, команды
>> a1 = [1, 2, 3 ; 4, 5, 6; 7, 8, 9]; Sum = 0;
>> for n = 1:1:3
Sum = Sum + a1(n, 1)
end
Sum =
12
вычисляют сумму элементов первого столбца матрицы с именем а1.
При каждом проходе цикла переменная цикла �������������������
n������������������
увеличивается на
единицу и всего происходит три прохода цикла.
При интерактивном вводе команд цикл не выполняется до тех
пор, пока не будет введено служебное слово �����
end��.
Вместо операции формирования диапазона можно указать весь
набор возможных значений переменной цикла в виде вектора-строки. Например,
for�����������������������
n���������������������
����������������������
= [ 8, 3, 5, 7, 11].
При первом проходе переменная цикла n�����������������������
������������������������
принимает значение 8,
при втором – 3 и так далее. Всего будет пять проходов цикла.
Функции
Система ��������������������������������������������������
Matlab��������������������������������������������
имеет встроенные функции, выполняющие определенные действия над своими аргументами и возвращающие результат этих действий. В системе �������������������������������
Matlab�������������������������
имеется несколько сотен
встроенных функций.
При вызове функции следует указать ее имя и список аргументов в круглых скобках через запятую. Наиболее часто используемые функции и примеры их применения представлены в табл. 4.
Примеры вызова функций представлены с аргументами, которые
являются скалярами, но аргументы могут быть также и числовыми
массивами. Например, команда
>> a�����������������������
������������������������
1 = [ 1, 4; 16, 100 ]; �������
sqrt���( ����
a���
1)
ans���
=
1 2
4 10
вычисляет значение квадратного корня для каждого элемента матрицы с именем а1, которая является входным аргументом для функции sqrt�
�����.
32
Таблица 4
Имя
функции
Описание
Пример вызова
sqrt
Вычисления квадратного корня
sqrt( 10 )
exp
Вычисление значения экспоненциальной функции
exp( 10 )
abs
Вычисление абсолютного значения. Если входной аргумент является комплексным числом,
то вычисляет модуль комплексного числа
abs( -3 )
log
Вычисления натурального логарифма
log( 10 )
log10
Вычисления десятичного логарифма
log10( 100 )
sin
Вычисления синуса. Аргументом функции является значение угла в радианах
sin( pi / 2 )
sind
Вычисления синуса. Аргументом функции является значение угла в градусах
sind( 90 )
cos
Вычисления косинуса. Аргументом функции
является значение угла в радианах
cos( pi / 2 )
cosd
Вычисления косинуса. Аргументом функции
является значение угла в градусах
cosd( 90 )
tan
Вычисления тангенса. Аргументом функции
является значение угла в радианах
tan( pi / 4 )
tand
Вычисления тангенса. Аргументом функции
является значение угла в градусах
tand( 45 )
cot
Вычисления котангенса. Аргументом функции
является значение угла в радианах
cot( pi / 4 )
cotd
Вычисления котангенса. Аргументом функции
является значение угла в градусах
cotd( 45 )
asin
Вычисления арксинуса. Значение угла возвращается в радианах
asin( 1 )
acos
Вычисления арккосинуса. Значение угла возвращается в радианах
acos( 1 )
atan
Вычисления арктангенса. Значение угла возвращается в радианах
atan( 2 )
acot
Вычисления арккотангенса. Значение угла воз­
вращается в радианах
acot( 2 )
sinh
Вычисления гиперболического синуса
sinh( 3 )
cosh
Вычисления гиперболического косинуса
cosh( 3 )
tanh
Вычисления гиперболического тангенса
tanh( 0.5 )
coth
Вычисления гиперболического котангенса
det
Вычисление детерминанта матрицы
det([1, 2; 3, 4])
Решение линейного однородного уравнения
roots([1, 4, 2])
roots
coth( 3 )
33
Пользователь также может создавать свои собственные функции,
которые могут выполнять определенные пользователем вычисления.
Функции имеют уникальные имена. В системе Matlab��������
��������������
, также
как и в других языках программирования высокого уровня, при
вызове функции следует учитывать регистр букв. Функции, которые имеют в своем имени одинаковые буквы, но в разном регистре,
являются разными функциями. Например, функции с именами
sin����������������������������������������������������������
, ��������������������������������������������������������
Sin�����������������������������������������������������
и SIN�����������������������������������������������
��������������������������������������������������
являются разными – первая является встроенной
функцией системы, вторая и третья могут определяться пользователем. Все встроенные функции системы ������������������������
Matlab������������������
должны вводиться
строчными буквами. Имена функций, определяемых пользователем, могут состоять из комбинаций букв любого регистра. В именах
функций допускается использование символов цифр.
Результат вычисления функции может участвовать в математических выражениях. Возвращаемый функцией результат подставляется на место ее вызова. Например, команда
>> a���������
����������
1 = 10 + sin��������
�����������
(�������
pi�����
/ 3)
a1 =
10.8660
присваивает переменной с именем а1 результат суммы значения 10
и значения, которое возвращает функция вычисления синуса при
ее вызове с аргументом π/3.
Если функция возвращает несколько значений, то ее вызов имеет следующий формат
[y1, y2, y3, …] = func(x1, x2, x3, x4…),
где в квадратных скобках через запятую указывается список выходных переменных; х1, х2, х3, ��������������������������������
x�������������������������������
4 – список входных аргументов;
func����������������
– имя функции.
Для операций отношений удобной является функция find�������
�����������
, которая в случае операции отношения над вектором и скаляром возвращает вектор, состоящий из значений индексов тех элементов исходного вектора, которые удовлетворяют условию операции отношения. При вызове функции в круглых скобках необходимо указать
операцию отношения. Например, после выполнения команды
>> a�����������������������������������
������������������������������������
1 = [0, 1, 2, 3, 4, 2.5, 2, 1, 0]; �����������������
b����������������
1 = find��������
������������
(�������
a������
1 > 2)
b����
1=
4 5 6
вектор с именем �����������������������������������������������
b����������������������������������������������
1 будет содержать индексы тех элементов исходного вектора с именем а1, которые больше двух, то есть удовлетворяют условию a�����
������
1>2.
34
После ввода команды
>> c1 = a1(b1)
c1 =
������������������������
3.0000 4.0000 2.5000
вектор с именем с1 будет содержать те элементы исходного вектора
а1, которые удовлетворяют условию а1 > 2.
После вызова функции find�������������������������������
����� ����������������������������
операцией сравнения матрицы
и скаляра в качестве входного аргумента
>> a1 = [ 1, 2 ; 3, 4 ]; [ i, j ] = find ( a1 = = 2 )
i=
�
1
j=
2
выходными переменными являются переменные с именами �������
i������
и j��
���.
Функция find��������������������������������������������������
������������������������������������������������������
(�������������������������������������������������
a������������������������������������������������
1 = = 2) определяет, какой из элементов матрицы
с именем а1 равен двум. В данном случае это элемент в первой строке и втором столбце. Значение строки находится в переменной
с именем i����������������������������������������������
�����������������������������������������������
, значение столбца – в переменной с именем j��
���.
Функция может возвращать также матричные и векторные переменные. Например, при вызове функции find��������������������
����� �����������������
операцией сравнения ������
a�����
1>2
>> a��������������������������������
���������������������������������
1 = [1, 2; 3, 4]; [�������������
i������������
, j���������
����������
] = find���������
����� ��������
(�������
a������
1 > 2)
i���
=
2
2
j���
=
1
2
выходными переменными являются уже векторы с именами �������
i������
и j��
���.
Количество элементов в векторах i���
����
и ��j����������������������������
���������������������������
одинаково и равно количеству элементов матрицы с именем а1, для которых выполняется условие а1 > 2. В данном случае их два (3 и 4) и они располагаются во
второй строке в первом и втором столбцах. Вектор с именем ��������
i�������
содержит значения строки для каждого из этих элементов, вектор с именем j����������������������
�� –
���������������������
значения столбцов.
Функции также могут использоваться для создания новых векторов и матриц. Данная процедура называется созданием таблицы
функции или табулированием. Например, команда
35
>> arg��������������
�����������������
= 0:���������
pi�������
/6:����
pi��; �����
a����
1 = ��������
sin�����
(����
arg�)
a1 =
0 0.5000 0.8660 1.0000 0.8660 0.5000 0.0000
создает два новых вектора с именами arg�����������
��������������
и а1, где ����������������
arg�������������
– вектор отсчетов аргумента; а1 – вектор значений функции синуса для данного вектора аргументов.
Для определения размерности, размера и количества элементов
предназначены функции ndims��
�������, ������
size��, ��������
numel���
и ����������������
length����������
. Функция
ndims����������������������������������������������������������
возвращает значение размерности числового массива. Например, команда
>> g1 = [1, 2, 3; 4, 5, 6]; ndims(���
g��
1)
ans =
2
возвращает значение размерности матрицы с именем �����������
g����������
1. Размерность вектора равна единице.
Функция size������������������������������������������������
����������������������������������������������������
возвращает размер числового массива. Например,
после выполнения команды
>> [�����
row��, �������
col����
] = ��������
size����
(���
g��
1)
row���
=
2
col =
3
в выходной переменной ���������������������������������������
row������������������������������������
будет содержаться количество строк
матрицы с именем g������������������
�������������������
1, а в переменной col������������������������
���������������������������
– количество столбцов.
Функция �������������������������������������������������
numel��������������������������������������������
возвращает количество элементов в числовом
массиве. Например, команда
>> numel(g1)
ans =
6
возвращает количество элементов в матрице g���
����
1.
Функция length�����������������������������������������
�����������������������������������������������
возвращает размер вектора. Например, ко­
манда
>> a1 = [1, 2, 3, 4, 5]; length(a1)
ans =
5
возвращает размер вектора с именем а1.
36
Для получения описания функции и возможных примеров ее использования следует ввести команду ��������������������������
help����������������������
и имя функции. Например���������
, команда
�������
>> help asin
ASIN Inverse sine.
ASIN(X) is the arcsine of the elements of X.
Complex results are obtained if ABS(x) > 1.0 for some element.
выводит описание функции арксинуса asin�
�����.
Средства графического представления данных
Для отображения числовых массивов в зоне просмотра окна команд используются функции disp���������������������������������
�������������������������������������
и display�����������������������
������������������������������
. При их вызове в качестве входного аргумента следует указать имя отображаемого массива. Различие между функциями заключается в том, что функция
disp������������������������������������������������������������
выводит значения элементов массива без указания его имени,
а функция ��������
display����������������
–
���������������
с указанием.
Система ������������������������������������������������
Matlab������������������������������������������
имеет множество функций для графического
представления данных. Некоторые из них представлены в табл. 5.
Табл������
ица 5
Имя
plot
legend
title
xlabel
ylabel
text
axis
stem
stairs
figure
Формат
Назначение
plot(x1, y1, s1, x2, y2, s2, …) Построение графиков функций
Отображение на графике названий
legend(‘Name1’,’Name2’, …)
кривых
title(‘String’)
Создание заголовка для графика
xlabel(‘String’)
Создание названия для оси абсцисс
ylabel(‘String’)
Создание названия для оси ординат
Отображение на графике текста,
заданного параметром ‘String’,
text(x, y, ‘String’)
в произвольной точке графика,
определяемой координатами x и y
Изменение диапазонов отображеaxis( [ xmin, xmax, ymin,
ния значений по осям абсцисс
ymax ] )
и ординат
Построение графика решетчатой
stem(x, y, s)
функции
Построение графика выходного
stairs( x, y, s)
сигнала экстраполятора нулевого
порядка
figure
Создание нового графического окна
37
При вызове функции �������������������������������������������
plot���������������������������������������
в качестве входных аргументов следует
указать векторы значений по оси абсцисс и оси ординат, при этом размеры этих векторов должны быть одинаковы. Например, команда
>> x�����������������
������������������
= 0 : 0.1 : 2 * �����
pi���; y���
�� =
�� sin�������
����������
( x����
�����
); plot��
������( ���
x��, ��
y���)
отображает график функции синуса (рис. 6) на интервале от нуля
до 2π, при этом вектор с именем х является вектором значений по
оси абсцисс, а вектор с именем y����������������������������������
�� ���������������������������������
– значений по оси ординат. Команда ��������������������������������������������������������������
plot����������������������������������������������������������
создает новое графическое окно, в котором отображает график функции. Система автоматически определяет диапазоны отображения значений по осям абсцисс и ординат в соответствии с пределами изменения векторов х и y������������������������������
�������������������������������
. График функции в дальнейшем
можно интерактивно редактировать.
Для указания цвета отображаемой кривой на графике, типа ее
линии и маркера, которым отмечаются значения функции, при вызове функции plot�����������������������������������������������
���������������������������������������������������
следует указать третий параметр, который является строкой символов. Возможные значения символов представлены в табл. 6. В строке символов в любой последовательности следует
перечислить символы цвета и типа линии кривой, а также маркера.
Например, команда
>> plot��������������
������������������
(�������������
x������������
, y���������
����������
, ‘������
r�����
--���
s��
’)
отображает график функции синуса красной (буква «������������
r�����������
») пунктирной (символы «--») линией с маркером в виде квадрата (буква «�����
s����
»).
Рис. 6. Графическое окно с графиком функции y���
����
= sin(x)
���
38
Таблица 6
Цвет кривой
Тип линии
Символ
Цвет
Символ
b
синий
-
g
r
зеленый
красный
--.
c
бирюзовый
:
m
y
k
красный
анилиновый
желтый
черный
Тип
сплошная
линия
пунктир
точка-тире
пунктир
короткими
линиями
Маркер
Символ
Описание
.
точка
o
x
круг
крест
p
пятиугольная звезда
h
шестиугольная звезда
s
d
квадрат
ромб
равнобедренный треугольник с вершиной, направленной вниз
равнобедренный треугольник
равнобедренный треугольник с вершиной, направленной вправо
равнобедренный треугольник с вершиной, направленной влево
символ «плюс»
символ «звезда»
v
^
>
<
+
*
Если какой-то из символов не указан, то будут выбраны параметры
по умолчанию: сплошная синяя линия кривой и отсутствие мар­
кера.
Толщина линии кривой определяется параметром ����������
LineWidth�
и по умолчанию равна единице. Если необходимо изменить толщину линии, то при вызове функции ������������������������������
plot��������������������������
следует указать параметр
‘�����������������������������������������������������������������
LineWidth��������������������������������������������������������
’ и через запятую его новое значение. Например, команда
>> plot������������������������������
����������������������������������
(�����������������������������
x����������������������������
, y�������������������������
��������������������������
, ‘����������������������
r���������������������
--�������������������
s������������������
’, ‘��������������
LineWidth�����
’, 2)
отображает график функции синуса линией, толщина которой равна двум.
Если необходимо отобразить несколько кривых на одном графике, то при вызове функции ��������������������������������������
plot����������������������������������
сначала следует указать в списке
39
входных аргументов параметры для первой кривой, затем для второй и так далее. Например, команды
>> x����
�����
1 = ���������������
pi�������������
: 0.1 : 3 * ���������
pi�������
; y����
�����
1 = �����
sin��( �����
x����
1 );
>> x������������������
�������������������
2 = 0 : 0.1 : 4 * ���������
pi�������
; y����
�����
2 = �����
cos��( �����
x����
2 );
>> plot(x1, y1, ‘b:’, x2, y2, ‘r-o’, ‘LineWidth’, 2)
строят кривые функций синуса и косинуса на одном графике
(рис. 7). Функция синуса строится на интервале от π до 3π, а функция косинуса на интервале от 0 до 4π.
При вызове функции �������
legend�����������������������������������
в
����������������������������������
качестве входных аргументов следует указать названия кривых в виде строковых констант. Названия кривых следует перечислять в том же порядке, в каком кривые
следовали при вызове функции �����������������������
plot�������������������
. Например, команда
>> legend ( ‘ ����������
s���������
in ‘ , ‘ �������
c������
os ‘ )
отображает на графике названия кривых (рис. 7). Прямоугольник
с названиями кривых можно интерактивно перемещать по гра­
фику.
При вызове функций title��
�������, ���������������������������������������
xlabel���������������������������������
и ������������������������������
ylabel������������������������
в качестве входного параметра следует указать строку символов. Например, команда
>> xlabel( ‘ x1, x2 ‘ ); ylabel( ‘ y1, y2 ‘ )
создает названия для осей абсцисс и ординат (рис. 7).
Рис. 7. Графическое окно с графиками функций синуса и косинуса
40
Для отображения вспомогательных стрелок при выводе текста
функцией ����������������������������������������������������
text������������������������������������������������
используются последовательности символов, которые представлены в табл. 7. Для отображения стрелки последовательность символов следует включить в последовательность символов ‘���������������������������
String���������������������
’ при вызове функции ������������������������
text��������������������
. Например, команда
>> text(2.8, 0.6, ‘ cos ( x2 ) \rightarrow ‘ )
создает на графике надпись «cos(x2)» со стрелкой, направленной
вправо (рис. 7).
Для отображения на графике вспомогательной графической сетки следует ввести команду grid�
����� ��������������������������������
on������������������������������
, для удаления – команду grid�
����� �����
off��.
По умолчанию графическая сетка не отображается.
Если необходимо отказаться от автоматического выбора диапазонов отображения по осям абсцисс и ординат при построении графиков, то используется функция ���������������������������������
axis�����������������������������
, при вызове которой следует
указать вектор с четырьмя значениями: �������
xmin���
и ���������������
xmax�����������
– соответственно минимальное и максимальное значения для оси абсцисс;
ymin����������������������������������������������������������
и �������������������������������������������������������
ymax���������������������������������������������������
– соответственно минимальное и максимальное значения для оси ординат. Эта функция часто используется для проведения более подробного визуального анализа особенностей графика
построенной функции и вызывается после функции plot������������
����������������
. Например,
команда
>> axis( [ 4, 8, -1, 1 ] )
устанавливает для графика диапазоны изменения: для оси абсцисс
от 4 до 8, а для оси ординат – от –1 до 1.
При вызове функции ���������������������������������������
stem�����������������������������������
первым входным аргументом следует
указать вектор значений дискретных моментов времени, вторым –
вектор значений решетчатой функции, соответствующих этим моментам. Третий аргумент определяет цвет, тип линии и вид маркера
в соответствии с табл. 6. Если третий аргумент не указан, то будут
выбраны параметры по умолчанию: синяя сплошная линия и маркер в форме круга. Например, команда
Табл�����
ица 7
Строка
Описание
\leftarrow
\rightarrow
\uparrow
\downarrow
Стрелка влево
Стрелка вправо
Стрелка вверх
Стрелка вниз
41
>> t�����������������
������������������
= 0 : 0.2 : 2 * ����
pi��; ��
y���
��
= ����������
sin�������
( t����
�����
); ������
stem��( ���
t��, ��
y���)
строит график решетчатой функции (рис. 8) для непрерывной функции синуса в диапазоне значений аргумента от 0 до 2π.
При вызове функции �����������������������������������������
stairs�����������������������������������
первым входным аргументом следует
указать вектор значений дискретных моментов времени, вторым –
вектор значений непрерывной функции, соответствующих этим моментам. Третий аргумент определяет цвет, тип линии и вид маркера
в соответствии с табл. ��������������������
6. �����������������
Например���������
, команда
�������
>> t = 0 : 0.2 : 2 * pi; y = sin( t ); stairs( t, y ); grid on;
строит график выходного сигнала экстраполятора (рис. 9) при входном непрерывном синусоидальном сигнале на временном интервале от 0 до 2π с периодом дискретности 0,2 с.
Функция ���������������������������������������������������
figure���������������������������������������������
используется для отображения графиков в разных графических окнах. После ее вызова для построения графика
в новом графическом окне следует вызвать соответствующую графическую функцию системы Matlab�
�������.
Для использования графиков в других приложениях, например
в текстовом редакторе ����������
Microsoft� ����������������������������������
Word������������������������������
, следует сначала скопировать
изображение в буфер обмена системы ���������������������������
Windows��������������������
посредством выбора
в меню графического окна пункта «�������
Edit���
– Copy�
����� Figure�����������
�����������������
», а затем
Рис. 8. Графическое окно с графиком синусоидальной решетчатой функции
42
Рис. 9. Выходной сигнал экстраполятора нулевого порядка
в приложении вставить изображение из буфера обмена. Для сохранения графика на диске в графическом файле следует выбрать команду «������������
File��������
– Save�
����� ���������������������������������������������
as�������������������������������������������
…», выбрать тип файла, ввести его имя и нажать кнопку «Сохранить».
Пример расчета переходного процесса
Получить переходный процесс дискретной САУ с экстраполя­
тором нулевого порядка и с передаточной функцией непрерывной
части
K (1 + τ1 p )
Wн ( p) = 2
,
(25)
p (1 + T1 p )(1 + T2 p )(1 + T3 p )
где K = 10 �c–1; t1 = 0,27 ���
c��; T1 = 0,01 ���
c��; T2 = 0,001 ���
c��; T3 = 0,008 ������
c�����
. Период дискретности Т = 0,2 с.
В соответствии с выражениями (13)–(16) разложим передаточную функцию (25) на элементарные дроби. В данном случае r� = 2
и в соответствии с (15)
d

p2 K (1 + τ1 p )
D1 = 
= K (τ1 − T1 − T2 − T3 ) = 2,1;

2
 dp p (1 + T1 p )(1 + T2 p )(1 + T3 p ) p =0
43


p2 K (1 + τ1 p )
D2 =  2
= K = 10.

 p (1 + T1 p )(1 + T2 p )(1 + T3 p ) p =0
Производная знаменателя передаточной функции
′
С′( p) =  p2 (1 + T1 p )(1 + T2 p )(1 + T3 p ) = 2 p + 3 (T1 + T2 + T3 ) p2 +
+ 4 (T1T2 + T1T3 + T2T3 ) p3 + T1T2T3 p4 . (26)
В соответствии с (16) коэффициент


K (1 + τ1 p )
N1 = T1 
=

2
3
4
 2 p + 3 (T1 + T2 + T3 ) p + 4 (T1T2 + T1T3 + T2T3 ) p + T1T2T3 p  p =− 1
T1
=
K (T1 − τ1 )
(T1 − τ1 )
=
= −0,14.
1 T2 T3 T2T3 (T1 − T2 )(T1 − T3 )
−
−
+
T1 T12 T12 T13
KT13
Аналогичным образом рассчитываются остальные коэффициенты:
KT23 (T2 − τ1 )
 B( p) 
N2 = T2 
=
= −4,27 ⋅ 10− ;

 C′( p)  p =− 1 (T2 − T1 )(T2 − T3 )
T2
KT33 (T3 − τ1 )
 B( p) 
N3 = T3 
=
= 0,1.

 C′( p)  p =− 1 (T3 − T1 )(T3 − T1 )
T3
В итоге передаточную функцию непрерывной части (25) можно
представить в виде
Wн ( p) =
=
K (1 + τ1 p )
p (1 + T1 p )(1 + T2 p )(1 + T3 p )
2
=
N3
D1 D2
N1
N2
+ 2+
+
+
.
p p
1 + T1 p 1 + T2 p 1 + T3 p
Дискретная передаточная функция разомкнутой системы с экстраполятором нулевого порядка в соответствии с выражением (17)
44
W (z) =
=
z − 1  −1  Wн ( p) 
Z L 
 =
z
 p 

 N3
N1
N2
z − 1  −1  D1 D2
Z L  2 + 3 +
+
+
. (27)
z
p (1 + T1 p ) p (1 + T2 p ) p (1 + T3 p )
p
 p

По таблицам z-преобразований находим

 −1  1  T 2 z (z + 1)
 1 
Tz
Z  L−1  2  =
;
Z
;
 L  3  =
2
3
 p  (z − 1)
 p  2 (z − 1)




(1 − d )z
α

Z  L−1 
,
 =
 p ( p + α ) (z − 1)(z − d )

где d = exp��
�����
(–αT). Тогда выражение (27) можно переписать в виде
W (z) =
2
N2 (1 − d2 )z
z − 1  D1Tz D2T z (z + 1) N1 (1 − d1 )z
+
+
+
+
2
3
z  (z − 1)
(z − 1)(z − d1 ) (z − 1)(z − d2 )
2 (z − 1)

+
N3 (1 − d3 )z  D1T D2T 2 (z + 1)
+
+
=
(z − 1)(z − d3 )  z − 1 2(z − 1)2
+
N1 (1 − d1 ) N2 (1 − d2 ) N3 (1 − d3 )
+
+
,
(z − d1 )
(z − d2 )
(z − d3 )
где� di = exp(–T/Ti), i = 1, 2, 3. ���������������������������������
Приводя последнее выражение к общему знаменателю, получим дискретную передаточную функцию
разомкнутой системы
b1z4 + b2 z3 + b3 z2 + b4 z + b
W (z) =
,
(28)
a0 z + a1z4 + a2 z3 + a3 z2 + a4 z + a
где� b0 = 0; b1 = 0,65; b2 = –0,2; b3 = –0,05; b4 = 1,95 ⋅ 10–10; b5 =
= –1,2 ⋅ 10–10; a0 = 1; a1 = –2; a2 = 1; a3 = –2,08 ⋅ 10–9; a4 = –2,86 × × 10–20; a5 = –4,43 ⋅ 10–44.
Дискретная передаточная функция замкнутой системы
H(z) =
b1z4 + b2 z3 + b3 z2 + b4 z + b
W (z)
=
,
1 + W (z) a0 z + a1z4 + a2 z3 + a3 z2 + a4 z + a
(29)
где a0 = 1; a1 = –1,35; a2 = 0,8; a3 = –0,05; a4 = –1,95 ⋅ 10–10; a5 =
= –1,2 ⋅ 10–24. Вследствие того, что коэффициенты b4, b5, a4 и a5
45
имеют малые значения, их можно не учитывать в дальнейших расчетах, и тогда дискретная передаточная функция замкнутой системы принимает вид
H(z) =
b1z4 + b2 z3 + b3 z2
W (z)
=
.
1 + W (z) a0 z + a1z4 + a2 z3 + a3 z2
Умножим числитель и знаменатель на z–5 и получим дискретную
передаточную функцию замкнутой системы как дробно-рациональную функцию от z–1
b1z−1 + b2 z−2 + b3 z−3
W (z)
H(z) =
=
.
(30)
1 + W (z) a0 + a1z−1 + a2 z−2 + a3 z−3
Из сравнения формул (8) и (20) следует взаимно однозначная
связь разностного уравнения и дискретной передаточной функции.
Из выражения для дискретной передаточной функции замкнутой
системы можно получить разностное уравнение, описывающее динамику системы:
a0y[n] + a1y[n – 1] + a2y[n – 2] + a3y[n – 3] =
= b1g[n – 1] + b2g[n – 2] + b3g[n – 3].
Из последнего выражения получим рекуррентную формулу для
вычисления решетчатой функции управляемой величины
y[n] = (b1g[n – 1] + b2g[n – 2] + b3g[n – 3] –
– a1y[n – 1] – a2y[n – 2] – a3y[n – 3]) / a0.����
(31)
Значения решетчатой функции управляемой величины в моменты времени n = 0, 1, 2 определяются соответственно по выражениям
(22)–(24):
y[0] = b0 / a0 = 0;
y[1] = (b0 + b1 – a1y[0]) / a0 = b1 / a0 = 0,65;
y[2] = (b0 + b1 + b2 – a1y[1] – a2y[0]) / a0 = 1,33.
Для n ≥ 3 значения решетчатой функции управляемой величины
определяются выражением (31). Учитывая, что g[n] = 1 для всех
n ≥ 0, и a0 = 1, то его можно упростить:
y[n] = b1 + b2 + b3 – a1y[n – 1] – a2y[n – 2] – a3y[n – 3].����
(32)
Ниже представлена программа расчета переходного процесса системы в соответствии с выражением (32). Результатом работы про46
4UFQ3FTQPOTF
"NQMJUVEF
5JNFTFD
Рис. 10. Переходная характеристика дискретной системы
граммы является график переходного процесса, изображенный на
рис. 10.
Комментарии в среде ������������������������������������
Matlab������������������������������
обозначаются знаком процента ���
%.
Строки программы, которые начинаются с этого знака, не выполняются и при выполнении работы их можно не вводить.
Программа расчета переходного процесса
в системе ������
Matlab
% Ввод коэффициентов передаточной функции замкнутой си% стемы
b0 = 0; b1 = 0.65; b2 = -0.2; b3 = - 0.05;
a0 = 1; a1 = -1.35; a2 = 0.8; a3 = -0.05;
% Вычисление первых трех значений переходного процесса в соот% ветствии с
% формулами (22)–(24). Нумерация индексов происходит с едини% цы в
% следствие того, что Matlab не поддерживает индексацию масси% вов с
% нулевого��������
����������������
индекса
�������
47
y(1) = b0/a0; y(2) = (b0 + b1 - a1*y(1))/a0;
y(3) = (b0 + b1 + b2 - a1*y(2) - a2*y(1))/a0;
% Вычисление значений переходного процесса в соответствии с вы% ражением
% (32)
for i = 4 : 40
y(i) = b1 + b2 + b3 - a1 * y(i - 1)- a2 * y(i-2) – a3 * y(i-3);
end
% Построение графика решетчатой функции управляемой вели% чины
stem����������
(���������
y��������
); grid�
����� on�
���;
% Построение переходной характеристики системы в новом графи% ческом окне
figure; stairs(y); grid on; xlabel(‘t, c’);
2. Порядок выполнения работы
1. Перед выполнением работы необходимо пройти инструктаж
по технике безопасности.
2. Получить у преподавателя вариант задания. Номера вари­антов
и соответствующие им исходные данные представлены в табл. 8.
3. В соответствии с выражениями (13)–(16) разложить передаточную функцию непрерывной части на элементарные дроби.
4. Используя таблицу z-преобразований, представленную в приложении, получить дискретную передаточную функцию разомкнутой системы с экстраполятором нулевого порядка в соответствии
с выражением (17) и дискретную передаточную функцию замкнутой системы в соответствии с выражением (19).
5. В соответствии с выражением для дискретной передаточной
замкнутой системы получить разностное уравнение в обратных разностях, описывающее динамику системы.
6. Разработать программу для расчета переходного процесса в системе ��������
Matlab��.
7. Получить график переходного процесса системы.
8. По графику переходного процесса определить устойчивость
системы. Для устойчивых систем определить длительность переходного процесса и перерегулирование.
48
49
0,8
100
20
150
30
40
100
30
30
70
40
20
40
10
11
12
13
14
15
16
17
18
19
20
21
0,7
0,2
0,7
0,6
0,3
0,015
0,01
0,3
0,009
0,2
0,1
0,2
0,5
0,4
0,1
0,1
0,3
0,2
0,2
0,2
50
150
120
10
15
50
50
100
150
1
2
3
4
5
6
7
8
9
Т1, с
К, с–1
№
варианта
Таблица 8
0,4
0,7
0,025
0,04
0,06
0,009
0,025
0,75
0,6
0,7
0,6
0,04
Т2, с
Т3, с
0,5
0,1
0,5
0,4
0,35
0,8
0,8
0,5
0,1
0,1
0,2
0,2
0,8
0,8
0,3
0,1
0,1
0,1
τ1, с
0,7
0,7
0,7
τ2, с
50
50
40
50
70
20
40
60
20
50
50
30
30
30
40
50
60
50
50
50
50
Т, мс
K
1
+
T
p
( 1 )(1 + T2 p )
p2 (1 + T1 p )(1 + T2 p )
K (1 + τ1 p )
p (1 + T1 p )(1 + T2 p )
K (1 + τ1 p )
(1 + T1 p )(1 + T2 p )
K (1 + τ1 p )
p2 (1 + T1 p )
K (1 + τ1 p )(1 + τ2 p )
p2 (1 + T1 p )
K (1 + τ1 p )
p (1 + T1 p )
K (1 + τ1 p )
Передаточная функция
непрерывной части Wн(p)
50
К, с–1
10
20
80
30
45
50
30
100
150
10
10
10
10
270
300
100
120
150
150
№
варианта
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Окончание табл. 8
0,01
0,01
0,1
0,7
0,6
0,6
0,5
0,4
0,3
0,7
0,1
0,1
0,7
0,7
0,7
0,8
0,8
0,007
0,01
Т1, с
0,1
0,1
0,6
0,1
0,1
0,1
0,01
0,03
0,1
0,09
0,01
0,05
0,3
0,02
0,3
0,01
0,01
0,001
0,001
Т2, с
0,005
0,005
0,01
0,05
0,01
0,05
0,005
0,005
0,0005
0,005
Т3, с
0,5
0,04
0,5
0,1
0,2
0,04
0,09
0,2
0,2
0,2
0,8
0,7
0,7
τ1, с
0,5
0,5
0,4
0,4
0,3
0,4
τ2, с
20
30
40
20
24
40
20
30
20
10
9
20
20
2,5
5
20
10
1
1
Т, мс
p (1 + T1 p )(1 + T2 p )(1 + T3 p )
K (1 + τ1 p )
K (1 + τ1 p )
(1 + T1 p )(1 + T2 p )(1 + T3 p )
K
(1 + T1 p )(1 + T2 p )(1 + T3 p )
p2 (1 + T1 p )(1 + T2 p )
K (1 + τ1 p )(1 + τ2 p )
p (1 + T1 p )(1 + T2 p )
K (1 + τ1 p )(1 + τ2 p )
K
p (1 + T1 p )(1 + T2 p )
Передаточная функция
непрерывной части Wн(p)
3. Оформление отчета
Оформить отчет в соответствии с требованиями нормоконтроля.
Отчет должен содержать:
исходные данные;
структурную схему системы управления;
выражения для дискретных передаточных функций разомкнутой и замкнутой систем;
разностное уравнение, описывающее динамику системы;
программу расчета переходного процесса в системе Matlab;
график переходного процесса системы;
выводы по работе.
Библиографический список
1. Кузин Л. Т. Расчет и проектирование дискретных систем управления. М.: Гос. науч.-техн. изд-во машиностроит. лит., 1962.
683 с.
2. Бесекерский В. А., Попов Е. П. Теория систем автоматического
управления. М.: Наука, 1975. 768 с.
3. Бесекерский В. А. Цифровые автоматические системы. М.: Наука, 1976. 576 с.
4. Деч Г. Руководство к практическому применению преобразования Лапласа и z-преобразования. М.: Наука, 1971. 288 с.
51
ПРИЛОЖЕНИЕ
Таблица z-преобразований
Производящая непрерывная
функция
преобразование
оригинал
Лапласа
Решетчатая
функция
z-преобразование
1(t)
1
p
1[n]
z
z −1
t ⋅ 1(t)
1
p2
nT
(z − 1)
t2
⋅1(t)
2!
1
p3
(nT )2
T 2z (z + 1)
e −αt ⋅1(t)
(1 − e )1(t)
−αt
te −αt ⋅1(t)
Tz
2
2!
2! (z − 1)
1
p+α
e −αnT = dn
z
, d = e −αT
z−d
α
p(p + α)
1 − e −αnT
(1 − d )z
(z − 1)(z − d )
3
zd
1
(p + α)
2
nTe −αnT
(z − d )2
Содержание
1. Методические указания.................................................... 3
2. Порядок выполнения работы............................................. 48
3. Оформление отчета..........................................................51
Библиографический список..................................................51
Приложение. Таблица z-преобразований................................52
52
Документ
Категория
Без категории
Просмотров
0
Размер файла
1 295 Кб
Теги
metod, ukaz, sist, disktetnye, inform, izmerit
1/--страниц
Пожаловаться на содержимое документа