- •Начала программирования в среде MatLab
- •Содержание
- •Предисловие
- •Введение
- •1. MatLAB как научный калькулятор
- •1.1. Командное окно
- •1.2. Операции с числами
- •1.2.1. Ввод действительных чисел
- •1.2.2. Простейшие арифметические действия
- •1.2.3. Ввод комплексных чисел
- •1.2.4. Элементарные математические функции
- •1.2.5. Специальные математические функции
- •1.2.6. Элементарные действия с комплексными числами
- •1.2.7. Функции комплексного аргумента
- •1.2.8. Задания
- •1.2.9. Вопросы
- •1.3. Простейшие операции с векторами и матрицами
- •1.3.1. Ввод векторов и матриц
- •1.3.2. Формирование векторов и матриц
- •1.3.3. Извлечение и вставка частей матриц
- •1.3.4. Действия над векторами
- •1.3.5. Поэлементное преобразование матриц
- •1.3.6. Матричные действия над матрицами
- •1.3.7. Матричные функции
- •1.3.8. Задания
- •1.3.9. Вопросы
- •1.4. Функции прикладной численной математики
- •1.4.1. Операции с полиномами
- •1.4.2. Обработка данных измерений
- •1.4.3. Функции линейной алгебры
- •1.4.4. Аппроксимация и интерполяция данных
- •1.4.5. Векторная фильтрация и спектральный анализ
- •1.4.6. Задания
- •1.4.7. Вопросы
- •1.5. Построение простейших графиков
- •1.5.1. Процедура plot
- •1.5.2. Специальные графики
- •1.5.3. Дополнительные функции графического окна
- •1.5.5. Задания
- •1.5.6. Вопросы
- •1.6. Операторы управления вычислительным процессом
- •1.6.1. Оператор условного перехода
- •1.6.2. Оператор переключения
- •1.6.3. Операторы цикла
- •1.6.4. Задания
- •1.6.5. Вопросы
- •2. Программирование в среде MatLAB
- •2.1. Функции функций
- •2.2. Создание М-файлов
- •2.2.1. Особенности создания М-файлов
- •2.3.1. Общие требования к построению
- •2.3.2. Типовое оформление процедуры-функции
- •2.3.3. Задания
- •2.3.4. Вопросы
- •2.4. Создание Script-файлов
- •2.4.1. Основные особенности Script-файлов
- •2.4.2. Ввод и вывод информации в диалоговом режиме
- •2.4.3. Организация повторения действий
- •2.4.4. Организация изменения данных в диалоговом режиме
- •2.4.5. Типовая структура и оформление Script-файла
- •2.5. Графическое оформление результатов
- •2.5.1. Общие требования к представлению графической информации
- •2.5.2. Разбивка графического окна на подокна
- •2.5.3. Вывод текста в графическое окно (подокно)
- •2.6. Создание функций от функций
- •2.6.1. Процедура feval
- •2.6.2. Примеры создания процедур от функций
- •2.6.3. Задания
- •2.7. Пример создания сложной программы
- •2.7.1. Программа моделирования движения маятника
- •2.7.2. Задания
- •3.1. Функции меню командного окна
- •3.1.2. Другие меню командного окна
- •3.1.3. Панель инструментов
- •3.2. Команды общего назначения
- •3.3. Создание М-книги
- •3.3.1. Начало новой М-книги
- •3.3.2. Написание М-книги
- •3.3.3. Редактирование М-книги
- •3.3.4. Преобразование документа WORD в М-книгу
- •3.3.6. Изменение параметров вывода результатов
- •4. Классы вычислительных объектов
- •4.1. Основные классы объектов
- •4.1.1. Класс символьных строк (char)
- •4.1.2. Класс записей (struct)
- •4.1.3. Класс ячеек (cell)
- •4.2. Производные классы MatLAB
- •4.2.1. Класс объектов Inline
- •4.2.2. Классы пакета CONTROL
- •4.3. Пример создания нового класса polynom
- •4.3.1. Создание подкаталога @polynom
- •4.3.2. Создание конструктора
- •4.3.3. Создание процедуры символьного представления polynom-объекта.
- •4.4. Создание методов нового класса
- •5.1. Формирование типовых процессов
- •5.1.1. Формирование одиночных импульных процессов
- •5.1.2. Формирование колебаний
- •5.2.1. Основы линейной фильтрации
- •5.2.2. Формирование случайных процессов
- •5.3. Процедуры спектрального (частотного) и статистического анализа процессов
- •5.3.1. Основы спектрального и статистического анализа
- •5.3.2. Примеры спектрального анализа
- •5.3.3. Статистический анализ
- •5.4. Проектирование фильтров
- •5.4.1. Формы представления фильтров и их преобразования
- •5.4.2. Разработка аналоговых фильтров
- •5.4.3. Проектирование БИХ-фильтров
- •5.5. Графические и интерактивные средства
- •5.5.1. Графические средства пакета SIGNAL
- •5.5.2. Интерактивная оболочка SPTOOL
- •6.1. Ввод и преобразование моделей
- •6.2. Получение информации о модели
- •6.3. Анализ системы
- •6.4. Интерактивный "обозреватель" ltiview
- •6.5. Синтез системы
- •7.1. Общая характеристика пакета SimuLink
- •7.1.1. Запуск SimuLink
- •7.1.2. Библиотека модулей (блоков)
- •7.1.3. Раздел Sinks (приемники)
- •7.1.4. Раздел Sources (Источники)
- •7.1.5. Раздел Сontinuous
- •7.1.6. Раздел Discrete
- •7.1.7. Раздел Math
- •7.1.8. Раздел Functions & Tables
- •7.1.9. Раздел Nonlinear
- •7.1.10. Раздел Signals & Systems
- •7.2. Построение блок-схем
- •7.2.1. Выделение объектов
- •7.2.2. Оперирование с блоками
- •7.2.3. Проведение соединительных линий
- •7.2.4. Проставление меток сигналов и комментариев
- •7.2.5. Создание подсистем
- •7.2.6. Запись и распечатка блок-схемы S-модели
- •7.3. Примеры моделирования
- •7.3.1. Моделирование поведения физического маятника
- •7.3.2. Моделирование поведения гироскопа в кардановом подвесе
- •7.4. Объединение S-моделей с программами MatLAB
- •7.4.2. Функции пересечения нуля
- •7.4.5. Образование S-блоков путем использования программ MatLab. S-функции
- •7.4.6. Пример создания S-функции
- •7.5.1. Создание библиотеки
- •7.5.2. Маскировка блоков
- •7.5.3. Моделирование процесса ориентации космического аппарата
- •Послесловие
- •Предметный указатель
- •Указатель операторов, команд, функций и функциональных блоков MatLAB
7.1. Общая характеристика пакета SimuLink |
312 |
|
|
|
|
низкого уровня (подсистемы), и обеспечивают установление необходимых связей между несколькими S-моделями.
Чтобы перейти в окно соответствующего раздела библиотеки, в котором расположены графические изображения блоков, достаточно дважды щелкнуть мышью на пиктограмме этого раздела
Сборка блок-схемы S-модели заключается в том, что графические изображения выбранных блоков с помощью мыши перетягиваются из окна раздела библиотеки в окно блок-схемы, а затем выходы одних блоков в окне блоксхемы соединяются с входами других блоков также при помощи мыши.
Технология перетягивания изображения блока такова: курсор мыши нужно установить на изображении выбранного блока в окне раздела библиотеки, потом нажать левую клавишу мышки и, не отпуская ее, передвинуть курсор на поле блок-схемы, после чего отпустить клавишу. Аналогично осуществляются соединения в блок-схеме линиями выходов одних блоков с входами других блоков: курсор мышки подводят к нужному выходу некоторого блока (при этом курсор должен приобрести форму крестика), нажимают левую клавишу и, не отпуская ее, курсор перемещают к нужному входу другого блока, а потом отпускают клавишу. Если соединение осуществлено верно, на входе последнего блока появится изображение черной затушеванной стрелки.
7.1.3. Раздел Sinks (приемники)
После перехода к разделу Sinks на экране появляется окно этого раздела, изображенное на рис. 7.4.
Рис. 7.4
Из его рассмотрения вытекает, что в этом разделе размещены три группы блоков, которые не имеют выходов, а только входы:
7.1. Общая характеристика пакета SimuLink |
313 |
|
|
|
|
1)блоки, которые при моделировании играют роль обзорных окон; к ним относятся:
блок Scope с одним входом, который выводит в графическое окно график зависимости величины, подаваемой на его вход, от модельного времени;
блок XYGraph с двумя входами, который обеспечивает построение графика зависимости одной моделируемой величины (второй сверху вход) от другой (первый вход);
блок Display с одним входом, предназначенный для отображения численных значений входной величины;
2)блоки для сохранения результатов:
блок To File, который обеспечивает сохранение результатов моделирования на диске в МаАТ-файле (с расширением .mat);
блок To Workspace, который сохраняет результаты в рабочем пространстве;
3)блок управления моделированием - Stop Simulation, позволяющий прерывать моделирование при выполнении тех или иных условий; блок срабатывает в том случае, когда на его вход поступает ненулевой сигнал.
Блок Scope
Этот блок позволяет в процессе моделирования наблюдать по графику процессы, которые интересуют исследователя.
Рис. 7.5
Для настраивания параметров этого блока нужно после установки изображения блока в окно блок-схемы дважды щелкнуть мышкой на этом изображении. В результате на экране появится окно Scope (рис. 7.5). Размер и пропорции окна можно изменять произвольно, пользуясь мышью. По горизонтальной оси откладываются значения модельного времени, а по вертикальной - значения входной величины, отвечающие этим моментам времени.
7.1. Общая характеристика пакета SimuLink |
314 |
|
|
|
|
Если входная величина блока Scope является вектором, в окне строятся графики измения всех элементов этого вектора, т. е. столько кривых, сколько элементов в входном векторе, причем каждая - своего цвета. Одновременно в окне может отображаться до 30 кривых.
Для управления параметрами окна в нем предусмотрена панель инструментов, который содержит 7 пиктограмм такого назначения (слева направо):
изменение масштаба одновременно по обеим осям графика;
изменение масштаба по горизонтальной оси;
изменение масштаба по вертикальной оси;
автоматическое установление оптимального масштаба осей (полный обзор, автошкалирование);
сохранение установленного масштаба осей;
вызов диалогового окна настраивания параметров блока Scope;
распечатка содержимого окна Scope на принтере.
Первые три пиктограммы являются альтернативными, т. е. в каждый момент времени может быть нажата лишь одна из них. Первые пять пиктограмм не активны до тех пор, пока нет графика в окне Scope. Активны с самого начала лишь последние две пиктограммы. Нажатие шестой пиктограммы приводит к появлению окна настраивания параметров (свойств) блока 'Scope' properties (рис. 7.6).
Рис. 7.6
Это окно имеет две вкладки:
General (Общие), она позволяет установить параметры осей;
Data history (Представление данных), которая предназначена для введения параметров представления данных блока Scope.
Внижней части окна расположены кнопки: Apply (Применить), Help (
Вызов справки) , Cancel (Вернуться назад) и OK (Подтвердить установку).
На вкладке General имеются поля Axes и Sampling.
Вполе Axes можно установить:
7.1. Общая характеристика пакета SimuLink |
315 |
|
|
|
|
-в окошке Number of axes (Количество осей) - количество графических полей в графическом окне Scope (одновременно изменяется количество входов в блок Scope);
-верхнюю границу отображаемого модельного времени по оси абсцисс (окошко Time range); при этом следует принимать во внимание
следующее: если размер заданного интервала моделирования (Тм) не превышает установленное значение Time range (т. е. весь процесс умещается в окне Scope), то под графиком в строке Time offset выводится 0. В случае же, когда интервал моделирования превышает значения Time range, в окне Scope отображается только последний отрезок времени, меньший
по размеру, чем Time range и равный Тм-п*Time range, где п - целое число; при этом в строке Time offset выводится размер "скрытого" интервала времени - п*Time range; например, если значения Time range равняется 3, а продолжительность интервала моделирования установлена 17, то в окне Scope будет выведен график моделируемого процесса за последние 2 единицы времени, а строка под графиком будет иметь вид: Time offset: 15;
-в окошке Tick Labels – вид оформления осей координат в графиках графичного окна; если вызвать нисходящий список в нем, то в нем увидим три альтернативы – all (все), none (нет), bottom axis only (только нижней оси); избрания all приводит к тому, что деления по осям наносятся вдоль
каждой из осей всех графиков; выбор bottom axis only вызовет исчезновение делений по всем горизонтальным осям графических полей (если их несколько), при этом останутся лишь деления по самой нижней из них; наконец, если выбрать none, то исчезнут все деления по осям графиков и надписи на них, график займет все поле окна и окно примет вид, представленный на рис. 7.7.
Рис. 7.7
7.1. Общая характеристика пакета SimuLink |
316 |
|
|
|
|
Окошко рядом с надписью floating scope предназначено для отключения входов в блок Scopе. Для этого достаточно поместить в него "галочку", щелкнув в нем мішью. Если "галочка" установлена, то Scope отображается как блок без входа, и если он был связан по входу с другими блоками, то эти связи "обрываются".
Поле Sampling содержит лишь одно окошко с надписью Decimation. В нем можно задать целое положительное число, которое равно количеству шагов (дискретов) времени, в которых используются полученные данные для построения графиков в окне Scopе.
Вторая вкладка Data history (рис. 7.6) позволяет задать максимальное количество элементов массивов данных, которые используются для построения графиков в окне Scope (окошко рядом с надписью Limit rows to last (Максимальная граница строк)). Другие окошки этой вкладки становятся досягаемыми, если в окошке рядом с надписью Save data to work space (Записать данные в рабочее пространство) поставить "галочку" (мышью). При этом становится возможным записать данные, которые выводятся на графики окна Scope, в рабочее пространство системы MatLAB, и становятся активными окошки с надписями Variable name (Имя переменной) и Format (Формат). В первое из них можно ввести имя переменной, под которым будут сохраняться данные в рабочем пространстве системы (по умолчанию эти данные будут записаны под именем ScopeData). Окошко Format дает возможность выбрать один из трех форматов записи данных – Matrix (Матрица), Structure (Структура) и Structure with time
(Структура с временем).
Любые изменения, сделанные в окне Properties, изменяют окно Scope лишь в случае, если после введения этих изменений нажата кнопка Аpply в нижней части окна.
7.1. Общая характеристика пакета SimuLink |
317 |
|
|
|
|
Рис. 7.8
Блок XYGraph
Этот блок также является обзорным окном. В отличие от Scope, он имеет два входа: на первый (верхний) подается сигнал, значения которого откладываются по горизонтальной оси графика, а на второй (нижний) - по вертикальной оси.
Если перетянуть этот блок на поле блок-схемы, а потом на изображении его щелкнуть дважды мышкой, то на экране появится окно настраивания блока (рис. 7.8), которое позволяет установить границы изменений обеих входных величин, между которыми будет построен график зависимости второй величины от первой, а также задать дискрет по времени.
Приведем пример использования блока XYGraph. Для этого перетянем в окно блок-схемы изображение этого блока из окна Library: simulink3/Sinks, а из окна Library: simulink3/Sources - два блока-источника Clock и Sine Wave.
Соединим выходы блоков-источников с входами блока XYGraph. Получим блоксхему, приведенную на рис. 7.9. Если теперь выбрать мышью меню Simulation в строке меню окна блок-схемы, а в нем - команду Start, то по окончании расчетов на экране возникнет окно XYGraph и в нем будет построено изображение, представленное на рис. 7.10.
Рис. 7.9 |
Рис. 7.10 |
Блок Display
Этот блок предназначен для вывода на экран численных значений величин, которые фигурируют в блок-схеме.
Блок имеет 4 параметра настраивания (рис. 7.11). Список Format задает формат вывода чисел; вид формата избирается с помощью нисходящего меню, содержащего 5 пунктов: short, long, short_e, long_e, bank. Поле введения Decimation позволяет задать периодичность (через сколько шагов времени) вывода значений в окне Display. Переключатель Floating display позволяет определять блок Display как блок без входа, обрывая его связи.
Блок Display может использоваться для вывода как скалярных, так и векторных величин. Если отображаемая величина является вектором, то исходное
7.1. Общая характеристика пакета SimuLink |
318 |
|
|
|
|
представление блока изменяется автоматически, о чем свидетельствует появление маленького черного треугольника в правом нижнем углу блока. Для каждого элемента вектора создается свое мини-окно, но чтобы они стали видимыми, необходимо растянуть изображение блока. Для этого следует выделить блок, подвести курсор мышки к одному из его углов, нажать левую клавишу мыши и, не отпуская ее, растянуть изображение блока, пока не исчезнет черный треугольник.
Рис. 7.11
Рис. 7.12
Для примера создадим блок-схему (рис. 7.12) из двух элементов – блокаисточника Constant и блока-приемника Display.
Рис. 7.13
7.1. Общая характеристика пакета SimuLink |
319 |
|
|
|
|
Вызвав окно настраивания блока Constant (рис. 7.13), установим в нем значения константы-вектора, который состоит из четырех элементов [1e-17 pi 1757 -0.087]. Вызывая окно настраивания блока Display, установим с его помощью формат вывода чисел short_e. После активизации команды Start из меню Simulation, получим изображение окна блок-схемы, показанное на рис. 7.12. Растягивая изображение блока Display на блок-схеме, получим картину, представленную на рис. 7.14.
Рис. 7.14
Блок To File
Этот блок обеспечивает запись значений величины, поданной на его вход, в МАТ-файл данных для использования их в последующем в других S-моделях.
Блок имеет такие параметры настраивания (см. рис. 7.15):
Рис. 7.15
7.1. Общая характеристика пакета SimuLink |
320 |
|
|
|
|
File name - имя МАТ-файла, в который будут записываться значения входной величины; по умолчанию - untitled. mat; имя файла выводится на изображении блока в блок-схеме;
Variable name - имя переменной, по которому можно будет обращаться к данным, записанным в файле (для того, чтобы просмотреть или изменить их в командном окне MatLAB); по умолчанию используется системное имя ans;
Decimation - дискретность (в количестве дискретов времени) записи данных в файл;
Sample Time - размер дискрета времени для данного блока.
Следует отметить, что значения данных, которые подаются во вход блока записываются в выходную переменную (например, ans) так: первую строку матрицы образуют значения соответствующих моментов времени; вторая строка содержит соответствующие значения первого элемента входного вектора, третья строка - значения второго элемента и т.д. В результате записывается матрица размером (k+1)*N, где k - количество элементов входного вектора, а N - количество точек измерения (или количество моментов времени, в которые осуществлены измерение).
Блок To Workspace
Этот блок предназначен для сохранения данных в рабочем пространстве системы MatLAB. Данные сохраняются в виде матрицы размером (N*k), структура которой отличается от структуры данных в МАТ-файле тем, что:
значения величин, которые сохраняются, расположены по столбцам, а не по строкам;
не записываются значения модельного времени.
Рис. 7.16