- •Начала программирования в среде 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 |
345 |
|
|
|
|
Complex to Magnitude-Angle и Complex to Real-Imag), а также один или два вход-
ных действительных сигнала в комплексный выходный сигнал (блоки MagnitudeAngle to Complex и Real-Imag to Complex). Количество входов или выходов оп-
ределяется в окне настраивания блока.
7.1.8.Раздел Functions & Tables
Вэтот раздел входят две группы блоков (рис. 7.53):
-два блока, осуществляющие линейную интерполяцию значений выходного сигнала по значениям входного сигнала, которые поступают в блок, в соответствии с заданной в окне настраивания таблицы соответствий;
-три блока, которые являются заготовками, дающими пользователю возможность разработать собственные блоки программы, выполняющие необходимые ему преобразования сигналов.
Рис. 7.53
Блок Look-upTable выполняет линейную интерполяцию входного сигнала в соответствии с табличной функцией, которая задается. Блок Look-upTable(2D) осуществляет двумерную линейную интерполяцию двух входных сигналов.
Блок Fcn позволяет пользователю ввести любую скалярную функцию от одного (скалярного или векторного) аргумента, которая выражается через стандартные функции MatLAB. Выражение функции вводится в окне настраивания блока. Для обозначения входного сигнала (аргумента функции) используется символ u.
Блок MATLAB Fcn позволяет применить к входному сигналу любую подпрограмму обработки, реализованную в виде М-файла. В отличие от предыдущего блока, здесь к числу параметров настраивания добавлен параметр Output width (Ширина выходного сигнала), который определяет количество элементов выходного вектора. Применение этого блока приводит к значительной потере быстродействия в выполнении (в сравнении с предыдущим блоком).
С помощью блока S-function пользователь может реализовать в виде Simulink-блока любую программу обработки входного сигнала, включая
7.1. Общая характеристика пакета Simulink |
346 |
|
|
|
|
интегрирование дифференциальных уравнений и обработку дискретных во времени сигналов. Более подробно работа с S-function изложена в п. 7.4.6.
7.1.9. Раздел Nonlinear
Состав этого раздела приведен на рис. 7.54.
Рис. 7.54
Здесь расположены 6 блоков, которые реализуют некоторые типовые нелинейные (кусочно-линейные) зависимости выходной величины от входной и 3 блока-переключателя.
Блок RateLimiter (Ограничитель скорости) обеспечивает ограничивание сверху и снизу скорости изменения сигнала, проходящего через него. Окно настраивания содержит два параметра Rising slew rate и Falling slew rate. Блок работает по следующему алгоритму. Сначала рассчитывается скорость изменения сигнала, который проходит через блок по формуле
rate = |
u(i) − y(i −1) |
, |
|
t(i) − t(i −1) |
|||
|
|
где u(i) - значения входного сигнала в момент времени t(i); y(i −1) - значения выходного сигнала в момент t(i −1) . Далее, если вычисленное значение rate
больше, чем Rising slew rate (R), выходная величина определяется по формуле y(i) = y(i −1) + R ∆t ;
если rate меньше, чем Falling slew rate (F), то выход определяется так y(i) = y(i −1) + F ∆t .
Если же значения rate содержится между R и F, то исходная величина совпадает с входной
7.1. Общая характеристика пакета Simulink |
347 |
|
|
|
|
y(i) = u(i) .
Блок Saturation (Насыщение) реализует линейную зависимость с насыщением (ограничением). Выходная величина этого блока совпадает со входной, если последняя находится внутри указанного диапазона. Если же входная величина выходит за рамки диапазона, то выходный сигнал принимает значение ближайшей из границ. Значения границ диапазона устанавливаются в окне настраивания блока.
Блок Quantizer (Квантователь) осуществляет дискретизацию входного сигнала по величине. Единственным параметром настраивания этого блока является Quantization interval - Интервал квантования - размер дискрета по уровню входного сигнала.
Блок BackLash (Люфт) реализует нелинейность типа зазора. В нем предусмотрено два параметра настраивания: Deadband width - величина люфта и Initial output - начальное значение выходной величины.
Блок Dead Zone (Мертвая зона) реализует нелинейность типа зоны нечувствительности. Параметров настраивания здесь два - начало и конец зоны нечувствительности.
Блок Relay (Реле) работает по аналогии с обычным реле: если входной сигнал превышает некоторое предельное значение, то на выходе блока формируется некоторый постоянный сигнал. Блок имеет 4 параметра настраивания (рис. 7.55):
Switch on point (Точка включения) - задает предельное значение, при превышении которого происходит включение реле;
Switch off point (Точка выключения) - определяет уровень входного сигнала, ниже которого реле выключается;
Output when on (Выход при включенном состоянии) - устанавливает уровень выходной величины при включенном реле;
Output when off (Выход при выключенном состоянии) - определяет уровень выходного сигнала при выключенном реле.
7.1. Общая характеристика пакета Simulink |
348 |
|
|
|
|
Рис. 7.55
Блок Coulomb & Viscous Friction (Кулоново и вязкое трение) реализует нелинейную зависимость типа "линейная с натягом". Если вход положителен, то выход пропорционален входу с коэффициентом пропорциональности - "коэффициентом вязкого трения" - и увеличен на величину "натяга" ("кулонова, сухого трения"). Если вход отрицателен, то выход также пропорционален входу (с тем же коэффициентом пропорциональности) за вычетом величины "натяга". При входе равном нулю выход тоже равняется нулю. В параметры настраивания блока входят величины "кулонова трения" ("натяга") и коэффициента "вязкого трения".
В завершение рассмотрим группу блоков-переключателей, которые руководят направлением передачи сигнала. Таких блоков три: Switch (Переключатель), Manual Switch (Ручной переключатель) и Multiport Switch (Многовходовый переключатель).
Блок Switch имеет три вход: (два (1-й и 3-й) информационные и один (2-й) – управляющий) и один выход. Если величина управляющего сигнала, который поступает на 2-й вход, не меньше некоторого заданного граничного значения (параметр Threshold - Порог), то на выход блока передается сигнал с 1-го входа, в противном случае - сигнал с 3-го входа.
Блок Manual Switch не имеет параметров настраивания. У него два входа и один выход. На изображении блока показано перемычкой, какой именно из двух входов подключен к выходу. Блок позволяет "вручную" переключать входы. Для этого необходимо дважды щелкнуть мышкой на изображении блока. При этом изменится и изображение блока - на нем выход уже будет соединен перемычкой с другим входом.
Блок Multiport Switch имеет не меньше трех входов. Первый (верхний) из них является управляющим, другие - информационными. Блок имеет один