
- •Начала программирования в среде 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.2. Построение блок-схем |
356 |
|
|
|
|
выделить блок, размеры которого надо изменить;
привести курсор мыши на одну из угловых меток блока; при этом на экране у этой метки должен возникнуть новый курсор в виде обоюдной стрелки под наклоном 45 градусов;
захватить эту метку мышью и перетянуть в новое положение; при этом
противоположная метка этого блока останется неподвижной.
На рис. 7.64 показан результат применения этих операций для растяжения блока XYGraph, а также середина процесса увеличения размеров блока Scope.
Рис. 7.63 |
Рис. 7.64 |
Изменение имен блоков и манипулирования с ними
Все имена блоков в модели должны быть уникальными и иметь, как минимум один символ. Если блок ориентирован слева направо, то имя, по умолчанию, находится под блоком, если справа налево - выше блока, если же сверху вниз или снизу вверх - по правую сторону блока (см. рис. 7.63).
Изменение имени блока осуществляется так: надо щелкнуть на существующем имени блока, потом, используя клавиши обычного редактирования текста, изменить это имя на нужное.
Для изменения шрифта следует выделить блок, потом выбрать команду Font из меню Format окна модели и, наконец, выбрать нужный шрифт из представленного перечня.
Чтобы изменить местоположение имени выделенного блока, существуют два пути:
перетянуть имя на противоположную сторону мышью;
воспользоваться командой Flip Name из раздела Format меню окна модели - она тоже переносит имя на противоположную сторону.
Удалить имя блока можно, используя команду Hide Name из меню Format окна модели. Чтобы восстановить потом отображение имени рядом с изображением блока, следует воспользоваться командой Show Name того же меню.
7.2.3. Проведение соединительных линий

7.2. Построение блок-схем |
357 |
|
|
|
|
Сигналы в модели передаются по линиям. Каждая линия может передавать или скалярный, или векторный сигнал. Линия соединяет выходной порт одного блока с входным портом другого блока. Линия может также соединять выходной порт одного блока с входными портами нескольких блоков через разветвление линии.
Создание линии между блоками
Для соединения выходного порта одного блока с входным портом другого блока следует выполнить такую последовательность действий:
установить курсор внутрь выходного порта первого блока; при этом
курсор должен превратиться на перекрестие;
нажав левую клавишу мыши и, удерживая ее в этом положении, передвинуть перекрестие к входному порту второго блока;
отпустить ЛКМ; SimuLINK заменит символы портов соединительной линией с представлением направления передачи сигнала.
Именно таким образом соединен на рис. 7.65 выход блока Clock с входом блока XYGraph.
Линии можно рисовать как от выходного порта к входному, так и наоборот. SimuLINK рисует соединительные линии, используя лишь горизонтальные и вертикальные сегменты. Для образования диагональной линии нажмите и
удерживайте клавишу <Shift> на протяжении рисования.
Рис. 7.65 |
Рис. 7.66 |
Создание разветвления линии
Линия, которая разветвляется, начинается с существующей и передает ее сигнал к входному порту другого блока. Как существующая, так и ответвленная линия передают тот самый сигнал. Разветвленная линия дает возможность передать тот самый сигнал до нескольких блоков.
Чтобы образовать ответвление от существующей линии, нужно:
установить курсор на точку линии, от которой должна ответвляться другая линия;
нажав и удерживая клавишу <Ctrl>, нажать и удерживать ЛКМ;

7.2. Построение блок-схем |
358 |
|
|
|
|
провести линию к входному порту нужного блока; отпустить клавишу
<Ctrl> и ЛКМ (см. рис. 7.66).
Создание сегмента линии
Линии могут быть нарисованы по сегментам. В этом случае для создания следующего сегмента следует установить курсор в конец предыдущего сегмента и нарисовать (с помощью мыши) следующий сегмент. Таким образом, например,
соединены на рис. 7.67 блоки Clock с XYGraph и SignalGenerator с XYGraph.
Рис. 7.67
Передвижение сегмента линии
Чтобы передвинуть отдельный сегмент линии, необходимо выполнить следующее:
Рис. 7.68
установить курсор на сегмент, который нужно передвинуть;
нажать и удерживать левую клавишу мыши (ЛКМ); при этом курсор должен превратиться на "крест";
передвинуть "крест" к новому положению сегмента;
отпустить ЛКМ.
На рис. 7.68 показан результат передвижения вертикального сегмента линии, которая соединяет блоки Random Number с XYGraph1.

7.2. Построение блок-схем |
359 |
|
|
|
|
Нельзя передвинуть сегмент, который непосредственно прилегает к порту блока.
Разделение линии на сегменты
Чтобы разделить линию на два сегмента, нужно:
выделить линию;
установить курсор в ту точку выделенной линии, в которой линия должна быть разделена на два сегмента;
удерживая нажатой клавишу <Shift>, нажать и удерживать ЛКМ; курсор превратится на маленький круг; на линии образуется слом;
передвинуть курсор в новое положение слома;
отпустить ЛКМ и клавишу <Shift>.
Рис. 7.69
Пример проведения этих действий представлен на рис. 7.69, где линия, которая соединяет блоки Sine Wave и XYGraph1 разделена на два сегмента.
Передвижение слома линии
Для передвижения слома линии достаточно перетянуть точку этого слома в новое положение на блок-схеме.
7.2.4. Проставление меток сигналов и комментариев
Для наглядности оформления блок-схемы и удобства пользованием ею можно сопровождать линии метками сигналов, протекающим по ним. Метка размещается под или над горизонтальной линией, по левую сторону или по правую сторону вертикальной линии. Метка может быть расположена в начале, в конце или посреди линии.
Создание и манипулирование метками сигналов
Чтобы создать метку сигнала, надо дважды щелкнуть на сегменте линии и ввести метку (рис. 7.70). При создании метки сигнала необходимо дважды щелкнуть именно точно на линии, так как иначе будет создан комментарий к модели.

7.2. Построение блок-схем |
360 |
||
|
|
|
|
|
|
|
|
|
|
|
|
Рис. 7.70
Для передвижения метки надо ее просто перетянуть на новое место мышью. Чтобы скопировать метку, следует нажать и удерживать клавишу <Ctrl> и перетянуть метку к новому положению на линии, или избрать другой сегмент линии, на котором нужно установить копию метки и дважды щелкнуть по этому сегменту линии. Отредактировать метку, можно щелкнув на ней и осуществляя потом соответствующие изменения как в обычном текстовом редакторе. Чтобы удалить метку, нажмите и удерживайте клавишу <Shift>, выделите метку и уничтожьте ее, используя клавиши <Delete> или <Backspace>. При этом будут удалены все метки этой линии.
Рис. 7.71
Распространение меток линии
Распространение меток линии - это процесс автоматического переноса имени метки к сегментам одной линии, которые разорваны блоками From/Goto, Mux
(рис. 7.71).
Чтобы распространить метки, создайте во втором и следующих сегментах линии метки с именем '<'. После выполнения команды Update Diagram из раздела Edit меню окна модели, или одновременного нажатия клавиш <Ctrl>+<D> в этих сегментах автоматически будут проставлены метки (см. рис. 7.71)