Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Моделирование измерительных задач в среде MATLAB + Simulink. Учебное пособие
.pdf
ТЕОРЕТИЧЕСКИЕ ОСНОВЫ MATLAB + SIMULINK
ца A в этом случае должна быть квадратной и невырожденной.
Если B – матрица, то решается несколько систем уравнений
с разными правыми частями, представленными столбцами ма
трицы B.
• Правое деление матриц «/». Эта операция соответствует
решению системы уравнений вида X × A = B. В этом случае
–1
матрица B умножается на A
• Возведение матрицы в степень «^». Операция X^P возво
справа.
дит квадратную матрицу X в скалярную степень P.
• Поэлементное умножение массивов «.*». Операция C=A.*B
выполняет поэлементное умножение каждого элемента массива
А на соответствующий ему элемент массива В: C(i,j)=A(i,j)*B(i,j).
Массивы должны иметь одинаковые размеры.
Аналогично определяются следующие поэлементные опера
ции:
• Поэлементное левое деление C=A.\B:
C(m,n)=B(m,n)/A(m,n)
• Поэлементное правое деление C=A./B:
C(m,n)=A(m,n)/B(m,n)
• Поэлементное возведение в степень C=A.^B:
C(m,n)=A(m,n)^B(m,n)
• Оператор «апостроф» – вычисление эрмитово-сопряжен
ной матрицы.
• Оператор «точка + апостроф» – вычисление транспониро
ванной матрицы.
В табл. 1 приведен перечень элементарных функций.
Таблица 1
Элементарные функции
Функция Обозначение
Экспонента exp
Натуральный логарифм log
Десятичный логарифм log10
Квадратный корень sqrt
Синус sin
21

МОДУЛЬ 1
Окончание табл. 1
Функция Обозначение
Косинус cos
Тангенс tan
Арксинус asin
Арккосинус acos
Арктангенс atan
Гиперболический синус sinh
Гиперболический косинус cosh
Гиперболический тангенс tanh
Гиперболический арксинус asinh
Гиперболический арккосинус acosh
Гиперболический арктангенс atanh
Аргументом функций могут быть массивы произвольной размерности, включая и комплексные массивы. Результат имеет ту
же размерность, что и аргумент. Все функций применяются к
каждому элементу массива.
Функция atan(x) для действительного аргумента вычис
-
ляет главное значение, лежащее в интервале (–π/2, π/2).
В противоположность ей функция atan2(y, x) вычисляет значение арктангенса отношения y/x с учетом знаков числителя
и знаменателя дроби. Значения функции лежат в интервале
(–π, π). Эта функция применяется и для вычисления аргумента
комплексного числа. Таким образом, в MATLAB, в отличие
от общепринятого, аргумент комплексного числа находится
в интервале (–π, π).
Функции комплексного аргумента
При работе с комплексными числами используются функ
ции:
– abs(z) – вычисляет массив модулей комплексных элемен
тов;
22
-
-

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ MATLAB + SIMULINK
– angle(z) – вычисляет массив аргументов комплексных эле-
ментов. Функция angle(x+yi) аналогична функции atan2(y,x);
– imag(z) – вычисляет массив мнимых частей комплексных
элементов;
– real(z) – вычисляет массив реальных частей комплексных
элементов;
– complex(A,B) – создает массив комплексных чисел по мас
-
сиву вещественных частей А и мнимых частей В. Массивы
должны иметь одинаковые размеры;
– conj(z) – выполняет операцию комплексного сопряжения.
Функции округления и знака (при округлении комплексных
чисел перечисленные операции применяются отдельно к веще
-
ственным и мнимым частям):
– fix – округляет элементы аргумента в сторону нуля;
– floor – округляет элементы аргумента в сторону минус бес
-
конечности;
– ceil – округляет элементы аргумента в сторону плюс бес
-
конечности;
– round – округляет элементы аргумента до ближайшего це
-
лого;
– sign – формирует массив того же размера, что и аргумент,
в котором вещественные положительные числа заменяются еди
ницей, вещественные отрицательные числа заменяются минус
единицей, нулевые – нулями. Комплексные числа заменяются
комплексными числами, имеющими тот же аргумент, но еди
ничный модуль.
Основы программирования в MATLAB
1. Типы m-файлов.
Работа из командной строки затрудняется, если требуется
вводить много команд и часто их изменять. Самым удобным
способом выполнения и изменения множества команд являет
ся использование m-файлов. Для работы с ними предназначен
редактор m-файлов. Вызов редактора осуществляется из меню
File, пункт New, подпункт m-file.
23

