MATLAB и SIMULINK для WINDOWS -...

37
Белорусский государственный университет В. В. Апанасович, В. В. Скакун MATLAB и SIMULINK для WINDOWS Учебное пособие Минск - 2002 Апанасович В. В., Скакун В. В. Matlab и Simulink для Windows. Учебное пособие.-Мн.: БГУ, 2002.-72 с. Дается достаточно полное описание пакета Matlab with Simulink 4.0 for Windows. Изложен язык программирования MATLAB. На примерах показаны вычислительные и графические возможности пакета. Описан процесс создания моделей и работа с ними в программе динамического моделирования SIMULINK. Для пользователей ПЭВМ: студентов, аспирантов, научных работников, инженеров и программистов.

Transcript of MATLAB и SIMULINK для WINDOWS -...

Page 1: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

Белорусский государственный университет

В. В. Апанасович, В. В. Скакун

MATLAB и SIMULINK

для WINDOWS

Учебное пособие

Минск - 2002

Апанасович В. В., Скакун В. В. Matlab и Simulink для Windows. Учебное пособие.-Мн.: БГУ, 2002.-72

с. Дается достаточно полное описание пакета Matlab with Simulink

4.0 for Windows. Изложен язык программирования MATLAB. На примерах показаны вычислительные и графические возможности пакета. Описан процесс создания моделей и работа с ними в программе динамического моделирования SIMULINK.

Для пользователей ПЭВМ: студентов, аспирантов, научных работников, инженеров и программистов.

Page 2: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

3 4

Введение В настоящем издании дано описание пакета Matlab with Simulink 4.0

for Windows, разработанного фирмой MathWork Inc. MATLAB предназначен для выполнения научных и инженерных расчетов на персональном компьютере и является высокоэффективным средством для проведения сложных вычислений и графического представления данных. MATLAB включает в себя численный анализ, матричную алгебру, обработку сигналов, 2 и 3-мерную графику и также большое число проблемно ориентированных приложений, таких как оптимизация, статистический анализ и т.д.

При проведении вычислений нет необходимости прибегать к традиционному программированию, большинство задач решается, как говорят, в одну строку. Вместе с тем на языке MATLAB можно писать сложные программы расчетов, моделировать реальные процессы. Особенно высокоэффективен MATLAB при работе с данными в виде векторов и матриц, поскольку автоматически выполняет операции над всеми элементами массива данных.

SIMULINK позволяет проводить моделирование сложных динамических систем.

1. Описание пакета MATLAB для Windows

1.1. Назначение MATLAB MATLAB предназначен для выполнения научных и инженерных

расчетов на персональном компьютере. Эти расчеты направлены на решение задач математического моделирования, вычислительной математики (численное интегрирование, дифференцирование, решение оптимизационных задач, выполнение различного рода аппроксимаций исходных данных), по линейной алгебре и аналитической геометрии, математической статистики, а также на использование в конкретных научно-технических приложениях: спектральный и корреляционный анализ, расчет фильтров, анализ нейронных сетей, нечетких систем и т.д.

Название MATLAB является производным от сочетания слов matrix laboratory. Все данные и результаты в пакете MATLAB представляются в виде матриц. Операции сложения, вычитания, деления, умножения и возведения в степень выполняются в матричном виде. Для действий с элементами векторов введена специальная операция “.”, позволяющая производить не матричные операции, а операции типа “элемент на элемент”. MATLAB может работать как с вещественными, так и с комплексными числами.

MATLAB преимущественно используется в интерактивном режиме, который предполагает последовательное выполнение следующих действий: набор строки, выполнение, просмотр результатов. Можно также написать программу в любом текстовом редакторе, оформить ее как файл с расширением .M и затем выполнить ее с помощью команды Run.

Page 3: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

5 6

Пакет включает в себя собственно интерпретатор команд языка программирования MATLAB (Command Window), комплекс программ моделирования динамических систем (SIMULINK), демонстрационно-обучающие примеры и большое количество так называемых M-файлов (файлов с расширением .M). Каждый M-файл представляет собой программу, реализующую некоторые вычисления, начиная с самых элементарных функций типа “синус”, “косинус” и заканчивая сложными, как например, расчет коэффициентов фильтров. MATLAB довольно просто позволяет решать большинство задач, как говорят, в одну строку. Например, запись

q=quad(‘f(x)’,0,1)

приводит к вычислению определенного интеграла от функции f(x) в пределах от 0 до 1, где функция f(x) определена заранее в одноименном файле-функции. Трехмерный рисунок поверхности (рис. 1), задаваемый функцией,

f x y x ex x y e e

x y

x y x y

( , ) ( )

( ) ,

( )

( )

= − −

− − − −

− − +

− − − + −

3 1

105

13

2 1

3 5 1

2 2

2 2 2 2

определенной в файле peaks.m, с подсветкой из точки с азимутом -100 и углом отклонения 500 можно построить, набрав следующие три строки:

surfl(peaks(200),[-10 50]) colormap(gray) shading flat

Рис. 1

1.2. Описание пакета Запустить на выполнение MATLAB можно двумя способами: из

операционной среды Windows двойным нажатием левой кнопки мыши на пиктограмму MATLAB; из командной строки DOS путем набора имени командного файла “MATLAB”, который последовательно загружает Windows, а затем MATLAB. После загрузки пакета на экране монитора появляется окно интерпретатора команд.

Приглашение интерпретатора для ввода очередной команды имеет вид “>>”.

Первоначальное знакомство с пакетом MATLAB лучше всего начать с набора команды “intro”, которая запускает обучающую программу. Язык интерпретатора команд MATLAB прост и легко поддается изучению. С основными возможностями пакета MATLAB можно также ознакомиться и

Page 4: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

7 8

по демонстрационным примерам. Для их просмотра необходимо ввести команду “demo”. По этой команде в окне интерпретатора команд появляется меню, позволяющее выбрать интересующий пример. Чтобы прервать выполнение демонстрационной программы, нажмите “Ctrl+C”.

Интерпретатор команд содержит свой строковый редактор, особенностью которого является помещение в буфер ранее набранных команд. Таким образом, предварительно введенную команду или целую строку можно извлечь из буфера и сразу запустить на выполнение. Функциональное назначение управляющих клавиш редактора приведено ниже:

• Стрелка вверх, Ctrl+P - вызов предыдущей строки из буфера; • Стрелка вниз, Ctrl+N - вызов следующей строки; • Стрелка влево, Ctrl+B - перемещение курсора на символ влево; • Стрелка вправо, Ctrl+F - перемещение курсора на символ вправо; • Ctrl+Стрелка влево - перемещение курсора на слово влево; • Ctrl+Стрелка вправо - перемещение курсора на слово вправо; • Home, Ctrl+A - перемещает курсор в начало строки; • End, Ctrl+E - перемещает курсор в конец строки; • Esc - вытирает командную линию; • Del, Ctrl+D - удаляет символ над курсором; • Backspace - удаляет символ слева от курсора; • Ctrl+K - удаляет символы от курсора до конца строки.

1.2.1. Описание пунктов меню интерпретатора Меню интерпретатора команд MATLAB включает следующие

пункты: File, Edit, Options, Windows, Help. Меню File:

New M-file Open M-file………………………...… … Figure Open Selected Model Save Workspase As... Run M-file... Look For selected Print... Printer Setup... Exit MATLAB Пункт New позволяет открыть три вида окон:

- окно текстового редактора (по умолчанию Notepad) для набора текста программы (M-file), - окно отображения графической информации (Figure), - окно, в котором можно создать новую модель для работы в программе SIMULINK (Model).

Open M-file вызывает текстовый редактор для просмотра и редактирования уже существующих М-файлов.

Open Selected вызывает текстовый редактор для файла, имя которого совпадает с выделенной строкой в окне интерпретатора команд.

Save Workspase As... позволяет сохранить переменные в файле с расширением .MAT.

Run M-file запускает программу на выполнение. Look For selected осуществляет поиск строки, выделенной в окне

интерпретатора команд, в заголовках всех М-файлов. Print... печатает текст, выделенный в окне интерпретатора команд.

Если нет выделенного участка текста, то печатается весь текст. Printer Setup... позволяет выполнить настройку принтера.

Page 5: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

9 10

Exit MATLAB завершает работу с пакетом. Меню Edit:

Cut Ctrl-X Copy Ctrl-C Paste Ctrl-V Clear Session

Пункты Cut, Copy, Paste позволяют редактировать текст через буфер

“clipboard”. Clear Session очищает буфер предыстории введенных команд и окно

интерпретатора.

Меню Options:

Numeric Format Turn Echo on Enable Background Process Font... Editor Preference…...

Numeric Format задает формат выводимых чисел: Short (выбирается по умолчанию) выводит число в формате с

фиксированной точкой и четырьмя значащими цифрами в дробной части. Long выводит число в формате с фиксированной точкой и с

четырнадцатью значащими цифрами в дробной части. Hex выводит число в шестнадцатеричном формате. Bank выводит число в формате с фиксированной точкой и двумя

значащими цифрами в дробной части (банковский формат).

Plus выводит знаки: “+” - для положительных чисел, “-” для отрицательных, для нулей не выводится ничего.

Short e выводит число в формате с плавающей точкой и четырьмя значащими цифрами.

Long e выводит число в формате с плавающей точкой и c четырнадцатью значащими цифрами.

Rational представляет число с плавающей точкой как отношение наименьших целых.

Loose выводит численные значения с пропуском строк до и после них.

Compact выводит численные значения без пропуска строк. Turn Echo on включает и выключает режим “эхо” (вывод текста

команд перед их исполнением) при выполнении программы. Во включенном состоянии сменяется на Turn Echo off.

