Методические указания
«Ознакомление с системой Matlab»
по курсу «ТАУ»
1 Цель работы
Освоение навыков работы в системе Matlab. Изучение средств формирования и анализа моделей линейных стационарных систем автоматического управления.
2 Основные сведения о системе Matlab
Система Matlab (сокращение от MATrix LABoratory –МАТричная ЛАБоратория) является интерактивной системой для выполнения инженерных и научных расчетов, ориентированной на работу с массивами данных.
Основным объектом системы Matlab является прямоугольный числовой массив, который допускает комплексные элементы и ввод матриц без явного указания их размеров. По умолчанию предполагается, что любая заданная переменная является вектором или матрицей. Отдельное заданное число программа воспринимает как матрицу размером 1´1, а вектор-строку с N элементами – как матрицу размером 1´N.
Работа в среде Matlab может осуществляться в двух режимах:
- в режиме калькулятора, когда вычисления производятся непосредственно после набора очередного оператора или команды Matlab;
- путем вызова программы, составленной и записанной на диске на языке Matlab.
3 Работа в режиме калькулятора
3.1 Ввод данных
Ввод чисел с клавиатуры производится по правилам:
- для отделения дробной части мантиссы числа применяется десятичная точка;
- десятичный показатель числа записывается в виде целого числа после записи символа е;
- между записью мантиссы числа и символом е не должно быть никаких символов, в т. ч. и символов пробела.
Для записи промежуточных результатов в память ПК можно использовать имена переменных. Для этого применяется операция присваивания:
<имя переменной> = <выражение> [;]
Имена переменных могут содержать лишь буквы латинского алфавита или цифры и должны начинаться с буквы. Общее число символов в имени может достигать 19. Особенностью языка Matlab является то, что прописные и строчные буквы в именах различаются системой. Например, имена «а» и «А» обозначают разные переменные.
Если выражение не заканчивается символом «;», результат его выполнения будет выведен в командное окно в виде:
<имя переменной> = <результат>
Ввод значений элементов матрицы осуществляется в квадратных скобках по строкам. Элементы строки отделяются друг от друга пробелом или запятой, а строки отделяются друг от друга знаком «;».
Язык системы Matlab содержит встроенную арифметику комплексных чисел. Для обозначения мнимой единицы в Matlab зарезервировано два имени – i и j. Ввод с клавиатуры значения комплексного числа осуществляется следующим образом:
<имя переменной> = <значение действительной части> + i [j] * < значение мнимой части>
Переменные, зарезервированные системой Matlab:
i, j – мнимая единица;
pi – число p (3,141592653589793);
inf – обозначение машинной бесконечности;
NaN – обозначение неопределенного результата (например, типа 0/0 или inf/inf);
ans – результат последней операции без знака присваивания.
3.2 Некоторые функции формирования матриц. Простейшие операции над матрицами
zeros(m, n) – создает матрицу m´n с нулевыми элементами.
ones(m, n) – создает матрицу m´n с единичными элементами.
eye(m, n) – создает матрицу m´n с единичными элементами по главной диагонали и остальными нулевыми элементами.
inv(A) – вычисляет матрицу, обратную матрице А.
А’ – вычисляет матрицу
.
eig(A) – вычисляет массив собственных чисел матрицы А, т. е. корни характеристического полинома
.
[А В] – конкатенация (объединение) матриц А и В.
Элемент матрицы А, находящийся на пересечении i-той строки и j-того столбца, обозначается A(i, j). Для доступа к i-той строке матрицы А следует указать: A[i,:]. Для доступа к j-тому столбцу матрицы А следует указать: A[:,j]. Для доступа к i-тому элементу вектора v следует указать v[i].
Задание
Вычислите значение выражения
,
где
.
Для этого введите
» A=[1 0 2 1; 0 2 1 0; 2 1 0 0; 1 0 0 0]
A =
1 0 2 1
0 2 1 0
2 1 0 0
1 0 0 0
» B=[1 1 1 1; 2 1 -2 -1; 0 0 0 5]
B =
1 1 1 1
2 1 -2 -1
0 0 0 5
» C=[1; 0; -2]
C =
1
0
-2
» E=eye(4)
E =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
» (inv(A)-E)*B'*C % можно (A^-1-E)*B'*C
ans =
-10
18
-38
93
Получите матрицу F=[A BT]. Для этого введите:
» F=[A B']
F =
1 0 2 1 1 2 0
0 2 1 0 1 1 0
2 1 0 0 1 -2 0
1 0 0 0 1 -1 5
Создайте вектор-строку v, состоящую из элементов третьей строки матрицы А. Для этого введите:
» v=A(3,:)
v =
2 1 0 0
Присвойте элементу А2,3 значение –5. Для этого введите:
» A(2,3)=-5
A =
1 0 2 1
0 2 -5 0
2 1 0 0
1 0 0 0
Присвойте элементу v4 значение элемента А2,3. Для этого введите:
» v(4)=A(2,3)
v =
2 1 0 -5
3.3 Операторы управления вычислительным процессом
Оператор условного ветвления:
if <логическое выражение1>, группа операторов1
elseif <логическое выражение2>, группа операторов2
else группа операторов3
end
Оператор условия if... end вычисляет некоторое логическое выражение и выполняет соответствующую группу операторов в зависимости от значения этого выражения. Если <логическое выражение1> истинно, то выполняется группа операторов1, если же оно ложно проверяется <логическое выражение2>, если оно истинно, то выполняется группа операторов2, в противном же случае выполняется группа операторов3. Оператор elseif может многократно использоваться внутри оператора условия if... end.
Оператор цикла с предпроверкой условия выхода:
while <логическое выражение>
группа операторов
end
Оператор цикла многократно выполняет группу операторов, пока <логическое выражение> истинно.
Выход из while–цикла можно осуществить посредством вызова функции break.
Оператор цикла с предопределенным числом повторений:
for <переменная цикла>=<начальное значение>:<приращение >:<конечное значение>
группа операторов
end
Оператор цикла for... end выполняет группу операторов заранее определенное число повторений. По умолчанию приращение равно единице. Но можно также задавать любое приращение, в том числе отрицательное или нецелое число. В качестве переменной цикла можно так же использовать и массивы, в этом случае цикл будет выполняться столько раз, сколько столбцов в матрице. При этом переменная цикла будет представлять из себя вектор-столбец соответствующий столбцу матрицы на каждом шаге цикла.
Задание
Создайте и выведите на экран таблицу значений функции y=sin(x) при изменении х в диапазоне от 0 до 2p с шагом p/10. Для этого введите:
»M=[ ];
» for x=0:pi/10:pi
M=[M;[x sin(x)]];
end; M
M =
0 0
0.3142 0.3090
0.6283 0.5878
0.9425 0.8090
1.2566 0.9511
1.5708 1.0000
1.8850 0.9511
2.1991 0.8090
2.5133 0.5878
2.8274 0.3090
3.1416 0.0000
3.4 Построение графиков
Основной функцией, осуществляющей построение графиков на экране дисплея, является функция plot. Общая форма обращения к данной функции такова:
plot(x1,y1,linespec1,x2,y2, linespec2,…)
где xi – массив значений аргумента, а yi – массив значений функции, соответствующей i-тому графику. Параметры linespeci являются символьными (их указание необязательно). Параметр linespeci может содержать три специальных символа, определяющих тип линии, тип точки и цвет линии графика.
Команда plot(y) строит график вектора у, используя в качестве аргумента порядковый номер элементов вектора. Если у – вектор комплексных чисел, то команда plot(y) отображает на комплексной плоскости элементы вектора, т. е. действует аналогично команде plot(real(y),imag(y)).
Ниже приведены некоторые процедуры оформления графиков:
grid – нанесение координатной сетки.
title – заголовок графика.
xlabel –название оси х.
ylabel – название оси у.
Чтобы создать несколько графических окон, необходимо воспользоваться командой figure, которая создает новое графическое окно, оставляя предыдущие.
Чтобы разместить несколько графиков в одном окне, необходимо воспользоваться командой subplot. Обращение к этой процедуре должно предшествовать обращению к процедуре построения графика и выглядеть следующим образом:
subplot(n, m,p)
где число n указывает, на сколько частей делится поле графика по вертикали; m – по горизонтали; p – номер графического подокна, в котором будет строиться график. Подокна нумеруются слева направо, сверху вниз.
Задание
Выведите в одном графическом окне графики функций
и
при изменении t от 0 до 10, нанеся координатную сетку, подписав оси координат и дав название графику. А затем во втором графическом окне постройте графики указанных функций в разных подокнах. Для этого введите:
» t=0:0.01:10;
» f1=exp(-t); f2=exp(-t/2);
» plot(t, f1,t, f2); grid; xlabel('t'); ylabel('f1, f2');
» title('Графики функций f1=exp(-t) f2=exp(-t/2)')
» figure;
» subplot(2,1,1); plot(t, f1); grid;
» xlabel('t'); ylabel('f1'); title(' График функции f1(t)=exp(-t))');
» subplot(2,1,2); plot(t, f2); grid;
» xlabel('t'); ylabel('f2'); title(' График функции f2(t)=exp(-t/2))');
Выведите в третьем окне распределение элементов вектора
. Для этого введите:
» V=[-1-2i -1+2i 3i -3i 0.5 -1.5]; plot(V,'*');
3.5 Некоторые команды общего назначения
quit завершает работу в системе MATLAB;
who выводит список текущих переменных из рабочей области памяти;
clear производит удаление переменных и функций из памяти;
clc очищает рабочую область экрана;
disp <символьная строка> осуществляет вывод строки в командном окне;
pause (<длительность паузы в секундах>) при отсутствии параметра ожидает нажатия клавиши;
size определяет размер двумерного массива.
Задание
Осуществите очистку рабочей области памяти и очистку экрана. Для этого введите:
» clear; clc;
4 Исследование линейных стационарных систем управления с помощью средств пакета прикладных программ control system toolbox
4.1 Основные сведения о Control System Toolbox
Пакет прикладных программ (ППП) Control System Toolbox – коллекция алгоритмов Matlab для моделирования, анализа и проектирования непрерывных и дискретных САУ.
Ввод модели линейной стационарной системы в среду пакета возможен в трех формах: в форме матриц пространства состояния, в виде коэффициентов числителей и знаменателей передаточных функций и в форме задания нулей, полюсов и коэффициента передачи системы.
Рассмотрим далее основные средства формирования и анализа моделей САУ на примере модели двигателя постоянного тока.
4.2 Математическая модель двигателя постоянного тока
Математическая модель двигателя постоянного тока с управлением по напряжению якоря имеет вид
, (1)
где
– угловая скорость двигателя;
– напряжение в цепи якоря;
– электромагнитная и электромеханическая постоянные двигателя.
Модель (1) может быть записана в виде модели пространства состояния:
, (2)
где
– вектор состояния,
;
– управление;
–выход;
,
,
,
.
4.3 Создание модели линейной стационарной системы
К процедурам создания LTI-моделей относятся:
ss Создает модель пространства состояния по заданным матрицам А, В, С, D уравнений состояния системы.
dss Создает аналогичную модель по описанию пространства состояния более общего вида, когда уравнения переменных состояния не разрешены относительно производных.
tf Создает модель по заданным передаточным функциям системы.
zpk Создает модель по заданным нулям, полюсам и коэффициентам передачи системы.
filt Создает модель по дискретным передаточным функциям, записанным в форме полиномов от z-1.
set Присваивает значения некоторым другим полям LTI-объекта (названиям входов и выходов, названиям системы и т. п.)
Процедура get дает возможность получить полную характеристику модели, включая имена входов и выходов, примечания и т. п.
Задание
Задайте параметры исследуемой системы (2). Для этого ведите
» Te=0.2; Tm=0.5; kd=2.5; ku=4; kp=1.5;
Задайте матрицы А, В, С, D. Для этого введите
»A=[0 1;-1/(Te*Tm) -1/Te]
A =
0 1
-10 -5
» B=[0; kd/(Te*Tm)]
B =
0
25
» C=[1 0]
C =
1 0
» D=0
D =
0
Создайте объект, соответствующий модели двига, с использованием модели пространства состояния. Для этого введите:
» ssID=ss(A, B,C,0)
После того, как система сформирована, при помощи процедуры set присвойте названия входу и выходу системы, введите комментарий, описывающий систему. Для этого введите:
» set(ssID,'InputName', 'Напряжение','OutputName','Угловая скорость', 'Notes', 'Модель исполнительного двигателя')
Просмотрите описание системы с помощью команды get. Для этого введите
» get(ssID)
4.4 Анализ САУ
Пакет CONTROL представляет широкий набор процедур, осуществляющих анализ САУ с самых различных точек зрения.
Для нахождения временных откликов системы на внешние воздействия некоторых видов предусмотрены функции:
impulse Нахождение реакции системы на единичное импульсное входное воздействие.
step Нахождение реакции системы на единичный скачок входного воздействия.
initial Определение собственного движения при произвольных начальных условиях.
lsim Определение реакции системы на входное воздействие произвольной формы, задаваемое в виде вектора его значений во времени.
Некоторые процедуры анализа систем в комплексной области:
bode Строит графики АЧХ и ФЧХ (диаграмму Боде) указанной системы.
nyquist Строит в комплексной плоскости график АФЧХ системы
margin Строит диаграмму Боде с указанием запасов по амплитуде и фазе. (Для одномерных систем).
Задание
Произведите анализ системы во временной и комплексной области. Для этого выполните следующую ниже последовательность команд.
Для просмотра импульсной характеристики исследуемой системы (2) введите команду:
» impulse(ssID)
Появится дополнительное окно с графиком характеристики.
Для просмотра переходной характеристики исследуемой системы (2) введите команду:
»step(ssID)
Постройте график реакции системы на начальные условия
. Для этого введите
» x0=[1 0]; initial(ssID, x0);
Для просмотра АЧХ и ФЧХ исследуемой системы (2) введите команду:
»bode(ssID)
Для просмотра АФЧХ исследуемой системы (2) введите команду:
»nyquist(ssID)
Создайте графическое окно, в котором расположены временные характеристики системы: графики импульсной и переходной характеристик системы в разных подокнах; создание второе графическое окно, в котором расположены частотные характеристики системы: диаграмма Боде и АФЧХ системы в разных подокнах. Для этого введите:
» subplot(2,1,1); impulse(ssID);
» xlabel('t'); ylabel('g(t)'); title('Импульсная характеристика');
» subplot(2,1,2); step(ssID);
» xlabel('t'); ylabel('h(t)'); title('Переходная характеристика');
» figure;
» subplot(1,2,1);bode(ssID);
» xlabel('Re'); ylabel('Im'); title(' АЧХ и ФЧХ ');
» subplot(1,2,2); nyquist(ssID);
» xlabel('Re'); ylabel('Im'); title(' АФЧХ ');
5 Создание М-файлов
Создание программы в среде Matlab осуществляется либо при помощи собственного встроенного (начиная с версии Matlab 5), либо стороннего текстового редактора, который вызывается автоматически, если он предварительно установлен с помощью команды Preferences меню File. Чтобы создать новый М-файл, нужно вызвать команду меню File®New®M-file.
В языке Matlab имеются программы двух типов: так называемые Script-файлы (файл-сценарии или управляющие программы) и файл-функции (процедуры).Файлы обоих типов имеют расширение «.m». При помощи Script-файлов оформляются основные программы, управляющие от начала и до конца организацией всего вычислительного процесса, или отдельные части основных программ. Как файл-функции оформляются отдельные процедуры и функции (т. е. такие части программы, которые рассчитаны на неоднократное использование Script-файлами или другими процедурами при изменяемых значениях входных параметров).
Главным отличием текстов этих двух видов файлов является то, что файл-функции имеют первую строку вида:
function <ПКВ> = <имя процедуры> (<ПВВ>)
где ПКВ – Перечень Конечных Величин, ПВВ – Перечень Входных Величин.
Script-файлы такой строки не имеют.
Основные особенности записи текста М-файла:
- обычно каждый оператор записывается в отдельной строке текста программы. Признаком конца оператора является символ (он не появляется в окне) возврата каретки и перехода на следующую строку, который вводится в программу при нажатии клавиши [Enter];
- можно размещать несколько операторов в одной строке. Тогда предыдущий оператор должен заканчиваться символом «,» или «;»;
- длинный оператор можно записывать в несколько строк. При этом предыдущая строка оператора должна заканчиваться тремя точками «…»;
- если оператор не заканчивается символом «;», результат его действия при выполнении программы будет выведен в командное окно;
- строка программы, начинающаяся с символа «%» не выполняется. Эта строка воспринимается системой Matlab как комментарий;
- строки комментария, предшествующие первому выполняемому оператору программы, воспринимаются системой Matlab как описание программы. Именно эти строки выводятся в командное окно, если в нем набрана команда:
help <имя файла>
- в программах на языке Matlab отсутствует оператор окончания текста программы;
- в языке Matlab переменные не описываются и не объявляются. Любое новое имя, появляющееся в тексте программы, воспринимается системой Matlab как имя матрицы. Размер этой матрицы устанавливается при предварительном вводе значений ее элементов либо определяется действиями по установлению значений ее элементов, описанными в предыдущем операторе или процедуре. В языке Matlab невозможно использование матрицы или переменной, в которой предварительно не введены или не вычислены значения её элементов (а значит, и не определены размеры этой матрицы). В этом случае при выполнении программы Matlab выдаст сообщение об ошибке «Переменная не определена».
- имена переменных могут содержать лишь буквы латинского алфавита или цифры и должны начинаться с буквы. Общее число символов в имени может достигать 19. Особенностью языка Matlab является то, что прописные и строчные буквы в именах различаются системой. Например, символы «а» и «А» могут использоваться в одной программе для обозначения разных величин.
Задание
Создайте Script-файл с программой, выполняющей следующие действия:
1) очистку рабочей области памяти и очистку экрана (п. 3.5);
2) создание модели ДПТ в виде модели пространства состояний (п. 4.2);
3) создание графического окна «Временные характеристики системы», в котором расположены графики импульсной и переходной характеристик системы в разных подокнах (п. 4.3);
4) создание второго графического окна «Частотные характеристики системы», в котором расположены диаграмма Боде и АФЧХ системы в разных подокнах (п. 4.3).
По умолчанию созданные М-файлы сохраняются в каталоге …\Matlab\Work\. Чтобы сделать рабочим другой каталог, воспользуйтесь командой «Set Path» меню «File». В открывшемся диалоговом окне «Path Browser» вы увидите перечень путей, которые автоматически проверяются системой Matlab при поиске файлов. Введите путь к вашему каталогу в поле «Current Directory», чтобы сделать нужный каталог текущим.
6 Работа со справочной системой Matlab
Вызов справки о любой функции Matlab можно осуществить командой
help <имя функции>
При вызове команды demo на экране появляется окно Matlab Demo Window, с помощью которого можно осуществить вызов демонстрационных программ, позволяющих ознакомиться со средствами и возможностями среды Matlab и стандартных ППП (Toolboxes).
Задание
Ознакомьтесь со справочными сведениями об изученных функциях. Просмотрите демонстрационную программу Toolboxes\Control System\Model Analysis Example.
Контрольные вопросы
- Назовите основной вычислительный объект MatLab.
- Вычилите выражение
для произвольных матриц А, В,С размерности 3´3 и единичной матрицы Е размерности 3´3.
- Постройте графики функций sin(t) и cos(3t) при tÎ[0,2p] с шагом 0,01p:
а) в двух разных графических окнах;
б) в одном графическом окне в одной системе координат;
в) в одном графическом окне в двух разных системах координат, расположенных друг под другом.
Составитель: аспирант каф. ТК