МОДУЛЬ 1
В MATLAB m-файлы бывают двух типов: файлы-программы (Script m-Files), содержащие последовательности команд,
и файлы-функции (Function m-Files), в которых описываются
функции, определяемые пользователем.
Созданная файл-программа фактически становится коман
дой, которую «понимает» MATLAB. Вызов m-файла из командной строки или из другого m-файла производится по его имени.
Все переменные, объявленные в файл-программе, становятся
после ее выполнения доступными в рабочей среде, и их можно
использовать как в командах, выполняемых из командной стро
ки, так и в других файл-программах.
Для использования численных методов и при программиро
вании собственных приложений в MATLAB необходимо составлять файл-функции, которые производят необходимые действия
с входными аргументами и возвращают результат в выходных
аргументах.
В первой строке файл-функции размещается заголовок
функции:
function[список выходных аргументов]=f_name[список вход
ных аргументов].
После заголовка следует тело функции. В теле функции мо
гут быть объявлены новые переменные. Это – локальные переменные, доступные только в теле функции и не попадающие в
рабочее пространство MATLAB.
Рассмотрим пример. Функция okr вычисляет координаты
точки окружности единичного радиуса в зависимости от поляр
ного угла:
function [xt,yt]=okr(t)
xt=sin(t); yt=cos(t);
Сохраним этот файл под именем okr.m.
Далее в командном окне вводим команды:
=[0:0.1:2*pi]; [x,y]=okr();
plot(x,y)
В результате в графическом окне будет изображена окруж
ность единичного радиуса.
24

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ MATLAB + SIMULINK
2. Основные операторы, задающие последовательность вы-
полнения команд.
Операторы цикла предназначены для выполнения повторя
ющихся действий. Цикл for используется для выполнения заданного числа повторяющихся действий, а цикл while – для
действий, число повторений которых не задано, но известно ус
ловие продолжения цикла.
Цикл for:
for count = start:step:nal
команды MATLAB
end
Здесь count – переменная цикла, start, final, step – ее на
чальное и конечное значения, а также приращение переменной
при каждом шаге цикла. Переменная цикла может принимать
вещественные значения любого знака. Цикл заканчивается,
как только значение переменной цикла становится больше зна
чения final для положительного приращения step или меньше –
для отрицательного значения step.
Рассмотрим простой пример:
for s=10:-1:1
s
end
В командном окне в результате работы цикла выводятся зна
чения от 10 до 1.
Цикл while:
while условие цикла
команды MATLAB
end
Для задания условия цикла используются операции отноше
ния (табл. 2).
Таблица 2
Значение операций отношения
Операция Обозначение
Равенство ==
Меньше <
25

МОДУЛЬ 1
Окончание табл. 2
Операция Обозначение
Меньше или равно <=
Больше >
Больше или равно >=
Не равно ~=
Задание более сложных условий производится с помощью
логических операторов (табл. 3).
Таблица 3
Значение логических операторов
Оператор Условие
Логическое
«и»
Логическое
«или»
x < 3 и k = 4
x = 1, 2
Запись в
MATLAB
and (x<3,k==4)
or (x==1,
x==2)
Эквивалент-
ная запись
(x<3) &
(k==4)
(x==1) |
(x==2)
Отрицание
«не»
a ≠ 1.9
not (a==1.9) ~(a==1.9)
Пример:
n=0; k=1;
while k<=5
n=n+2*k-1, k=k+1;
end
В результате работы цикла на экран выводятся квадраты чи
сел от 1 до 5. Попутно продемонстрировано, что квадрат целого
числа k равен сумме нечетных чисел от первого до k-го вклю
чительно.
Операторы ветвления. Условный оператор if и оператор
переключения switch позволяют создавать гибкий разветвляю
щийся алгоритм выполнения команд.
Оператор if:
if условие
26
-
-
-

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ MATLAB + SIMULINK
команды MATLAB
elseif условие
команды MATLAB
else
команды MATLAB
end
Например, создадим файл-функцию myfun(x), которая для
положительного аргумента возвращает значение 1, для отрица
тельного –1, а для нулевого 0:
function y=myfun(x)
if x>0
y=1;
elseif x==0
y=0;
else
y=-1;
end
Далее в командной строке введем a=myfun(5), b=myfun(0),
c=myfun(-5).
Оператор swith позволяет по значению контрольной перемен
ной s управлять выполнением блоков программы:
switch s
case значение1
команды MATLAB
case значение2
команды MATLAB
…
otherwise
команды MATLAB
end
Пример:
switch s
case -1
disp(‘s=-1’)
case 1
disp(‘s=1’)
-
-
27