Enable Background Process включает и выключает фоновый режим для параллельного выполнения программ, требующих больших затрат времени.

Font... вызывает диалоговое окно для смены текущего шрифта и цвета фона.

Editor Preference... вызывает диалоговое окно для выбора текстового редактора , используемого по умолчанию.

Меню Windows:

1 Figure No.1 2 MATLAB Command Window Меню Windows позволяет переключаться между окном

интерпретатора команд и графическими окнами.

Short (default) Long Hex Bank Plus Short e Long e Rational

Loose (default) Compact

Page 6: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

11 12

Меню Help:

Table of Contents... Index... Help Selected About Table of Contents... показывает список разделов пакета MATLAB. Index... дает алфавитный список всех функций пакета MATLAB. Help Selected выдает подсказку по слову, выделенному в окне

интерпретатора команд. About выводит на экран сообщение о версии данного пакета

MATLAB.

1.2.2. Вывод графической информации Для вывода графической информации в пакете MATLAB

предусмотрены графические окна (Figure Window). Они представляют собой стандартные окна Windows и создаются автоматически при вызове любой графической функции. В одном графическом окне можно отобразить несколько рисунков либо каждый раз открывать новое окно. Число одновременно открытых графических окон определяется системными ресурсами компьютера. Графическое окно имеет свое меню и позволяет печатать и копировать в буфер “clipboard” свое содержимое.

Меню окна представления графической информации включает следующие пункты: File, Edit, Windows, Help.

Меню File: New Figure New M-file Close …………… … Figure

Model Print... Printer Setup... Exit MATLAB New Figure создает новое графическое окно. Пункт New позволяет открыть три вида окон:

- окно текстового редактора (по умолчанию Notepad) для набора текста программы (M-file), - окно отображения графической информации (Figure), - окно, в котором можно создать новую модель для работы в программе SIMULINK (Model).

Close закрывает графическое окно. Print... печатает графическое изображение на текущий принтер. Printer Setup... позволяет выполнить настройку принтера. Exit MATLAB завершает работу с пакетом.

Меню Edit:

Copy to Metafile Copy to Bitmap Clear figure

Copy to Metafile копирует графическое изображение из окна в буфер “clipboard” в формате Windows Metafile (расширение файлов WMF).

Page 7: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

13 14

Copy to Bitmap копирует графическое изображение из окна в буфер “clipboard” в формате Windows Bitmap (расширение файлов BMP).

Clear figure очищает графическое окно.

Меню Windows:

1 Figure No.1 2 MATLAB Command Window Меню Windows позволяет переключаться между окном

интерпретатора команд и графическими окнами.

Меню Help:

Table of Contents... Index...

Table of Contents... показывает список разделов пакета MATLAB. Index... дает алфавитный список всех функций пакета MATLAB.

1.3. Описание языка MATLAB Язык MATLAB - это язык выражений, позволяющий производить

вычисления, избегая традиционного программирования на каком-либо языке высокого уровня. Он работает с константами, переменными, массивами, содержащими как численную, так и символьную информацию. Все вычисления ведутся с двойной точностью.

1.3.1. Перечень символов и знаков

[ : + < ] ; - >

( % * & ) ! / | . ‘ \ ~ , ^ =

1.3.2. Описание применения символов и знаков

[ ] Квадратные скобки. Используются для записи векторов и матриц. В скобках могут стоять векторы и матрицы. Запись [A B;C] допустима, если числа строк в А и В равны, а общее число столбцов А и В равно числу столбцов в С.

( ) Круглые скобки. Применяются для указания

последовательности выполнения действий в арифметических операторах, для указания аргументов функций. Если А матрица, а V и W - векторы из N и М компонентов, то запись А(V,W) формирует матрицу N*M, элементы которой выбираются из исходной матрицы А, а индексы элементов указаны в векторах V и W (элементами векторов V, W должны быть целые числа, лежащие в пределах числа строк и столбцов исходной матрицы А).

. Десятичная точка. При использовании десятичной точки и

символов *, /, ^ получаются операции типа "элемент на элемент". Например, выражение C=A./B дает матрицу с элементами А(i,j)=А(i,j)/В(i,j).

, Запятая. Используется для разделения операторов и аргументов функций.

: Двоеточие. Используется для генерации векторов.

; Точка с запятой. Если после арифметического выражения

стоит точка с запятой, то результат вычислений не выводится на экран дисплея.

Page 8: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

15 16

% Знак процента. Все, что следует за этим символом, воспринимается как комментарий.

! Восклицательный знак. Любой текст, следующий за

восклицательным знаком, воспринимается как команда операционной системы.

' Верхняя кавычка. Используется для обозначения

транспонирования матрицы и создания текстовых сообщений. ^ Степень. X^p возводит X в степень p, причем p - скаляр. Если

P матрица, то x^P - это x, возведенное в матричную степень Р. Операция поэлементного возведения в степень записывается так - X.^Y.

+ Сложение. X+Y, при этом X и Y должны иметь одинаковую

размерность.

- Вычитание. X-Y, X и Y должны иметь одинаковую размерность.

* Умножение. Матричное умножение: X*Y. Число столбцов X

должно быть равно числу строк Y. Поэлементное умножение матриц (векторов) - X.*Y.

/ Правое деление матриц. A./B означает поэлементное деление

матриц.

\ Левое деление матриц. < Меньше. Запись <= означает меньше или равно.

> Больше. Запись >= означает больше или равно.

= Равно. Символ равенства или присвоения в арифметических

выражениях. Используется также в операторе логического равенства ==.

& Логическое И.

| Логическое ИЛИ.

~ Логическое НЕ. Используется также в операторе логического

неравенства ~=.

1.3.3. Операции Операции языка MATLAB можно разделить на: • элементарные математические: +, -, *, /, ^, = . Все эти операции

выполняются в матричном виде. Предостерегающие сообщения появляются при несовпадении размерностей матриц.

• специальные матричные: ‘, \. • операции типа “элемент на элемент”. Получаются с применением

точки и операций *, /, ^ . Точка ставится перед операцией - .*, ./, .^ . Эти операции позволяют провести поэлементное умножение, деление и возведение в степень матриц и векторов.

• операции отношения: <, <=, >, >=, ==, ~= . Применяются для сравнения двух матриц одинаковой размерности. Если условие выполняется, то MATLAB возвращает единичную матрицу, в противном случае - нулевую.

• логические операции: &, |, ~. Логические операции всегда выполняются поэлементно. Операнды должны быть матрицами одинаковой размерности, причем одним из операндов может быть скаляр.

1.3.4. Данные В вычислениях могут использоваться как скалярные величины, так и

векторы (матрицы). Векторы удобно генерировать с помощью операции “:”. Например:

x=1:5 генерирует вектор

x = 1 2 3 4 5.

Приращение, отличное от 1, можно задать между двумя символами “:” : x=0:2:10

Получим x =

0 2 4 6 8 10 . Двоеточие можно также использовать для выбора нужных строк,

столбцов и элементов векторов и матриц. Если А - вектор размерности

Page 9: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

17 18

больше 10, то А(1:10) выделит первые десять элементов вектора. Для матриц А(:) дает все элементы матрицы А, взятые как один столбец (столбец к столбцу). Запись А(:,j) дает j-й столбец матрицы А; А(j:k,l) - это А(j,l), А(j+1,l),..., А(k,l) и наконец А(:,j:k) - это А(:,j), А(:,j+1),..., А(:,k). Соответственно запись А(j,:) дает j-ю строку матрицы А; А(j:k,:) - это А(j,:), А(j+1,:),..., А(k,:).

Векторы и матрицы записываются внутри квадратных скобок. Строки разделяются точкой с запятой, элементы внутри строки - пробелами. Запись

A=[ 1 2 3; 4 5 6; 7 8 9 ]

соответствует матрице A=

1 2 3 4 5 6 7 8 9 .

Эту же матрицу можно задать следующим образом:

A= [1 2 3 4 5 6 7 8 9] .

Набор каждой строки в этом случае завершается вводом. Большие матрицы удобно вначале записывать в текстовом редакторе в файле с расширением .М, а затем считывать их в память. Например, если файл data.m содержит три строки

A= [1 2 3 4 5 6 7 8 9] ,

то для генерации матрицы А достаточно набрать имя файла - data. Пустая матрица задается так - A=[ ]. Элементами матриц могут быть

выражения, например, sqrt(3)+5.1. Матрицы можно соединять, используя операцию конкатенации. Результатом операции A = [ A; R ], где

R = [ 10 11 12 ] , будет матрица вида:

A= 1 2 3 4 5 6 7 8 9 10 11 12 .

Для обращения к отдельному элементу матрицы (векторы) используются круглые скобки. Вначале указывается номер строки, затем после запятой номер столбца. Например, в нашем случае A(2,3)=6.

Комплексные числа записываются следующим образом: C = A+i*B, где A, B, C - матрицы. MATLAB поддерживает мнимые единицы i и j. Их можно получить также с помощью функции извлечения квадратного корня: i= sqrt(-1).

Наряду с числами можно использовать символьную информацию, которая должна заключаться в одиночные кавычки. Так, строка записывается следующим образом:

A = ‘abcdef’. Над строками можно производить операцию конкатенации, ровно как

и над матрицами: A = [A, ‘gh’] .

Получим A =

abcdefgh . Символьная информация запоминается в векторном виде: один

символ в ASCII коде на элемент. Функция abs позволяет перевести строковую переменную в вектор ASCII кодов

s = ‘Hello’ v = abs(s) s = 72 101 108 108 111 .

