Учебное пособие для студентов высших учебных заведений
Скачать 5.41 Mb.
|
Юрий ЛАЗАРЕВ _______________ Начала программирования в среде MatLAB Учебное пособие для студентов высших учебных заведений Киев – НТУУ "КПИ" - 2003 УДК 681.3.06(075.8) ББК 32.973.26-018.2 Я73 Л17 Лазарев Юрий Федорович Л17 Начала программирования в среде MatLAB: Учебное пособие. - К.: НТУУ "КПИ", 2003. - 424 с. Изложены основные особенности проведения вычислений в среде MatLAB как в режиме калькулятора, так и в программном режиме. Ознакомление с системой рассчитано на начинающего. Приведены сведения об основных командах, операторах, функциях и процедурах MatLAB. Изложение ведется таким образом, чтобы пользователь мог сразу применить полученные знания для проведения вычислений. Пособие содержит много примеров, которые поясняют и иллюстрируют работу по использованию процедур. Рассмотрена работа с некоторыми наиболее важными для инженеров пакетами прикладных программ MatLAB. (Signal Toolbox, Control и SimuLink). Для студентов высших технических учебных заведений. Может быть полезно научным работникам и инженерам для начального ознакомления с системой MatLAB и приобретения навыков работы с ней. Табл. 8. Илл. 283. Библиогр. 18 назв. © Ю. Ф. Лазарев, 2003 Содержание 3 Содержание Предисловие 6 Вступление 8 1. MatLAB как научный калькулятор 11 1.1. Командное окно 11 1.2. Операции с числами 12 1.2.1. Ввод действительных чисел 12 1.2.2. Простейшие арифметические действия 14 1.2.3. Ввод комплексных чисел 16 1.2.4. Элементарные математические функции 17 1.2.5. Специальные математические функции 18 1.2.6. Элементарные действия с комплексными числами 20 1.2.7. Функции комплексного аргумента 20 1.2.8. Задания 21 1.2.9. Вопросы 28 1.3. Простейшие операции с векторами и матрицами 29 1.3.1. Ввод векторов и матриц 29 1.3.2. Формирование векторов и матриц 30 1.3.3. Извлечение и вставка частей матриц 34 1.3.4. Действия над векторами 36 1.3.5. Поэлементное преобразование матриц 39 1.3.6. Матричные действия над матрицами 41 1.3.7. Матричные функции 43 1.3.8. Задания 44 1.3.9. Вопросы 46 1.4. Функции прикладной численной математики 47 1.4.1. Операции с полиномами 47 1.4.2. Обработка данных измерений 50 1.4.3. Функции линейной алгебры 54 1.4.4. Аппроксимация и интерполяция данных 63 1.4.5. Векторная фильтрация и спектральный анализ 66 1.4.6. Задания 71 1.4.7. Вопросы 74 1.5. Построение простейших графиков 75 1.5.1. Процедура plot 75 1.5.2. Специальные графики 78 1.5.3. Дополнительные функции графического окна 83 1.5.4. Вывод графиков в печать 85 1.5.5. Задания 85 1.5.6. Вопросы 85 1.6. Операторы управления вычислительным процессом 86 1.6.1. Оператор условного перехода 86 1.6.2. Оператор переключения 88 1.6.3. Операторы цикла 88 1.6.4. Задания 90 1.6.5. Вопросы 92 2. Программирование в среде MatLAB 93 2.1. Функции функций 93 2.2. Создание М-файлов 96 2.2.1. Особенности создания М-файлов 96 2.2.2. Основные особенности оформления М-файлов 97 2.3. Создание простейших файлов-функций (процедур) 99 2.3.1. Общие требования к построению 99 2.3.2. Типовое оформление процедуры-функции 101 2.3.3. Задания 102 2.3.4. Вопросы 103 2.4. Создание Script-файлов 103 2.4.1. Основные особенности Script-файлов 103 2.4.2. Ввод и вывод информации в диалоговом режиме 104 Содержание 4 2.4.3. Организация повторения действий 106 2.4.4. Организация изменения данных в диалоговом режиме 107 2.4.5. Типовая структура и оформление Script-файла 110 2.5. Графическое оформление результатов 111 2.5.1. Общие требования к представлению графической информации 111 2.5.2. Разбивка графического окна на подокна 113 2.5.3. Вывод текста в графическое окно (подокно) 114 2.6. Создание функций от функций 118 2.6.1. Процедура feval 118 2.6.2. Примеры создания процедур от функций 119 2.6.3. Задания 124 2.7. Пример создания сложной программы 130 2.7.1. Программа моделирования движения маятника 131 2.7.2. Задания 140 3. Интерфейс MatLAB и команды общего назначения. М-книг 141 3.1. Функции меню командного окна 141 3.1.1. Меню "File" 141 3.1.2. Другие меню командного окна 151 3.1.3. Панель инструментов 155 3.2. Команды общего назначения 155 3.3. Создание М-книги 157 3.3.1. Начало новой М-книги 157 3.3.2. Написание М-книги 158 3.3.3. Редактирование М-книги 160 3.3.4. Преобразование документа WORD в М-книгу 160 3.3.5. Некоторые особенности использования системы MatLAB 160 3.3.6. Изменение параметров вывода результатов 161 4. Классы вычислительных объектов 162 4.1. Основные классы объектов 162 4.1.1. Класс символьных строк (char) 163 4.1.2. Класс записей (struct) 166 4.1.3. Класс ячеек (cell) 168 4.2. Производные классы MatLAB 171 4.2.1. Класс объектов Inline 171 4.2.2. Классы пакета CONTROL 174 4.3. Пример создания нового класса polynom 178 4.3.1. Создание подкаталога @polynom 178 4.3.2. Создание конструктора 178 4.3.3. Создание процедуры символьного представления polynom-объекта 180 4.4. Создание методов нового класса 182 5. Цифровая обработка сигналов (пакет Signal Processing Toolbox) 188 5.1. Формирование типовых процессов 190 5.1.1. Формирование одиночных импульсных процессов 190 5.1.2. Формирование колебаний 193 5.2. Общие средства фильтрации. Формирование случайных процессов 199 5.2.1. Основы линейной фильтрации 199 5.2.2. Формирование случайных процессов 205 5.3. Процедуры спектрального (частотного) и статистического анализа процессов 208 5.3.1. Основы спектрального и статистического анализа 208 5.3.2. Примеры спектрального анализа 212 5.3.3. Статистический анализ 221 5.4. Проектирования фильтров 223 5.4.1. Формы представления фильтров и их преобразования 223 5.4.2. Разработка аналоговых фильтров 227 5.4.3. Проектирование БИХ-фильтров 233 5.4.4. Проектирование КИХ-фильтров 237 5.5. Графические и интерактивные средства 245 5.5.1. Графические средства 245 5.5.2. Интерактивная оболочка SPTOOL 257 6. Исследование линейных стационарных систем (пакет Control Toolbox) 270 Содержание 5 6.1. Ввод и преобразование моделей 272 6.2. Получение информации о модели 286 6.3. Анализ системы 288 6.4. Интерактивный "обозреватель" ltiview 295 6.5. Синтез системы 303 7. Моделирование нелинейных систем (пакет SimuLINK) 308 7.1. Общая характеристика пакета SimuLink 308 7.1.1. Запуск SimuLink 308 7.1.2. Библиотека модулей (блоков) 310 7.1.3. Раздел Sinks (Приемники) 312 7.1.4. Раздел Sources (Источники) 321 7.1.5. Раздел Continuous 336 7.1.6. Раздел Discrete 339 7.1.7. Раздел Math 340 7.1.8. Раздел Functions & Tables 345 7.1.9. Раздел Nonlinear 346 7.1.10. Раздел Signals & Systems 349 7.2. Построение блок-схем 352 7.2.1. Выделение объектов 352 7.2.2. Оперирование с блоками 353 7.2.3. Проведение соединительных линий 357 7.2.4. Проставленние меток сигналов и комментариев 359 7.2.5. Создание подсистем 362 7.2.6. Запись и распечатка S-модели 363 7.3. Примеры моделирования 363 7.3.1. Моделирование поведения физического маятника 363 7.3.2. Моделирование поведения гироскопа в кардановом подвесе 368 7.4. Объединение S-моделей с программами MatLab 373 7.4.1. Принципы функционирования блоков системы SimuLink 374 7.4.2. Функции пересечения нуля 377 7.4.3. Передача данных между средой MatLab и S-моделью 380 7.4.4. Запуск процесса моделирования S-модели из среды MatLab 383 7.4.5. Образования S-блоков путем использования программ на языке MatLab. S-функции 384 7.4.6. Пример создания S-функции 388 7.5. Создание библиотек S-блоков пользователя 396 7.5.1. Создание библиотеки 396 7.5.2. Маскировка блоков 402 7.5.3. Моделирование процесса ориентации космического аппарата 405 Послесловие 413 Список литературы 414 Предметный указатель 415 Указатель операторов, команд, функций и функциональных блоков MatLAB 420 Предисловие 6 Предисловие В последние годы в университетских и инженерно-технических кругах мира наблюдается интенсивное распространение новой компьютерной системы осуще- ствления математических расчетов - системы MatLAB. В чем причина такой по- пулярности этой системы? Главные преимущества "языка технических вычислений" MatLAB, которые выгодно отличают его среди других существующих ныне математических систем и пакетов, состоят в следующем: система MatLAB специально создана для проведения именно инженер- ных расчетов: математический аппарат, который используется в ней, предельно приближен к современному математическому аппарату инже- нера и ученого и опирается на вычисления с матрицами, векторами и комплексными числами; графическое представление функциональных за- висимостей здесь организовано в форме, которую требует именно инже- нерная документация; язык программирования системы MatLAB весьма прост, близок к языку BASIC, посилен любому начинающему; он содержит всего несколько де- сятков операторов; незначительное количество операторов здесь компен- сируется большим числом процедур и функций, содержание которых лег- ко понятно пользователю с соответствующей математической и инженер- ной подготовкой; в отличие от большинства математических систем, MatLAB является от- крытой системой; это означает, что практически все процедуры и функ- ции MatLAB доступны не только для использования, но и для корректи- ровки и модифицирования; MatLAB - система, которая может расширять- ся пользователем по его желанию созданными им программами и проце- дурами (подпрограммами); ее легко приспособить к решению нужных классов задач; очень удобной является возможность использовать практически все вы- числительные возможности системы в режиме чрезвычайно мощного на- учного калькулятора; в то же время можно составлять собственные от- дельные программы с целью многоразового их использования для иссле- дований; это делает MatLAB незаменимым средством проведения науч- ных расчетных исследований; последние версии MatLAB позволяют легко интегрировать ее с тексто- вым редактором Word, что делает возможным использование при созда- нии текстовых документов вычислительных и графических возможностей MatLAB, например, оформлять инженерные и научные отчеты и статьи с включением в них сложных расчетов и выводом графиков в текст. Возможности системы огромны, а по скорости выполнения задач она опе- режает многие другие подобные системы. Все эти особенности делают систему Предисловие 7 MatLAB весьма привлекательной для использования в учебном процессе высших учебных заведений. Эта книга является вторым, переработанным и существенно дополненным изданием учебного пособия "Початки програмування в середовищі MatLAB" [11], содержит, в основном, описание MatLAB версии 5.3 и в него добавлены материа- лы по практическому овладению процедурами пакетов CONTROL (анализа и син- теза линейных систем автоматического управления), SIGNAL (цифровой обра- ботки сигналов), SIMULINK (интерактивного моделирования динамических сис- тем) и некоторых новых важных возможностей MatLAB. Пособие состоит из семи глав. В первой главе читатель знакомится с возможностями системы в режиме научного калькулятора. Здесь помещены сведения об основных операторах, ко- мандах, функциях и процедурах системы. Во второй главе описаны правила и примеры составления программ на язы- ке MatLAB. Кроме того, в ней представлены некоторые дополнительные процеду- ры, которые помогают рационально организовать вычислительный процесс. Третья глава содержит перечень некоторых процедур и команд общего на- значения, которые связывают систему MatLAB с операционной системой компь- ютера. Здесь же описано использование редактора Word с системой MatLAB. Важной частью MatLAB, которая позволяет приспосабливать систему к за- дачам пользователя, является возможность образования новых классов вычисли- тельных объектов. С понятием классов вычислительных объектов в MatLAB и правилами создания новых классов пользователь ознакомится в четвертой главе. В пятой главе сосредоточены сведения об особенностях использования процедур цифровой обработки сигналов пакета SIGNAL. Содержание шестой главы - начальное ознакомление с особенностями рабо- ты с процедурами анализа и синтеза линейных стационарных систем автоматиче- ского управления пакета CONTROL. Седьмая глава знакомит с пакетом SimuLink интерактивного (визуального моделирования динамических систем во временной области). В целях удобства пользования учебным пособием его снабжен двумя алфа- витными указателями - предметным и указателем операторов, команд, функций и функциональных блоков. В пособии использованы материалы из изданий, указанных в списке лите- ратуры. Введение 8 Введение Система MatLAB создана фирмой MathWork Inc. (США, г. Нейтик, штат Массачусетс). Хотя впервые эта система начала использоваться в конце 70-х лет, расцвет ее применения начался в конце 80-х, в особенности после появления на рынке версии 4.0. Последние версии MatLAB, - это чрезвычайно развитые систе- мы, которые содержат огромную совокупность процедур и функций, необходи- мых инженеру и научному работнику для осуществления сложных численных расчетов, моделирования поведения технических и физических систем, оформле- ния результатов этих расчетов в наглядном виде. Система MatLAB (сокращение от MATrix LABoratory - матричная лабо- ратория) представляет собой интерактивную компьютерную систему для выпол- нения инженерных и научных расчетов, ориентированную на работу с массивами данных. Система предполагает возможность обращения к программам, которые написаны на языках FORTRAN, C и C++. Привлекательной особенностью системы является то, что она содержит встроенную матричную и комплексную арифметику. Система поддерживает вы- полнение операций с векторами, матрицами и массивами данных, реализует син- гулярное и спектральное разложения, расчет ранга и чисел обусловленности мат- риц, поддерживает работу с алгебраическими полиномами, решение нелинейных уравнений и задач оптимизации, интегрирование функций в квадратурах, числен- ное интегрирование дифференциальных и разностных уравнений, построение раз- нообразных видов графиков, трехмерных поверхностей и линий уровня. В ней реализована удобная операционная среда, которая позволяет формулировать про- блемы и получать решения в обычной математической форме, не прибегая к ру- тинному программированию. Основной объект системы MatLAB - прямоугольный числовой массив (матрица), который допускает комплексные элементы. Использование матриц не требует явного указания их размеров. Система позволяет решать многие вычисли- тельные задачи за значительно меньшее время, чем то, которое необходимо для написания соответствующих программ на языках FORTRAN, BASIC и C. Система MatLAB выполняет операции с векторами и матрицами даже в режиме непосредственных вычислений без какого-либо программирования. Ею можно пользоваться как мощнейшим калькулятором, в котором наряду с обыч- ными арифметическими и алгебраическими действиями могут использоваться та- кие сложные операции, как обращение матрицы, вычисление ее собственных зна- чений и векторов, решение систем линейных алгебраических уравнений и многое другое. Тем не менее, характерная основная особенность системы – ее "откры- тость", то есть легкость ее модификации и адаптации к конкретным задачам поль- зователя. Пользователь может ввести в систему любую новую команду, оператор или функцию и пользоваться потом ими так же просто, как и встроенными опера- торами и функциями. Введение 9 В базовый набор слов системы входят: спецзнаки; знаки арифметических и логических операций; арифметические, тригонометрические и некоторые спе- циальные математические функции; функции быстрого преобразования Фурье и фильтрации; векторные и матричные функции; средства для работы с комплекс- ными числами; операторы построения графиков в декартовой и полярной систе- мах координат, трехмерных поверхностей и т.п. То есть MatLAB предоставляет пользователю большой набор готовых средств (более половины из них - внешние расширения в виде m-файлов). Система MatLAB имеет собственный язык программирования, который напоминает BASIC. Запись программ в системе является традиционной и потому обычной для большинства пользователей персональных компьютеров. И вдобавок система дает возможность редактировать программы при помощи любого при- вычного для пользователя текстового редактора. MatLAB имеет широкие возможности для работы с сигналами, для расче- та и проектирования аналоговых и цифровых фильтров, для построения их час- тотных, импульсных и переходных характеристик. В наличии и средства для спектрального анализа и синтеза, в частности, для реализации прямого и обратно- го преобразования Фурье. Благодаря этому система довольно удобна для проек- тирования электронных устройств. С системой MatLAB поставляются свыше ста m-файлов, которые содер- жат демонстрационные примеры и определения новых операторов и функций. Эта библиотека, все файлы которой подробно прокомментированы, - подлинная сокровищница прекрасных примеров программирования на языке системы. Изу- чение этих примеров и возможность работы в режиме непосредственных вычис- лений значительно облегчают знакомство с системой серьезных пользователей, заинтересованных в использовании математических расчетов. Робота в среде MatLab может осуществляться в двух режимах: в режиме калькулятора, когда вычисления осуществляются сразу после набора очередного оператора или команды MatLab; при этом значение результатов вычисления могут присваиваться некоторым переменным, или результаты получаются непосредственно, без присваивания (как в обычных калькуляторах); путем вызова имени программы, написанной на языке MatLAB, пред- варительно составленной и записанной на диске, которая содержит все необходимые команды, обеспечивающие ввод данных, организацию вычислений и вывод результатов на экран (программный режим). В обоих режимах пользователю доступны практически все вычислитель- ные возможности системы, в том числе по выводу информации в графической форме. Программный режим позволяет сохранять разработанные вычислительные алгоритмы и, таким образом, повторять вычисления при других входных данных. MatLAB имеет черты разных известных языков программирования высо- кого уровня. |