МОДУЛЬ 1
otherwise
disp(‘|s|<>1’)
end
1.2. Графические возможности MATLAB.
Высокоуровневая и низкоуровневая графика
MATLAB обладает широким спектром возможностей по ото
бражению функций одной, двух и трех переменных, визуализации данных. Высокоуровневая графика позволяет пользователю
получать результаты в графическом виде, прикладывая мини
мум усилий. Работу, связанную с масштабированием осей, подбором цветов и т.д., MATLAB берет на себя. Оформление построенных графиков можно продолжить в интерактивном режиме,
используя инструменты графического окна. Другой подход –
низкоуровневая, или дескрипторная графика – заключается в
использовании объектно-ориентированного программирования.
При таком подходе изменяются свойства различных графиче
ских объектов (осей, линий и т. д.), что позволяет пользователю
разрабатывать собственные графические программы.
Построение двумерных графиков в декартовых
координатах
Для построения используется команда plot(X,Y).
Варианты аргументов команды:
• Если x и y – векторы одинаковой длины, то в отдельном
графическом окне строится сплошная линия y(x), например:
>> x=[1:10]; y=x+3;
>> plot(x,y)
При этом неважно, являются ли векторы строками или
столбцами. Например, один аргумент может быть вектор-стро
кой, другой – вектор-столбцом: plot(x,y’) даст тот же результат,
что и предыдущая команда.
В качестве аргументов можно использовать также выраже
ния и функции, например:
28

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ MATLAB + SIMULINK
>> plot(x,x+5)
>> plot(x,sin(x))
В последнем случае на графике выводится ломаная линия.
Для построения плавной кривой нужно выбрать большие раз
-
меры векторов x и y. Для построения графиков функции одной
переменной удобно использовать функцию linspace(x1,x2,n), ге
-
нерирующую на интервале (х1, х2) n точек. По умолчанию n
равно 100:
>>x=linspace(0,2*pi); plot(x,sin(x) – строит один период синусо
-
иды
>> plot(sin(x),cos(x)) – строит единичную окружность
• Один из аргументов – вектор, а второй – матрица. Длина
вектора должна быть равна числу столбцов или строк матрицы.
В этом случае в графическом окне изображаются данные для
каждой строки или столбца матрицы в зависимости от компо
нент вектора. Если матрица квадратная, то изображаются данные для столбцов:
>>m=[sin(x);cos(x)]
>>plot(x,m)
• Если оба аргумента являются матрицами одинакового раз
мера, то команда строит каждый столбец Y в зависимости от
соответствующего столбца X:
>>plot([x;sin(x)]’,[2*x;cos(x)]’)
Знак ’ (апостроф) означает операцию транспонирования ма
трицы. В данном случае строится прямая линия и окружность
(сравнить с plot([x;sin(x)],[2*x;cos(x)]).
• Команда с одним матричным аргументом с вещественны
ми элементами строит изображение столбцов в зависимости от
номера строки:
>>plot([1:3;2:4;3:5;4:6])
Если элементы матрицы комплексны, то команда plot(Y) эк
вивалентна команде plot(real(Y),imag(Y)):
>> m=[1:3]
>> n=[2:0.5:3]
>> y=m+i*n
>> plot(y)
29

МОДУЛЬ 1
При одновременном построении нескольких линий они изображаются разным цветом. По умолчанию цвет выбирается
циклически из таблицы (табл. 4).
Таблица 4
Значения цветов и символов
Цвет Тип символа Линия
b – синий . – точки - сплошная
g – зеленый o – кружки : – пунктирная
r – красный x – косые кресты
c – голубой + – плюсы
m – лиловый * – звездочки
y – желтый s – квадраты
w – белый d – ромбы
k – черный p – пятиугольники
h – шестиугольники
v,^,<,> – треугольники с
разной ориентацией вер-
шины
-. – штрихпунктирная
- - – прерывистая
Для выбора типа и цвета линии, а также маркеров (символов) отдельных точек используется команда с тремя параметрами plot(X,Y,S), где S – заключенная в апострофы строка
символов, которая может содержать по одному элементу из
каждого столбца таблицы. Однако все символы указывать не
-
обязательно:
>>x=linspace(1,10)
>>plot(x,log10(x),’r’) – построит линию красного цвета;
>>plot(x,log10(x),’ro’) – построит красные кружки;
>>plot(x,log10(x),’r+:’) – построит пунктирные линии с нане
-
сенными на них знаками +;
Команда plot(X1,Y1,S1, X2,Y2,S2, X3,Y3,S3, ...) строит на од
-
ном графике линии, описанные тройками Xi,Yi,Si:
>> plot(x,sin(x),’r.-’,x,cos(x),’b*-’).
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