1.3.5. Переменные и выражения Обычно строка программы на языке MATLAB записывается как

переменная = выражение или просто

выражение. Выражение может состоять из операторов, других специальных

символов, функций и переменных. Результатом вычисления выражения всегда является матрица, которая присваивается переменной. Если переменная не указана, то автоматически генерируется переменная ans, которой и присваивается результат. Длинные выражения можно продолжать на следующей строке, поместив в конце предыдущей многоточие (...…). Любая строка, в начале которой стоит символ %, расценивается как комментарий.

Большие последовательности строк удобно вначале записывать в текстовом редакторе, а затем передавать на выполнение. Файл,

Page 10: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

19 20

содержащий программу на языке MATLAB, должен иметь расширение .M. Для запуска M-файла на выполнение достаточно набрать его имя в окне интерпретатора команд (при условии, что интерпретатору известно местонахождение файла) или воспользоваться командой Run. Функции в пакете MATLAB вызываются по имени файла, и поэтому их всегда необходимо записывать в текстовом редакторе в файле с расширением .М. М-файл может вызывать самого себя рекурсивно. Задать путь в свой рабочий директорий можно путем дополнения строки matlabpath в загрузочном файле matlabrc.m .

Переменные могут состоять из различимых между собой больших и малых букв латинского алфавита, чисел и символа подчеркивания. MATLAB запоминает только первые 19 символов переменной. Все введенные переменные сохраняются до конца сеанса работы с пакетом MATLAB. То же относится и к переменным М-файла, переданного на выполнение. Если возникает необходимость в повторном использовании переменной с тем же именем, то желательно вначале удалить ее оператором clear имя переменной. Оператор clear all удаляет сразу все переменные. Некоторые переменные , такие как ans и eps, являются временными, и их невозможно уничтожить командой clear. Переменная eps задает значение, по которому оценивается потеря точности в вычислениях, и равна 2-52 = 2.22 16. Это значение можно переустановить на другое, включающее 0. Абсолютная величина числа с плавающей точкой может принимать значения от 10-318 до 10308. Если число выходит за максимальный предел, то оно обозначается Inf. Например, после выполнения выражения

s = 1/0 s будет равно Inf. Результат вычисления выражений, таких как Inf/Inf и 0/0, обозначается NaN (не число).

В любой момент можно получить информацию о переменных, находящихся в данный момент в памяти. Команда who дает просто список переменных, а команда whos дополнительно показывает размерность, число элементов переменной и размер в байтах.

Для выхода из пакета MATLAB, кроме использования команды меню, можно также набрать quit или exit. При этом все переменные удаляются из памяти. Чтобы избежать этого, перед выходом следует набрать команду save. Эта команда сохраняет все переменные в файле matlab.mat. Для сохранения одной или нескольких переменных используется расширенная форма записи команды save:

save temp X Y Z ,

где temp - имя файла с расширением .mat. Для сохранения данных в ASCII формате применяется команда save с опцией -ascii:

save temp.dat X Y Z -ascii . Для повторной загрузки переменных в память используется команда

load имя файла. При этом команда load без последующего имени файла загружает файл matlab.mat.

Page 11: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

21 22

1.3.6. Условные операторы и операторы цикла Как и большинство языков высокого уровня MATLAB, имеет

условный оператор if и операторы циклов for и while. Все эти операторы необходимо завершать словом end.

В операторе if кроме операций сравнения условие может содержать также логические операции.

if x == 0 && y~=1 A = 5; else B = -5; end

Следующий пример демонстрирует вложенный оператор if ... elseif ... else ...end.

if n < 0 A = negative(n) elseif rem(n,2) == 0 A = even(n) else A = odd(n) end

Оператор for повторяет тело цикла, заключенное между операторами for счетчик цикла и end, предопределенное число раз. Например,

for i = 1:n, x(i) = 0, end обнуляет элементы вектора x. В данном примере операторы разделяются запятыми, так как записаны в одну строку. Даже если вектор x не существует или его размерность меньше n, MATLAB автоматически зарезервирует под него требуемое место в памяти. Циклы for можно вкладывать друг в друга

for i = 1:m for j = 1:n

A(i, j) = 1/(i + j -1); end

end В обобщенной форме цикл for записывается следующим образом.

for v = выражение тело цикла end

Если результатом выражения является матрица, то элементы ее будут присваиваться переменной v по столбцам.

E = выражение;

[m,n] = size(E); for j = 1:n

v = E(:,j); тело цикла

end Оператор while повторяет тело до тех пор, пока выполняется условие,

следующее за while: n = 1 while prod(1:n) < 1.e100, n = n + 1; end n

Приведенный пример определяет число n, факториал которого дает стозначное число.

Обобщенная форма цикла while представлена ниже. for выражение тело цикла end

Для принудительного выхода из цикла используется оператор break.

1.3.7. Операторы управления потоком ввода-вывода информации

• clc - производит очистку экрана; • echo - включает (echo on) и выключает (echo off) вывод

команд перед их исполнением; • pause - останавливает выполнение программы и ждет от

пользователя нажатия любой клавиши, pause(n) останавливает выполнение на n секунд;

• input - служит для ввода числовой либо текстовой информации.

Например, n=input(‘Число прогонов модели =’)

дает подсказку в виде строки текста и ожидает ввода пользователя. Можно ввести любое выражение, имеющее своим результатом число, которое затем присваивается переменной n. Для ввода строковой информации используется следующий вариант:

n = input(‘Название модели =’, ’s’) . Здесь введенная информация не оценивается, а просто передается переменной n в виде строки;

• disp - выводит на экран содержимое переменной и текст.

Page 12: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

23 24

Например, disp(X)

выводит на экран матрицу X без указания имени. Если X - строковая переменная, то выводится текст;

• keyboard - передает управление пользователю при выполнении M-файла. После выполнения этого оператора можно просматривать и изменять переменные, выполнять любые команды. Для продолжения выполнения M-файла необходимо набрать return.

1.4. Поддержка команд операционной системы и запуск внешних программ

Из М-файла либо из среды интерпретатора команд можно запустить на выполнение внешние DOS-программы без выхода из MATLAB. Встретив символ !, интерпретатор считает весь следующий за ним текст как команду операционной системы и выполняет ее. В этом режиме управление передается интерпретатору только после завершения работы команды операционной системы.

Выполнять DOS-программы можно также и в фоновом режиме. Для этого необходимо после команды операционной системы поставить символ &.

! notepad & Символ ! сам по себе открывает новое DOS-окно и запускает DOS в фоновом режиме, что эквивалентно

! command & . Если завершить командную строку символом | вместо &, то

выполнение DOS-программы будет также происходить в фоновом режиме, но при этом не будет открываться новое окно. Индикацией присутствия фонового процесса, подобно минимизированным приложениям Windows, является иконка.

Непосредственно, т. е. без символа !, выполняются следующие команды файловой системы: dir, type, delete, cd, аналогичные командам MS-DOS: dir, type, del, chdir.

1.5. Функции Функции пакета MATLAB разделяются на встроенные и внешние,

поставляемые дополнительно с пакетом. Функции разделяются на следующие категории:

• Элементарные математические • Специальные математические • Элементарные матричные • Специальные матричные • Матричная декомпозиция и факторизация • Анализ данных • Действия с полиномами • Решение дифференциальных уравнений • Решение нелинейных уравнений и оптимизация • Численное интегрирование • Обработка сигналов. Для получения подробной информации о конкретных функциях

используется команда help либо пункты Table of Contenst…... и Index меню Help. Например, команда help sin выдает информацию о функции вычисления синуса. Cправочная информация помещается в заголовке каждой функции. Для поиска необходимой функции удобно применять команду lookfor. Например, lookfor inverse выводит на экран список функций, в описании которых встречается слово inverse:

invhilb Inverse Hilbert matrix. acos Inverse cosine. atan2 Four quadrant inverse tangent. …...

Для функций, поставляемых дополнительно с пакетом, помощь доступна только по команде help.

MATLAB поддерживает вложенный вызов функций, например: x = sin(sqrt(z)) .

Функции могут возвращать не только одно значение (т.е. матрицу), а два и более:

[X,Y,Z] = myfunction(a, b, c, d) .

Page 13: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

25 26

Возвращаемые переменные заключаются в квадратные скобки и разделяются запятыми.

В пакете MATLAB предусмотрено создание новых функций и внесение их в библиотеку. Вновь созданная функция может использовать уже существующие функции. Текст функции должен быть помещен в файл с расширением .M, имя которого совпадает с именем функции, так как MATLAB вызывает функции по имени файла. Имена функций должны состоять только из малых букв. В первой строке необходимо определить имя функции и входные и выходные переменные с помощью оператора function. Например, для функции [Z,Q]=f(x,y) первой строкой файла f.m будет строка:

function [Z,Q]=f(x,y) .

Далее помещается комментарий к функции, который потом можно будет прочитать по команде help.

Переменные, используемые в функции, являются локальными и уничтожаются при выходе из функции, и наоборот, если переменные с такими именами существовали до вызова функции, то они останутся без изменений. Для того, чтобы сделать “видимыми” переменные функции в вызывающей программе и наоборот, их необходимо объявить глобальными оператором global в вызывающей программе и в функции. Приведем пример использования оператора global при решении системы дифференциальных уравнений

&

&

y y y yy y y y

1 1 1 2

2 2 1 2

= −= − +

.

Вначале создадим файл lotka.m:

function yp=lotka(t,y) %LOTKA Lotka-Volterra predator-prey model. global ALPHA BETA yp=[y(1)- ALPHA*y(1)*y(2); -y(2)+ BETA*y(1)*y(2)];

