- •Основы разработки систем управления в среде matlab
- •Лабораторная работа №1 вычисления и визуализация результатов в среде matlab
- •1.1. Основные сведения об операциях и функциях
- •1.2. Операции с векторами и матрицами
- •1.3. Построение графиков функций
- •Трехмерная графика
- •1.4. Порядок выполнения индивидуальных заданий по лабораторной работе
- •1.5. Контрольные вопросы
- •Приложение 1.1
- •Лабораторная работа №2 программирование в среде matlab
- •Введение
- •2.1. Управляющие конструкции языка matlab
- •2.1.1. Оператор условного перехода
- •2.1.2. Оператор переключения
- •2.1.3. Оператор цикла с определенным количеством повторений for…end
- •2.1.4. Цикл с неизвестным количеством повторений
- •2.2. Сценарии и m-файлы
- •2.2.1. Создание файла-сценария
- •2.2.2. Требования к оформлению м-файлов
- •2.2.3. Типовая структура файла-сценария
- •2.3. Порядок выполнения работы
- •2.4. Контрольные вопросы
- •Дискретные lti-объекты. Переход от непрерывной модели Sn к дискретной Sd и обратно с периодом дискретности Ts осуществляется с помощью функций c2d и d2c соответственно:
- •3.2. Основные сведения об используемых функциях
- •Исследование переходной функции и весовой функции
- •Исследование лчх – логарифмических частотных характеристик
- •3.3. Порядок выполнения работы
- •3.4. Контрольные вопросы
- •Приложение 3.1 Основные форматы используемых функций
- •Приложение 3.2
- •Лабораторная работа № 4 проектирование линейной системы с помощью siso-design tool и lti viewer
- •4.1. Краткие теоретические сведения
- •4.2. Описание проектируемой системы
- •4.3. Порядок выполнения работы
- •4.4. Контрольные вопросы
- •Лабораторная работа №5 анализ и синтез сау методом корневого годографа с использованием siso-design tool
- •5.1. Краткие теоретические сведения
- •5.2. Методический пример
- •5.3. Порядок выполнения работы
- •5.4. Контрольные вопросы
- •Лабораторная работа №6 работа в среде matlab notebook
- •6.1. Основные сведения об используемых командах
- •6.2. Порядок выполнения работы
- •6.2.1. Установка шаблона m-book.Dot в редакторе Word
- •6.2.2. Работа с matlab Notebook в редакторе Word
- •6.3. Содержание отчета
- •Лабораторная работа №7 проектирование систем на основе заданного расположения полюсов
- •7.1. Краткие теоретические сведения
- •7.2. Расчет полюсов проектируемой системы
- •7.3. Синтез модального регулятора
- •Расчет коэффициентов обратных связей.
- •7.4. Порядок выполнения работы
- •7.5. Контрольные вопросы
- •Лабораторная работа №8 создание файла s-функции в виде m-файла
- •8.1. Основные сведения об используемых функциях
- •8.2. Пример s-функции
- •8. 3. Порядок выполнения лабораторной работы
- •8. 4. Содержание отчета
- •8. 5. Контрольные вопросы
- •Список литературы
- •Содержание
1.2. Операции с векторами и матрицами
Формирование векторов и матриц.
Для создания одномерного массива (вектора) можно использовать операцию конкатенации, которая обозначается с помощью квадратных скобок [ ]. Элементы массива отделяются друг от друга пробелом или запятой:
» m=[1 2 3]; d=[1+2i,2+3i,3-4i];
Можно изменять элементы уже сформированного массива путем применения операций индексации и присваивания. Например, введя:
» m(3)=4;
мы изменим третий элемент массива. Или, после введения:
» m(2)=(m(1)+m(3))/2;
второй элемент массива станет равным среднему арифметическому первого и третьего элементов. Запись несуществующего элемента вполне допустима – она означает добавление нового элемента к уже существующему массиву:
» m(4)=6;
Чтобы узнать число элементов в массиве следует вызвать функцию length(имя массива). Применяя к массиву m функцию length, находим, что количество элементов в массиве возросло до четырех:
» length(m)
ans = 4
Тоже самое действие – «удлинение массива m» - можно выполнить и с помощью операции конкатенации:
» m=[m 6];
Еще один способ создания одномерного массива основан на применении специальной функции, обозначаемой двоеточием. Через двоеточие следует набрать начальное значение диапазона, шаг (по умолчанию он равен единице) и конечное значение диапазона. Например:
» diap=1.0:0.01:10;
Для создания двумерного массива (матрицы) также можно использовать операцию конкатенации.
Введите с клавиатуры:
» a=[1 2 3; 4 5 6; 7 8 9] <Enter>
a =
1 2 3
4 5 6
7 8 9
Полученную матрицу a размером 3x3 можно сформировать также вертикальной конкатенацией вектор-строк:
» a=[[1 2 3];[4 5 6];[7 8 9]];
или горизонтальной конкатенацией вектор-столбцов:
» a=[[1;4;7],[2;5;8],[3;6;9]];
Структуру созданных массивов можно узнать с помощью команды whos(имя массива), размерность массива – функцией ndims, а размер массива – size.
Создать массив нужного размера можно функциями ones(m,n) или zeros(m,n), заполненный соответственно единицами или нулями (m – число строк, n – число столбцов).
Имеется также удобная возможность работы с массивами и их элементами с помощью программы Array Editor, вызов которой осуществляется двойным щелчком на обозначении массива в окне Workspase. При этом в появившемся окне можно производить редактирование существующих элементов, добавление новых при необходимости и выполнять ряд других операций.
Ознакомьтесь с удобным и наглядным способом создания массивов и матриц произвольной размерности. Выполните следующую последовательность действий:
1. С помощью функции zeros(m,n) определите матрицу требуемого размера, например, >>A = zeros(4,5);. При этом в окне Workspase появится изображение одноименной переменной - A.
2. Выполните двойной щелчок на появившемся изображении переменной A в окне Workspase. В открывшемся после этого окне редактора Array Editor введите требуемые значения элементов. Закройте окно редактора.
3. Измените размер созданной матрицы, добавив дополнительные элементы.
Поэлементные операции с векторами и матрицами.
Операции сложения и вычитания матриц обозначаются стандартными знаками + и -. Задайте матрицы А, В и выполните операцию сложения матриц:
» A=[1 1 1; 2 2 2; 3 3 3]; B=[0 0 0; 7 7 7; 1 2 3];
» A+B
Если используются операнды разных размеров, выдается сообщение об ошибке, за исключением случая, когда один из операндов является скаляром. При выполнении операции А + скаляр (А – матрица) система расширит скаляр до массива размера А, который складывается далее поэлементно с А (во внутреннем представлении размер скаляра при этом не изменится). Эта операция эквивалентна операции A+x*E, где x – число, а E – матрица со всеми единичными элементами, имеющая тот же размер, что и матрица A.
» A+5
ans = 6 6 6
7 7 7
8 8 8
Для поэлементного перемножения и поэлементного деления массивов одинаковых размеров, а также поэлементного возведения в степень массивов, применяются операции, обозначаемые комбинациями двух символов: .*, ./, и .^. Использование комбинаций символов объясняется тем, что символами * и / обозначены специальные операции линейной алгебры над векторами и матрицами.
Кроме операции ./, называемой операцией правого поэлементного деления, имеется операция левого поэлементного деления .\. Разница между этими операциями заключается в следующем. Результатом операции А./В является матрица с элементами А(k, m)/В(k, m), а операции А.\В матрица с элементами В (k, m)/А (k, m).
Элементарные математические функции могут выполняться с аргументами, являющимися как векторами, так и матрицами. Результатом является формирование нового вектора или матрицы (имеющих тот же тип и размер, что и аргумент), элементы которых равны значениям указанной функции от соответствующего элемента исходных векторов или матриц.
В качестве примера выполните следующие команды:
>> x=0:0.1:pi/4
>> y=sin(x)
Действия над матрицами.
Операция транспонирования обозначается знаком .' (точка и апостроф). Пример:
» A=[1 1 1; 2 2 2; 3 3 3];
» B=A.'
1 2 3
1 2 3
1 2 3
Операция ' (апостроф) выполняет обычное транспонирование для вещественных матриц (то же, что и операция .') и транспонирование с одновременным комплексным сопряжением для комплексных матриц (эрмитово комплексно-сопряженное транспонирование).
Символом * обозначается операция умножения матриц и векторов в смысле линейной алгебры.
Возведение матрицы в целую степень осуществляется с помощью операции, обозначаемой символом ^, например: A^n.
Деление матриц. В языке MATLAB имеются две оригинальные функции, которые не определены в математике. При этом вводятся понятия деление матриц слева направо “/” и деление матриц справа налево “\”. Операция B/A эквивалентна операции B*A-1. Ее удобно использовать для решения матричного уравнения X*A = B. Аналогично, операция A\B равносильна операции A-1 · B, которая представляет собой решение матричного уравнения A*X = B.
Операции отношения и логические операции выполняются над матрицами одинакового размера поэлементно. Результат операций имеет такой же размер. В случае, когда один из операндов скаляр, производится его предварительное расширение, смысл которого уже был пояснен выше.
Следует также упомянуть здесь функцию eye, производящую единичные квадратные матрицы (может использоваться для прямоугольных матриц), а также широко применяемую на практике функцию rand, генерирующую массив со случайными элементами, равномерно распределенными на интервале от 0 до1.
Определитель квадратной матрицы вычисляется с помощью функции det.
Среди функций, производящих простейшие вычисления над массивами, помимо рассмотренной выше функции sum, упомянем функцию prod, которая вычисляет произведение элементов. Функции max и min ищут соответственно максимальный и минимальный элементы массивов. Для векторов они возвращают единственное числовое значение, а для матриц они порождают набор экстремальных элементов, вычисленных для каждого столбца. Функция sort сортирует в возрастающем порядке элементы одномерных массивов, а для матриц она производит такую сортировку для каждого столбца отдельно.
Ознакомьтесь с действием рассмотренных выше функций, задав исходные значения матриц по своему желанию.