Затем в интерактивном режиме можно ввести следующее: global ALPHA BETA ALPHA=.01 BETA=.02 [t,y]=ode23(‘lotka’,0,10,[1 1]);

plot(t,y) На Рис. 2 приведена траектория решения, построенная функцией plot(t,y).

Рис. 2

1.5.1. Элементарные математические функции Математические функции выполняются раздельно для каждого

элемента входного вектора или матрицы. • abs - абсолютное значение или модуль комплексного числа; • angle - фазовый угол; • sqrt - квадратный корень; • real - действительная часть комплексного числа; • imag - мнимая часть комплексного числа; •conj - комплексное сопряжение; • round - округление к ближайшему целому;

Page 14: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

27 28

• fix - округление в направлении нуля; • floor - округление в сторону - • ceil - округление в сторону + • sign - функция знака; • rem - остаток; • gcd - наибольший общий знаменатель; • lcm - наименьший общий множитель; • exp - экспонента; • log - натуральный логарифм; • log10 - логарифм по основанию 10;

- тригонометрические функции: • pi - число • sin - синус; • cos - косинус; • tan - тангенс; • asin - арксинус; • acos - арккосинус; • atan - арктангенс; • atan2 - арктангенс четвертого квадранта; • sinh - гиперболический синус; • cosh - гиперболический косинус; • tanh - гиперболический тангенс; • asinh - гиперболический арксинус; • acosh - гиперболический арккосинус; • atanh - гиперболический арктангенс;

- логические функции и функции отношения: • any - логическое условие. Проверяет, имеется ли хотя бы

один ненулевой элемент; • all - логическое условие. Проверяет, являются ли все

элементы ненулевыми. Если аргументом функций any и all является матрица, то

результатом будет вектор-строка, полученная при выполнении проверки по элементам каждого столбца матрицы;

• find - возвращает индексы ненулевых значений, полученных обычно в результате выполнения логического условия для вектора или матрицы;

• exist - проверяет, существует ли переменная; • isnan - определяет, является ли переменная не-числовым

значением; • isinf - проверка на бесконечность; • finite - проверяет, имеет ли переменная конечное значение; • isempty - проверяет, является ли матрица пустой (хотя бы одна

размерность равна нулю); • isstr - определяет, является ли переменная строкой; • isglobal - определяет, является ли переменная глобальной; • issparse - определяет, является ли матрица разреженной;

- функции для работы со строками: • setstr - - выводит вектор как текст; • isstr - проверяет, является ли переменная строковой; • strcmp - сравнивает строки; • sprintf - конвертирует форматированные данные в строку; • num2str - конвертирует численные данные в строку; • int2str - конвертирует целое число в символ.

1.5.2. Специальные математические функции • bessel - функция Бесселя; • beta - - функция; • gamma - - функция; • rat - рациональное приближение; • erf - функция ошибки; • erfinv - инвертированная функция ошибки; • ellipk - полный эллиптический интеграл первого и второго

рода; • ellipj - якобиан эллиптической функции.

1.5.3. Элементарные матричные функции • expm - матричная экспонента; • logm - матричный логарифм; • sqrtm - матричный квадратный корень. Эти трансцендентные матричные функции определены только для

квадратных матриц. Другие матричные функции включают:

Page 15: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

29 30

• rot90 - поворот матрицы на 900; • fliplr - поворот матрицы на 1800 по вертикали; • flipud - поворот матрицы на 1800 по горизонтали; • diag - вычисляет диагональные элементы или генерирует

диагональную матрицу; • tril - выделение верхнего треугольника матрицы; • triu - выделение нижнего треугольника матрицы; • reshape - изменение размерности матрицы; • ‘ - транспонирование; • det - определитель; • trace - след матрицы; • cond - вычисление числа обусловленности; • norm - первая норма, вторая норма, F-норма, -норма; • rank - вычисление ранга матрицы; • rcond - оценка числа обусловленности; • zeros - генерирование нулевой матрицы; • ones - генерирование матрицы, состоящей из единиц; • rand - генератор равномерно распределенных от 0 до 1

случайных величин; • randn - генератор нормально распределенных случайных

величин; • eye - создание идентичной матрицы; • linspase - генерирует вектор, состоящий из равноотстоящих

значений; • logspase - генерирует вектор, состоящий из равноотстоящих

логарифмически распределенных на отрезке значений; • sparse - представление разреженных матриц в сжатом виде.

Запоминаются только ненулевые элементы вместе с их индексами. Для матриц, представленных в сжатом виде, поддерживаются все элементарные операции. Позволяет также генерировать разреженные матрицы;

• full - представление сжатых с помощью функции sparse матриц в полном виде.

1.5.4. Специальные матричные функции Предназначены преимущественно для генерации специальных

матриц, используемых в линейной алгебре и обработке сигналов.

• gallery - тестовые функции; • hadamard - матрица Адамара; • hankel - матрица Ганкеля; • hilb - матрица Гилберта; • invhilb - обратная матрица Гилберта; • kron - матрица тензорного произведения Кронекера; • magic - магический квадрат; • pascal - треугольная матрица Паскаля; • toeplitz - Теплицева матрица; • vander - матрица Вандермонда.

1.5.5. Матричная декомпозиция и факторизация • lu - LU факторизация; • qr - ортогональная факторизация; • svd - сингулярная декомпозиция; • eig - вычисление собственных чисел и собственных

значений.

Page 16: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

31 32

1.5.6. Анализ данных • max - максимальное значение; • min - минимальное значение; • mean - среднее значение; • median - медиана; • std - среднеквадратическое отклонение; • sort - сортировка; • sum - сумма элементов; • prod - произведение элементов; • cumsum - кумулятивная сумма; • cumprod - кумулятивное произведение; • diff - попарные разности n и (n-1) элементов; • corrcoef - матрица корреляционных коэф-фициентов; • cov - для вектора - дисперсия, для матрицы -

ковариационная матрица. Если аргументом этих функций является матрица, то вычисления

производятся по столбцам. Например, min(A) дает вектор-строку минимальных значений для каждого столбца матрицы A. Если же аргумент - вектор, то не делается различия по его ориентации.

1.5.7. Действия с полиномами • poly - вычисление характеристических коэффициентов

полинома; • roots - вычисление корней полинома; • polyval - вычисление значения полинома; • polyvalm - вычисление матричного значения полинома; • conv - произведение полиномов; • deconv - деление полиномов; • residue - находит остаток от деления двух полиномов; • polyder - производная; • polyfit - полиномиальная аппроксимация.

1.5.8. Обработка сигналов • conv - свертка; • deconv - деконволюция; • fft - быстрое преобразование Фурье; • ifft - обратное преобразование Фурье; • fft2 - двумерное преобразование Фурье; • ifft2 - обратное двумерное преобразование Фурье; • conv2 - двумерная свертка. Если аргументом этих функций является матрица, то вычисления

производятся по столбцам. • filter - фильтрация сигнала. Функция y=filter(b,a,x)

отфильтровывает данные в векторе x соответственно с векторами a и b. Структура фильтра описывается разностным уравнением вида

y n b x n b x n b nb x n nba y n a na y n na

( ) ( ) ( ) ( ) ( ) . . . ( ) ( )( ) ( ) . . . ( ) ( )

= + − + + − + −− − − − − +

1 2 1 12 1 1

или эквивалентным Z-преобразованием

H z Y zX z

b b z b nb za z a na z

nb

nb( ) ( )

( )( ) ( ) . . . ( )

( ) . . . ( )

( )

( )= =

+ + +

+ + +

− − −

− − −

1 21 2

1 1

1 1.

1.5.9. Функции от функций Термин “функции от функций”обозначает то, что некоторая функция

является аргументом другой функции. Такие функции используются при численном интегрировании, дифференцировании и решении нелинейных уравнений

Для численного интегрирования применяются: • quad - интегрирование по методу Симпсона; • quad8 - интегрирование по методу Ньютона-Котеса.

Вторым и третьим аргументом функций quad и quad8 задаются пределы интегрирования. По умолчанию точность интегрирования равна 10-3. Если необходима другая точность, то ее можно задать четвертым аргументом. К примеру, проинтегрируем функцию f(x)=ax2e-bx в пределах от 0 до 1 и с точностью 10-5

global a b

Page 17: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

33 34

a=2; b=0.5; z=quad('func',0,1,1e-5) .

Функция f(x) описана в файле func.m function y=func(x) global a b y=a*x.^2.*exp(-b*x) .

Решение дифференциальных уравнений обеспечивается функциями: • ode23 - метод Рунге-Кутта 2-го и 3-го порядка; • ode45 - метод Рунге-Кутта-Фелберга 4-го и 5-го порядка.

Рассмотрим пример дифференциального уравнение второго порядка && ( ) &x x x x+ − + =2 1 0 .

Такое уравнение можно переписать в виде системы двух уравнений первого порядка

& ( )&

x x x xx x

1 1 22

2

2 1

1= − −=

.

Вначале необходимо сформировать файл-функцию, скажем diff.m, описывающую эту систему уравнений. Имя файла должно совпадать с именем функции.

function dx=diff(t,x) dx=zeros(2,1); dx(1)=x(1).*(1-x(2).^2)-x(2); dx(2)=x(1);

Для решения системы дифференциальных уравнений, определенной в файле diff.m на интервале 0 ≤ t ≤ 20, воспользуемся функцией ode23:

x0=[0 0.25]’; - задание начальных условий [t,x]=ode23(‘diff’,0,20,x0); plot(t,x);

Решение нелинейных уравнений и поиск минимумов можно осуществлять с помощью функций:

• fmin - нахождение минимума функции одной переменной; • fmins - нахождение минимума функции многих переменных; • fzero - нахождение нулей функции одной переменной.

1.6. Двухмерная графика MATLAB предоставляет в распоряжение пользователя широкий круг

высокоуровневых функций графического отображения данных и построения графиков. Большинство из этих функций требуют данных в форме векторов или столбцов матриц. Масштабирование осей происходит автоматически в соответствии с данными.

1.6.1. Элементарные функции Перечисленные в этом пункте функции относятся к элементарным и

различаются только масштабированием осей: • plot - рисует график в линейном масштабе. Данные

должны быть представлены двумя векторами совпадающей размерности, например plot(x,y). Функция plot может принимать также один аргумент - вектор y. В этом случае по оси Х будут откладываться номера элементов вектора.

• loglog - рисует график в логарифмическом масштабе по обоим осям;

• semilogx - рисует график в логарифмическом масштабе по оси X и линейном - по оси Y;

• semilogy - рисует график в логарифмическом масштабе по оси Y и линейном - по оси X.

Следующие функции добавляют название графика, осей, позволяют нанести сетку или поместить текст в произвольном месте:

• title - добавляет название графика и располагает его симметрично вверху;

• xlabel - добавляет название оси X; • ylabel - добавляет название оси Y; • text - помещает в заданной позиции строку текста; • gtext - помещает текст на график с помощью мыши; • grid - наносит сетку; • axis - управляет включением (включает - axis on и

выключает - axis off) и масштабированием осей. Можно изменить оцифровку осей функцией

axis([xmin xmax ymin ymax]). По умолчанию xmin = min(x), xmax = max(x).

Page 18: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

35 36

• figure - figure без аргументов открывает новое графическое окно; figure(N) - делает активным окно N. Если окна с номером N не существует, то MATLAB создает новое графическое окно со следующим допустимым номером (не обязательно равным N).

Для изменения цвета и стиля линии графика добавляется спецификация формата в вышеприведенные функции. Например,

plot(x, y, S), где S - строка, составленная из 1, 2 или 3 символов, приведенных в таблице:

Символ Цвет Символ Стиль линии y желтый . точка m ярко-красный o кружок c сине-зеленый x х r красный * звездочка g зеленый + плюс b синий - сплошная w белый : пунктирная k черный -. штрихпунктирная -- штриховая

• hold - оператор hold позволяет добавлять графики на уже

существующем рисунке. Если включен режим добавления (hold on), MATLAB не удаляет предыдущий график, а добавляет его к существующему, используя те же оси. Выключается режим добавления командой hold off. Тот же результат можно получить, последовательно перечислив пары векторов x, y графиков вместе со спецификациями формата в операторе plot:

plot(x1, y1, ‘r-’, x2, y2, ‘g--’, x3, y3, ‘b-.’). • subplot - в одном окне можно расположить до четырех

графиков, используя функцию subplot(n,m,p). Эта функция разбивает окно на матрицу (n m) прямоугольных областей и выбирает p-ю область для текущего графика. Например, subplot(2,1,1) разбивает окно на две половины по горизонтали и делает активным верхнее окно (Рис. 1).

t=0:pi/500:2*pi; subplot(2,1,1) plot(t,sin(t)) subplot(2,1,2)

plot(t,cos(t))

Рис. 1 Приведем пример использования функций построения графиков

(Рис. 3):

t = 0:pi/100:2*pi; x = sin(t); y1 = sin(t+0.25); y2 = sin(t+0.5); plot(x, y1,'r-', x, y2,'g-.') axis([-1.5 1.5 -1.5 1.5]) title( ‘Phase Shift’ ) xlabel( ‘x = sin(t)’ ) ylabel( ‘y = sin(t+)’ )

Page 19: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

37 38

Рис. 3

1.6.2. Изображение матриц и комплексных величин Функция plot может иметь матрицу либо комплексную величину в

качестве единственного аргумента: plot(z).

Если z - матрица, то в качестве значений x принимаются номера строк матрицы, значений y - элементы матрицы. При этом каждому столбцу соответствует своя линия графика. В общем случае, хотя бы один из аргументов x, y функции plot(x,y) может быть матрицей. Тогда:

- если y - матрица, а х - вектор, то plot(x, y) рисует графики строк или столбцов матрицы Y против вектора х, используя различные цвета и стили для каждой линии. Порядок построения графиков по строкам или

столбцам зависит от размерности вектора х. Если матрица y квадратная, то каждой линии будет соответствовать столбец матрицы.

- если x - матрица, а y - вектор, то plot(x, y) рисует каждую строку или столбец матрицы x против вектора y, заодно переориентируя график соответствующим образом.

- если x и y - матрицы одинаковых размерностей, то plot(x, y) рисует столбец матрицы y против столбца матрицы x.

Например, plot(peaks, rot90(peaks’))

строит график матрицы peaks против самое себя, только транспонированной и повернутой на 900 (Рис. 4).

Если z - вектор комплексных величин, то функция plot(z) рисует график действительной части комплексной величины против мнимой, что эквивалентно

plot(real(z),imag(z)).

Page 20: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

39 40

1.6.3. Ввод данных Данные для построения графика можно считывать из ASCII файла,

содержащего столбцы X, Y1, Y2, и т.д. В этом случае необходимо вначале разместить эти данные в оперативной памяти при помощи оператора load, а затем сформировать векторы из столбцов x, y1, y2:

load graf.dat x = graf(:,1); y1 = graf(:,2); y2 = graf(:,3); plot(x, y1, y2)

Рис. 4

1.6.4. Специальные функции построения графиков • bar - строит график типа гистограммы, т. е. каждая пара

значений X, Y изображается прямоугольником; • compass - создает график углов и модулей комплексных чисел

как стрелки, исходящие из начала координат; • feather - создает график углов и модулей комплексных чисел

как стрелки, исходящие из равноотстоящих точек вдоль горизонтальной оси;

• fplot - оценивает функцию и строит ее график. Выделяет участки графика, где скорость изменения данных наивысшая;

• hist - строит гистограмму. По умолчанию данные разбиваются на 10 равномерно распределенных от минимума до максимума интервалов. Можно указать другое значение разбиения N. Например,

hist(randn(1,10000),30)

строит гистограмму нормально распределенной величины, разбивая интервал наблюдения на 30 отрезков (Рис. 5). Без построения графика вычислить координаты X и Y гистограммы вектора значений z можно следующим образом: [Y, X] = hist(z, N);

• polar - создает график в полярных координатах; • quiver - строит график градиента или других векторных

полей; • rose - создает угловую гистограмму. Угловые значения

вектора данных должны быть заданы в радианах; • stairs - строит график, подобный bar, но без разделительных

полос между прямоугольниками; • fill - заполняет определенным цветом участки графика.

Page 21: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

41 42

Рис. 5

1.7. Трехмерная графика MATLAB позволяет рисовать не только линии графиков в

трехмерном пространстве, но также строить сложные поверхности, контурные и цветовые изображения:

• plot3 - строит график в трехмерном пространстве; • contour, contour3 - создает контурное изображе-ние; • pcolor, image - строит двухмерное цветовое изображение; • mesh, meshc, meshz - строит сетчатую поверхность, созданную

пересекающимися линиями уровня (mesh surfase); • surf, surfc, surfl - строит закрашенную изменяющимся

цветом поверхность, созданную пересекающимися линиями уровня. surfc показывает одновременно еще и контурное изображение, построенное в плоскости X0Y. surfl позволяет определить положение источника света, используемого при вычислении теней поверхности;

• fill3 - заполняет определенным цветом участки поверхности;

• zlabel - добавляет название оси Z; • clabel - позволяет добавлять метки линий уровня

контурных графиков. •axis - изменяет оцифровку осей. В трехмерным

варианте - axis([xmin xmax ymin ymax zmin zmax]).

MATLAB позволяет выбирать точку, определяющую угол зрения при построении графиков в перспективном плане:

• view - задает азимут и угол отклонения точки, определяющей угол зрения;

• viewmtx - вычисляет трансформиро-ванную матрицу при изменении угла зрения;

Угол зрения задается в полярных координатах. Азимут представляет собой полярный угол в плоскости XOY, отклонение - это угол над (положительный) или под (отрицательный) плоскостью XOY (Рис. 2).

Рис. 2 Следующий пример показывает одну и ту же поверхность с четырех

различных углов зрения (Рис. 3).

view(-37.5,30) view(-7,-10)

Page 22: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

43 44

view(-90,0) view(-7,80)

Рис. 3

При построении нескольких графиков на одном рисунке находящийся впереди может перекрывать изображение других. Чтобы сделать видимыми все графики, необходимо отключить подавление скрытых линий оператором hidden off (hidden oп - включает подавление).

1.7.1. Изображение линий В трехмерном пространстве аналогом функции plot является функция

plot3. Функция plot3(x,y,z) рисует линию, соединяющую точки с координатами, заданными в векторах x,y,z и переводит ее в двухмерную проекцию на экран. Для примера

t=0:pi/50:10*pi; plot3(sin(t),cos(t),t);

рисует трехмерный график винтовой линии (Рис. 4).

Рис. 4 Подобно функции plot, plot3 поддерживает также задание

спецификации формата для определения цвета и стиля линии и одновременное рисование нескольких линий.

Page 23: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

45 46

1.7.2. Контурные графики MATLAB позволяет строить контурные графики как в двухмерном

(contour), так и в трехмерном (contour3) пространстве. Такие графики состоят из линий постоянных значений. Например,

contour(peaks,20) строит двухмерный контурный график функции peaks, определенной в файле peaks.m и содержащий 20 линий;

contour3(peaks,20) строит трехмерный контурный график той же функции (Рис. 6). Цвет и стиль линии можно задать с помощью спецификации формата.

Рис. 6

1.7.3. Цветовые изображения Функция pcolor(z) строит двухмерное изображение матрицы z,

трансформируя значения матрицы z(i,j) в индексы цветовой карты (colormap). Цветовая карта представляет собой матрицу, состоящую из трех колонок, определяющих интенсивность трех компонентов цветного изображения: красной, зеленой и синей. Изменить цветовую карту можно с помощью функции colormap (help color выводит на экран имеющиеся цветовые карты и функции, позволяющие их генерировать). Функции генерации цветовых карт имеют один параметр, который определяет число строк результирующей карты. По умолчанию этот параметр равен 64.

Зачастую полезно совмещать два изображения, контурное и цветовое, для лучшего восприятия. Для устранения сетчатого поля на цветовом изображении используется команда shading flat.

colormap(hot) pcolor(peaks) shading flat hold on contour(peaks,20,’k’) hold of

В этом примере используется встроенная функция peaks. Функция image работает подобно pcolor, но применяется для

изображения сложной графики, фотографий, в то время как pcolor используется для визуализации более абстрактных математических объектов.

1.7.4. Построение поверхностей Функции mesh, surf очень удобны для просмотра матриц, размер

которых слишком велик для отображения на экране в виде таблиц или графиков функций двух переменных.

Чтобы построить график функции двух переменных z = f(x,y), вначале необходимо из векторов x и y сформировать матрицы X и Y, состоящие из повторяющихся соответственно строк и столбцов и покрывающих область определения функции. Для формирования матриц X, Y из векторов x, y используется функция meshgrid.

Построим график функции sin(r)/r или sinc (Рис. 5):

Page 24: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

47 48

x=-8:0.5:8; y=x; [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; mesh(Z)

Рис. 5

Переменная eps необходима здесь для предотвращения деления на ноль. Матрица Z будет содержать высоты точек поверхности над плоскостью XOY и одновременно определять цвет элемента поверхности.

Задав цветовую карту C в качестве второго аргумента функций mesh(Z,C) и surf(Z,C), можно определить цвет поверхности независимо от

данных. Если элементы матрицы C равны NaN (Not a Namber), то соот-ветствующие точки поверхности не отображаются. Таким образом, в определенных местах можно вырезать участки поверхности, т.е. сделать их невидимыми (Рис. 6).

p=peaks; p(30:40,20:30)=nan*p(30:40,20:30); mesh(peaks,p);

Рис. 6 MATLAB предоставляет несколько комбинированных функций

построения поверхностей: • surfc комбинирует функции surf и contour, помещая

контурный рисунок поверхности в плоскости Z=0; •meshc комбинирует функции mesh и contour, помещая

контурный рисунок поверхности в плоскости Z=0

Page 25: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

49 50

• meshz - строит поверхность, отмечая штриховкой (параллельной оси Z) область отрицательных данных (Рис. 7);

Рис. 7

• surfl - строит подсвеченную поверхность. Позволяет определить положение источника света, используемого при вычислении теней поверхности. Положение источника света задается в сферических координатах. Наилучший эффект достигается при отключении построения сетки линий уровня.

surfl(peaks(200),[-10 50])

colormap(gray) shading flat

Результат построения подсвеченной поверхности приведен на рис. 1

Page 26: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

51 52

2. Описание программы динамического моделирования SIMULINK

2.1. Назначение программы SIMULINK представляет собой расширение пакета MATLAB и

предназначен для моделирования динамических систем, таких как системы радиотехнического назначения, регистрации и обработки данных, управления и т.д. Системы могут быть непрерывными, дискретными или смешанными. Работа с SIMULINK состоит из трех фаз: создание модели, отладка и проведение экспериментов с моделью.

SIMULINK запускается из окна интерпретатора команд MATLAB набором команды simulink. После загрузки появляется окно, называемое Block Diagram. Оно предоставляет пользователю интерфейс для создания и моделирования динамических систем, в дальнейшем моделей, и содержит библиотеки блоков, представленных в виде пиктограмм .

Стандартная библиотека блоков организована в виде нескольких подсистем, группирующих блоки в соответствии с их назначением. Чтобы открыть необходимую библиотеку, нужно дважды нажать левую клавишу мыши на ее пиктограмме. Библиотека Sources, например, содержит блоки генерации сигналов различных форм. Можно также создавать библиотеку собственных блоков и использовать ее наравне со встроенными библиотеками.

Модель представляет собой совокупность блоков, соединенных линиями передачи данных. Манипулируя компонентами библиотек только с помощью мыши, можно строить модели любой сложности. Копирование блоков в модель допускается как со встроенных библиотек, так и с любых других библиотек или моделей. После создания и отладки модели

проводить моделирование возможно как с помощью команд меню программы, так и из командной строки интерпретатора MATLAB.

В первом случае моделирование проводится в режиме реального времени, т.е. в процессе моделирования можно наблюдать за поведением системы с помощью блоков графического вывода. Во втором случае моделирование происходит без отображения окна модели на экране и существенно повышает производительность работы. Выделяются три уровня работы:

1) Создание, отладка и работа с моделью в интерактивном режиме, используя команды меню и просмотр результатов с помощью блока графического вывода (Scope). Этот уровень наиболее полезен при создании и отладке модели.

2) Запуск (предварительно созданной и отлаженной) модели на выполнение из командной строки интерпретатора команд при помощи специальных функций. Результаты записываются в оперативную память и доступны графическим средствам просмотра MATLAB.

3) Создание моделей путем набора в текстовом редакторе программы, состоящей из специальных функций и операторов. Такого рода программа называется S-функцией, работа с которой мало отличается от работы с обычными M-функциями.

Page 27: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

53 54

2.2. Oписание команд меню Меню программы SIMULINK включает следующие пункты: File,

Clipboard, Edit, Options, Simulation, Style. Окно, открываемое по команде New (рабочее окно, в котором можно создавать и редактировать модель, либо новые библиотеки блоков), ничем не отличается от окна Block Diagram и содержит те же пункты меню.

Меню File:

New... Ctrl+N Open... Ctrl+O Close Ctrl+W Save Ctrl+S Save As... Print... Ctrl+P Printer Setup... Exit Ctrl+Q

New создает новую модель. Open... открывает модель для редактирования. Close закрывает модель и удаляет ее из оперативной памяти. Save записывает модель в файл. Save As... вызывает диалоговое окно для сохранения модели под

новым именем. Print... печатает диаграмму блоков модели. Printer Setup... позволяет выполнить настройку принтера. Exit завершает работу с программой.

Меню Clipboard

Metafile Bitmap

Metafile копирует графическое изображение модели в буфер “clipboard” в формате Windows Metafile (расширение файлов WMF).

Bitmap копирует графическое изображение модели в буфер “clipboard” в формате Windows Bitmap (расширение файлов BMP).

Меню Edit:

Cut Ctrl-X Copy Ctrl-C Paste Ctrl-V Clear Select All

Пункты Cut, Copy, Paste позволяют создавать либо редактировать модель, используя буфер “clipboard”.

Clear удаляет выделенный объект. Select All выделяет все объекты в активном окне.

Меню Options:

Group Ctrl+G Ungroup Ctrl+U Mask... Ctrl+M Unmask Flip Horizontal Ctrl+F Rotate Ctrl+R

Group - группирует выделенные блоки вместе с созданием новой их

подсистемы. Ungroup снимает группировку. Mask... задает маску. Применяется при создании новых блоков либо

для модификации иконки блока и диалогового окна. Unmask снимает маску. Flip Horisontal поворачивает выделенные блоки на 180 градусов.

Page 28: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

55 56

Rotate поворачивает выделенные блоки на 90 градусов.

Меню Simulation:

Start Ctrl+T Restart Pause Parameters...

Start начинает моделирование системы. После запуска меняется на Stop.

Restart начинает моделирование прежней системы при смене его параметров .

Pause останавливает моделирование. После остановки сменяется на Continue.

Parameters открывает окно диалога для задания параметров модели.

Меню Style:

Drop Shadows Orientation Title Font Foreground Color Background Color Screen Color

Drop Shadows включает и выключает прорисовку теней выделенных блоков.

Orientation задает ориентацию выделенных блоков. Title выбирает позицию и стиль имени выделенного блока. Font позволяет выбрать шрифт. Foreground Color задает цвет выделенных блоков. Background Color задает цвет фона выделенных блоков. Screen Color позволяет выбрать цвет экрана.

2.3. Манипуляция объектами Объектом в окне построения модели называется любое графическое

изображение, будь то блок или сегмент линии. В зависимости от выполняемого действия курсор на экране принимает различные формы, что позволяет упростить создание сложных графических схем.

Формы курсора (указателя мыши): • готовность к следующему действию • перемещение блока или сегмента линии • перемещение точки соединения двух сегментов линии

• рисование линии • изменение размеров блоков • перемещение ограниченного сектора окна в другое место

• двойное нажатие левой кнопки мыши на блоке (перед открытием блока)

2.3.1. Выделение объектов Для выделения объекта нужно подвести указатель мыши к объекту и

нажать левую кнопку мыши. Выделенный объект помечается по углам черными квадратиками. Если требуется выделить более одного объекта, то одновременно нажимаются обе кнопки мыши поочередно для каждого объекта. Ту же операцию можно выполнить, если нажать клавишу Shift и, не отпуская ее, выделить объекты нажатием левой кнопки мыши. Для выделения всех объектов лучше всего применить команду Select All из меню Edit.

Если выделяемые объекты можно обвести замкнутым прямоугольником, то используется альтернативный способ выделения. Для этого указатель мыши надо поместить в один угол воображаемого прямоугольника, нажать левую кнопку мыши и, удерживая ее, переместить указатель мыши в противоположный угол, затем отпустить кнопку. Выделенная область будет очерчена штриховой линией.

Page 29: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

57 58

2.3.2. Манипулирование блоками Манипулирование блоками включает в себя такие операции, как

копирование, перемещение, удаление, изменение размеров и положения на экране, задание имени блока и его параметров. Переместить и скопировать блок или группу выделенных блоков можно с помощью мыши или используя команды Cut, Copy, Paste меню Edit.

С помощью мыши переместить блок можно следующим образом: поместить указатель мыши на блок, нажать левую кнопку мыши и, не отпуская ее, переместить блок на новое место. При этом, если блок перемещается в другое окно, то он копируется. Для выполнения копирования в пределах одного окна необходимо использовать правую кнопку мыши либо при копировании нажать клавишу Ctrl. Из библиотек блоки всегда копируются. При перемещении блоков линии, соединяющие их, перемещаются вслед за ними.

Удалить один или более выделенных блоков можно с помощью клавиши Del, либо команд Cut, Clear меню Edit.

Процедура изменения размеров блоков такая же как и процедура изменения размеров окон Windows. Для этого необходимо поместить указатель мыши на угол блока, нажать левую кнопку и переместить указатель на требуемую величину, не отпуская левую кнопку мыши. Минимальный размер блока 5 5 пикселей, максимальный - размер окна. По умолчанию поток информации проходит блок слева направо, т. е. входной порт блока изображается слева, выходной - справа. Изменить ориентацию блока и направление передачи данных можно с помощью команд меню Style либо пунктов Flip Horizontal и Rotate меню Options.

2.3.3. Имена блоков Все блоки должны иметь уникальные в пределах окна имена. Для

изменения или редактирования имени блока необходимо вначале выделить его с помощью мыши. Если вводится уже существующее имя, то оно автоматически возвращается к предыдущему имени по окончании редактирования или ввода. При копировании блока в пределах того же окна к его имени автоматически добавляется номер копии. Позиционирование имени по отношению к блоку задается с помощью команд меню Style.

Для того чтобы открыть блок или библиотеку, надо дважды нажать левую кнопку мыши на пиктограмме блока либо на его имени. При этом для большинства блоков появляется диалоговое окно с его параметрами.

Диалоговое окно закрывается при нажатии кнопки OK. При нажатии кнопки Cansel окно закрывается без сохранения параметров.

2.3.4. Манипулирование линиями Линии используются для соединения выходов одних блоков со

входами других и отображают направление передачи информации. Линии могут состоять из произвольного числа сегментов. К выходу блока можно присоединить сразу несколько линий, но ко входу может подходить только одна линия. Линии проводятся независимо от входа к выходу или наоборот с помощью мыши. Для этого необходимо поместить указатель мыши на входной (выходной) порт блока, нажать левую кнопку мыши и, удерживая ее, провести линию ко входу (выходу) другого блока.

Если линия не доводится до порта блока, то в конце линии появляется черный квадратик, означающий выходной порт линии. От него можно провести сегмент линии в любом направлении.

Для удаления линии или ее сегмента нужно линию выделить и нажать клавишу Del, либо воспользоваться командами Clear, Cut меню Edit. При перемещении вверх-вниз линия отклоняется дискретно на 45 градусов. При необходимости провести линию под любым углом нужно держать нажатой клавишу Shift или обе кнопки мыши.

Если требуется разделить линию на несколько сегментов, то надо подвести указатель мыши к требуемой точке, нажать обе кнопки и, не отпуская их, переместить мышь в требуемом направлении. Эту операцию можно проделать, удерживая нажатой клавишу Shift и перемещая линию, нажав только левую кнопку мыши.

Можно провести линию не только от выходного порта блока, но и от любой точки линии, соединяющей блоки, если операцию рисования линии производить при нажатой правой кнопки мыши или используя клавишу Ctrl.

2.4. Mоделирование Моделирование динамических систем зачастую требует численного

интегрирования дифференциальных уравнений, описывающих поведение модели. К сожалению, для всех типов дифференциальных уравнений нет единого алгоритма, дающего максимальную точность и эффективность. В

Page 30: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

59 60

зависимости от типа модели и требуемой точности вычислений можно выбрать следующие методы:

• Euler. Используется только для проверки результатов. Дает высокую скорость;

• Runge-Kutta 3, Runge-Kutta 5. Используются для высоко нелинейных и дискретных систем; дает высокую точность, но скорость работы невелика;

• Adams. Предназначен для нелинейных систем с медленно изменяющимися параметрами;

• Gear. Предназначен для нелинейных систем с быстроизменяющимися входными параметрами;

• Linsim. Используется для линейных моделей или слабо дискретных систем и имеет высокую скорость.

После создания модели запустить процесс моделирования можно как из командной строки интерпретатора команд MATLAB, так и с помощью команд меню Simulation. При работе с меню вначале необходимо задать параметры моделирования (пункт Parameters меню Simulation), включающие выбор метода численного интегрирования, временной интервал моделирования, минимальную и максимальную ширину шага, точность вычислений и выходные переменные [t, x ,y] (текущее время и рабочая траектория).

В полях ввода (Рис. 7) можно вводить не только численные значения, но и любые допустимые выражения языка MATLAB, например, переменные tstart, tfinal, minstep, maxstep, tol, заранее определенные в интерпретаторе команд.

Рис. 7

Задание минимальной и максимальной ширины шага (Min Step Size, Max Step Size), а также точности (Tolerance) требуется для получения наибольшей эффективности вычислений. Обычно минимальная ширина шага выбирается достаточно малой (1е-6), однако при дальнейшем приближении ее к нулю, особенно для дискретных систем, объем вычислений непомерно возрастает. Для некоторых методов численного моделирования (Adams и Gear) величина минимальной ширины шага не влияет на точность результатов, поэтому рекомендуется полагать ее равной максимальной ширине шага. Иногда результаты моделирования являются точными, но недостаточно хорошими для построения графиков (сильная изрезанность и нежелаемая модуляция траектории). В этом случае для получения более сглаженных результатов необходимо ограничить максимальную ширину шага. Например, это требуется при использовании метода численного интегрирования Linsim для моделирования полностью линейных динамических систем, т. к. он не дает потерю точности при любой, произвольно большой ширине шага.

Page 31: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

61 62

Во время работы с моделью можно: - изменять параметры блоков и некоторые параметры модели; - в любой момент прервать моделирование, а затем продолжить его с

прерванного места (пункты меню Pause, Continue); - менять алгоритм моделирования; - просматривать рабочие траектории модели в любой точке с

помощью "плавающего" осциллографа. Для этого необходимо выделить требуемую линию передачи данных или ее сегмент и открыть новый блок Scope.

Добавление или удаление линий и блоков, изменение большинства параметров блоков и параметров моделирования ведет к остановке модели. Для продолжения работы с измененными параметрами служит команда меню Restart.

Из командной строки MATLAB запустить процесс моделирования можно с помощью функций, одноименных с названиями соответствующих методов численного интегрирования

[t, x, y] = linsim( 'model', [ tstart, tfinal ], x0, [ tol, ………... minstep,

maxstep ] ),

где 'model' - имя модели; t,x,y - выходные переменные, соответственно текущее время, состояние и выходная траектория; tstart - начало моделирования; tfinal - время окончания моделирования; minstep, maxstep - минимальный и максимальный шаги численного интегрирования; х0 - вектор исходных параметров и состояний блоков модели. Если вектор x0 - пустой, то запуск производится с первоначальными параметрами. Для запуска отлаженной модели применяется укороченная запись

[t, x, y] = linsim( 'model', tfinal ) .

Просмотреть выходные траектории модели можно тремя способами: • С помощью блока графического вывода (Рис. 8).

Step Fcn T

Рис. 8

Выходную информацию можно просматривать непосредственно в процессе моделирования.

• Посредством использования графических средств представления информации языка MATLAB (Рис. 9). Для этого необходимо вначале считать данные в переменную с помощью выходного порта,

Step Fcn

Рис. 9 затем построить график функцией plot.

[t,x,y] = linsim(‘model’, tfinal) plot(t,y) .

• с помощью блока To Workspaсe (Рис. 10).

Page 32: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

63 64

Step Fcn

1s+1

Transfer Fcn

yTo Workspace

tTo Workspace1Clock

Рис. 10

Переменная, определенная в этом блоке, становиться доступной после окончания моделирования. Временной вектор можно получить с помощь блока Clock, а также повторно запустив ту же модель с командной строки

t = linsim(‘model’, tfinal) plot(t,y) .

2.5. Пример создания модели 1) В окне интерпретатора команд MATLAB наберите команду

simulink. После загрузки появляется окно Block Diagram (Рис. 11), содержащее пиктограммы библиотек блоков.

С помощью команд New и Open можно соответственно создать новую модель или открыть уже существующую.

2) Расположите окно библиотек блоков и рабочее окно так, чтобы они не перекрывались. Тогда при копировании блоков не придется переключаться между окнами.

Рис. 11

3) Выберите библиотеку Sourses и откройте ее двойным нажатием левой кнопки мыши. Выделите блок Signal Gen и скопируйте его в рабочее окно. Выделенный блок помечается черными квадратиками по углам, а входные и выходные порты рисуются в виде стрелок.

4) Откройте библиотеку Sinks, скопируйте Scope (осциллограф) и поместите его справа от Signal Gen.

5) Соедините линией выход Signal Gen со входом Scope. Когда линия начерчена, то порты исчезают и появляется стрелка на конце линии, указывающая направление передачи информации (Рис. 12).

Page 33: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

65 66

SignalGenerator

Scope

Рис. 12

6) Откройте блок Signal Gen и задайте его параметры. Для генерации синусоиды нажмите кнопку Sine и в строке ввода frequency наберите 6. Нажмите OK для сохранения параметров и закрытия окна.

7) Откройте Scope и задайте в строках ввода vertical range - 3, horizontal range - 10. Это окно нужно оставить на экране в удобном месте, так как в нем будет отображаться выходная информация.

8) Задайте параметры моделирования модели, выбрав пункт Parameters меню Simulation. Введите Max Step Sire равным 0.01 и нажмите OK.

9) Запустите процесс моделирования командой Start. В графическом окне блока Scope появится синусоида, отображающая рабочую траекторию модели (Рис. 13).

Останавливается моделирование командой Stop, появляющейся взамен команды Start.

Таким образом, мы получили рабочую модель, которую можно записать на диск как M-файл. Как и все M-файлы, запустить модель можно из MATLAB простым набором имени файла.

Рис. 13

Немного усложним модель, добавив усилитель и мультиплексор (Рис. 14).

Мультиплексор смешивает входные сигналы, и на его выходе будет получаться комплексный сигнал, т.е. в каждый момент времени будет передаваться несколько выходных значений. Соединительные линии и большинство блоков позволяют передавать такой комплексный сигнал. В этом случае в графическом окне осциллографа (Scope) будут одновременно

Page 34: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

67 68

SignalGenerator

Mux

Mux Scope

2

Gain

Рис. 14

отображаться все траектории смешанного сигнала (Рис. 8). Блоки To File и To Workspace записывают такие данные в виде матрицы, где каждому временному шагу соответствует строка выходных значений, т.е. для одиночной траектории будет получаться вектор-столбец.

2.6. Библиотека встроенных блоков Библиотека встроенных блоков разбита на 7 подсистем, которые

соответственно включают: - Sourses - генераторы сигналов: • Clock - генератор системного времени; • Constant - генератор постоянной величины; • From File - считывает данные из файла; • From Workspase - считывает данные из оператив-ной памяти; •Signal Generator - генератор сигналов различных форм; • Sine Wave - генератор синусоидального сигнала; • Step Fcn - генератор функции скачка. Переключает выход

из одного произвольного уровня на другой при достижении определенного момента времени;

•White Noise - генератор белого шума;

Рис. 8

- Sinks - приемники сигналов: • Scope - (осциллограф) отображает сигналы на экране в процессе

моделирования; • To File - записывает данные в файл; • To Workspace - записывает данные в оперативную память;

Page 35: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

69 70

- Discrete - дискретные блоки: • Discrete State-Space - дискретная функция пространственных

состояний, представленная системой уравнений: x(n + 1) = Ax(n) + Bu(n)

y(n) = Cx(n) + Du(n)

• Discrete Transfer Fcn - дискретная функция преобразования, представленная степенным рядом;

• Discrete Zero-Pole - дискретная функция нулей и полюсов

H z K Z zP z

K z Z z Z z Z nz P z P z P n

( ) ( )( )

( ( ))( ( )) ( ( ))( ( ))( ( )) ( ( ))

= =− − −− − −

1 21 2

K

K,

где Z - вектор нулей, P - вектор полюсов, K - множитель;

• Filter - фильтры IIR и FIR типов; • Unit Delay - задержка сигнала на один тактовый период.

- Linear - линейные блоки: • Derivative - вычисление производной по времени; • Gain - усилитель. Умножает сигнал на произвольное

число; • Integrator - интегрирование сигнала; • State-Space - функция пространственных состо-яний,

представленная системой уравнений: &x Ax Buy Cx Du= += +

;

• Sum - сумматор; • Transfer Fcn - линейная функция преобразования,

представленная степенным рядом; • Zero-Pole - функция нулей и полюсов

H s K Z sP s

K s Z s Z s Z ns P s P s P n

( ) ( )( )

( ( ))( ( )) ( ( ))( ( ))( ( )) ( ( ))

= =− − −− − −

1 21 2

K

K ;

- Nonlinear - нелинейные блоки: • Abs - вычисление абсолютного значения;

• Backlash - модель гистерезиса. Применяется в том случае, когда входной сигнал не полностью определяет сигнал на выходе, но известно, что выходной сигнал не выходит за известные пределы;

• Dead Zone - генерирует мертвое время. В течение этого времени на выходе поддерживается нулевой уровень;

• Fcn - произвольная функция входа; • Look Up Table - заменяет сигнал, совпадающий со значениями из

вектора входных данных на значения из вектора выходных данных. Для значений, попадающих между элементами вектора входных данных, применяется линейная интерполяция;

• MATLAB Fcn - вызов М-функции; • Product - произведение входных сигналов; • Rate Limiter - ограничивает скорость изменения сигнала; • Relay - переключает выход между двумя значениями; • Saturation - ограничивает нарастание амплитуды сигнала

(насыщение); • S-function - вызов S-функции; • Switch - переключает выход с одного входа на другой в

соответствии с управляющим сигналом; • Transport Delay - задержка сигнала.

- Connections - блоки соединения: • Inport - входной порт; • Outport - выходной порт; • Mux - мультиплексор; • Demux - демультиплексор.

- Extras - расширенная библиотека блоков, включающая как

вышеупомянутые блоки, так и блоки специального назначения. Включает также демонстрационные и обучающие примеры.

Библиотека блоков может быть изменена путем добавления новых блоков в подсистему и последующим сохранением результирующей системы. Возможно также создать новую библиотеку блоков. Для этого нужно скопировать необходимые блоки из других библиотек в рабочее окно и сохранить его под своим именем.

Page 36: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

71 72

Введение .........................................Ошибка! Закладка не определена.

1. Описание пакета MATLAB для WindowsОшибка! Закладка не определена. 1.1. Назначение MATLABОшибка! Закладка не определена. 1.2. Описание пакета ........Ошибка! Закладка не определена.

1.2.1. Описание пунктов меню интерпретатораОшибка! Закладка не определена. 1.2.2. Вывод графической информацииОшибка! Закладка не определена.

1.3. Описание языка MATLABОшибка! Закладка не определена. 1.3.1. Перечень символов и знаковОшибка! Закладка не определена. 1.3.2. Описание применения символов и знаковОшибка! Закладка не определена. 1.3.3. Операции ........................Ошибка! Закладка не определена. 1.3.4. Данные ............................Ошибка! Закладка не определена. 1.3.5. Переменные и выраженияОшибка! Закладка не определена. 1.3.6. Условные операторы и операторы циклаОшибка! Закладка не определена. 1.3.7. Операторы управления потоком ввода-вывода информацииОшибка! Закладка не определена.

1.4. Поддержка команд операционной системы и запуск внешних программ .................Ошибка! Закладка не определена. 1.5. Функции .....................Ошибка! Закладка не определена.

1.5.1. Элементарные математические функцииОшибка! Закладка не определена. 1.5.2. Специальные математические функцииОшибка! Закладка не определена. 1.5.3. Элементарные матричные функцииОшибка! Закладка не определена. 1.5.4. Специальные матричные функцииОшибка! Закладка не определена. 1.5.5. Матричная декомпозиция и факторизацияОшибка! Закладка не определена. 1.5.6. Анализ данных ...............Ошибка! Закладка не определена. 1.5.7. Действия с полиномами Ошибка! Закладка не определена. 1.5.8. Обработка сигналов .......Ошибка! Закладка не определена. 1.5.9. Функции от функций .....Ошибка! Закладка не определена.

1.6. Двухмерная графика .Ошибка! Закладка не определена. 1.6.1. Элементарные функции.Ошибка! Закладка не определена. 1.6.2. Изображение матриц и комплексных величинОшибка! Закладка не определена. 1.6.3. Ввод данных ...................Ошибка! Закладка не определена. 1.6.4. Специальные функции построения графиковОшибка! Закладка не определена.

1.7. Трехмерная графика..Ошибка! Закладка не определена.

1.7.1. Изображение линий .......Ошибка! Закладка не определена. 1.7.2. Контурные графики........Ошибка! Закладка не определена. 1.7.3. Цветовые изображения ..Ошибка! Закладка не определена. 1.7.4. Построение поверхностейОшибка! Закладка не определена.

2. Описание программы динамического моделирования SIMULINK ......................................Ошибка! Закладка не определена.

2.1. Назначение программыОшибка! Закладка не определена. 2.2. Oписание команд менюОшибка! Закладка не определена. 2.3. Манипуляция объектамиОшибка! Закладка не определена.

2.3.1. Выделение объектов ......Ошибка! Закладка не определена. 2.3.2. Манипулирование блокамиОшибка! Закладка не определена. 2.3.3. Имена блоков ..................Ошибка! Закладка не определена. 2.3.4. Манипулирование линиямиОшибка! Закладка не определена.

2.4. Mоделирование ......... Ошибка! Закладка не определена. 2.5. Пример создания моделиОшибка! Закладка не определена. 2.6. Библиотека встроенных блоковОшибка! Закладка не определена.

Page 37: MATLAB и SIMULINK для WINDOWS - rfe-mm.narod.rurfe-mm.narod.ru/materials/Apanasovich_MM_Matlab_Simulink.pdf · Изложен язык программирования matlab.

73 74

Учебное издание

Апанасович Владимир Владимирович Скакун Виктор Васильевич

MATLAB и SIMULINK для WINDOWS

Руководство пользователя ПЭВМ для студентов факультета радиофизики и электроники

Ответственный за выпуск В. В. Скакун