- •А.К. Ефремов интегрированная
- •Рекомендовано редсоветом мгту им. Н.Э. Баумана
- •Isbn 5-7038-2301-3 мгту им. Н.Э. Баумана, 2003
- •1. Интерфейс системЫ matlab
- •1.1. Программная группа matlab
- •1.2. Командное окно matlab
- •1.2.1. Главное меню
- •1.2.2. Панель инструментов
- •1.3. Настройка параметров рабочего пространства
- •1.4. Справочная система matlab
- •2. Работа в режиме прямых вычислений
- •3. Базовые объекты системы matlab
- •3.1. Способы формирования матриц и векторов
- •3.2. Матричные операции и функции
- •3.3. Решение линейных уравнений
- •3.4. Вычисление корней полиномов
- •3.5. Обработка данных
- •4. Графические средства системы matlab
- •4.1. Графические объекты на плоскости
- •4.1.1. Функция plot
- •4.1.2. Функции fplot и ezplot
- •4.1.3. Другие графические функции
- •4.1.5. Обработка данных
- •4.2. Построение трехмерных поверхностей и тел
- •4.2.1. Основные графические функции
- •4.2.2. Дополнительные возможности
- •5. Основы программирования в среде matlab
- •5.1. Общие положения
- •5.2. Примеры простых программ
- •Xlabel('sin(X)') % Надпись по оси х
- •Xlabel('X') % Надпись по оси абсцисс
- •5.3. Программа с использованием внешней функции
- •5.4. Дополнительные программы
- •5.4.1. Дифференцирование функций
- •Xlabel('Число элементов массивов')
- •Xlabel('Число элементов массивов')
- •5.4.2. Функции eval, feval
- •Xlabel(‘t’), ylabel(‘y, dy/dt’)
- •Xlabel(‘y’), ylabel(‘dy/dt’)
- •6. Символьные вычисления
- •6.1. Определение символьной переменной
- •6.2. Основные функции
- •6.3. Математический анализ
- •6.3.1. Функция limit – предел функции одной переменной
- •6.3.2. Функция diff – дифференцирование функции одной переменной
- •6.3.3. Функция int – интегрирование функции одной переменной
- •6.3.4. Функция symsum – суммирование членов рядов
- •6.3.5. Функция taylor – разложение функции в ряд Тэйлора
- •6.4. Символьное решение уравнений
- •6.4.1. Решение отдельных уравнений
- •6.4.2. Решение систем уравнений
- •6.4.3. Решение дифференциальных уравнений
- •7. Пакет моделирования динамических систем simulink
- •7.1. Рабочая среда Simulink
- •7.2. Представление динамической системы в виде структурной схемы
- •7.3. Основные приемы работы в среде Simulink
- •7.4. Модель с ветвлением соединений
- •7. 5. Интегрирование дифференциального уравнения
- •Список литературы
- •Оглавление
- •Приложение
- •Разделы справочной системы
- •Программирования и отладки программ
- •Графические средства matlab
- •Символьные вычисления (symbolic math toolbox)
Программирования и отладки программ
MATLAB как язык программирования |
|
script |
Внешний файл (программа-сценарий), содержащий последовательность операторов MATLAB. Обращение к такому файлу – путем набора его имени; script-файлы имеют расширение *.m, и поэтому их называют также m-файлами (M-file). См. также function, type, echo |
function |
Внешняя функция. Ее имя должно совпадать с именем соответствующего m-файла, содержащего тело этой функции (операторы и обращения к существующим функциям) и иметь расширение *.m. В первой строке текста m-файла должно быть синтаксическое определение новой функции. Например файл stat.m: function [mean,stdev] = stat(x) n = length(x); mean = sum(x) / n; stdev = sqrt(sum((x - mean).^2)/n); определяет новую функцию stat, вычисляющую математическое ожидание и дисперсию вектора. Все переменные внутри тела функции являются локальными. См. echo, global, script |
eval |
Выполнить оператор MATLAB, записанный как символьное выражение: eval(s). Оператор eval(s1,s2) сначала выполняет s1 и возвращает результат; если при этом возникла ошибка вычислений, то выполняется s2, что дает возможность отлаживать программу при альтернативных вариантах вызываемой функции. [X,Y,Z,...]=eval(s) – возвращает выходные параметры выражения, заданного строкой s. Входные строки для функции eval часто создают, объединяя строки и переменные внутри квадратных скобок. Например, программа генерирования «магических» матриц (M1...M12): for n = 1:12 eval(['M' num2str(n) ' = magic(n)']) end См. lasterr, feval |
feval |
Выполнить функцию через ее имя, заданное как строковая переменная: если F - строка-имя функции (определенной как m-файл), то оператор feval(F,x1,...,xn) возвращает значения этой функции при заданных значениях аргументов). Например, пусть F = 'foo', тогда feval(F,9.64) равносильно foo(9.64). feval обычно используют в функциях, которые предусматривают обращение к каким-либо другим функциям |
global |
Определение глобальных переменных, например global X Y Z определяет X, Y и Z как глобальные переменные (в перечислении переменных запятые не ставятся !). Функция MATLAB, определяемая через m-файл, обычно содержит собственные (локальные) переменные, недоступные для других функций, рабочего окна и m-файлов, не являющихся функциями. В то же время глобальные переменные доступны в пределах всего рабочего пространства. См. isglobal, clear, who |
nargchk |
Возвращает число входных аргументов |
lasterr |
Сообщение о последней ошибке, диагностируемой системой MATLAB, в виде строковой переменной. lasterr('') обнуляет функцию lasterr, в результате чего она возвращает пустую матрицу до возникновения очередной ошибки. Lasterr обычно используют в сочетании с двухаргументной формой функции eval: например, в конструкции eval('try','catch') аргумент 'catch' может анализировать строку lasterr для выяснения причины ошибки и соответствующей коррекции. См. eval, error |
Управление потоком данных |
|
if |
Условный оператор; его формат: IF переменная, операторы, END. Операторы выполняются, если вещественная часть переменной содержит только ненулевые элементы (0 - логическое false, т.е. ложь). Переменная обычно определяется через операции отношения (rop): expr rop expr, где expr - выражение; rop может быть ==, <, >, <=, >=, ~=. |
else |
Иначе (используется с if) |
elseif |
Иначе если (используется с if) |
end |
Конец действия операторов for, while и if |
for |
Счетчик цикла |
while |
Пока... (цикл) |
break |
Выход из цикла |
return |
Возврат к вызываемой функции |
error |
Вывод сообщения и завершение выполнения функции |
Организация диалога |
|
input |
Приглашение для ввода данных |
keyboard |
Активизация клавиатуры как script-файла |
menu |
Вызов пользовательского меню |
pause |
Пауза (ожидание команды пользователя) |
uimenu |
Создать пользовательское меню |
uicontrol |
Создание пользовательского управляющего интерфейса |
dbquit |
Выйти из режима отладки |
matlab\elmat - простейшие матрицы и матричные операции
Простейшие матрицы |
|
zeros(m,n) |
Создание матрицы с нулевыми элементами |
ones(m,n) |
Создание матрицы с единичными элементами |
eye(m,n) |
Создание единичной матрицы (с единичными элементами на главной диагонали) |
rand(m,n) |
Создание матрицы со случайными элементами (равномерно распределенными в диапазоне 0...1.0) |
randn(m,n) |
Создание матрицы с нормальными случайными элементами |
linspace(x1,x2,n) |
Вектор-строка с n элементами в интервале от x1 до x2 |
logspace(x1,x2,n) |
Вектор-строка с n элементами в интервале 10^x1 ... 10^x2 |
meshgrid |
Генерирование массивов X и Y для поверхностей z=f(x,y) |
Специальные (системные) переменные и константы |
|
ans |
Текущий результат |
eps |
Относительная точность вычислений с плавающей запятой |
realmax |
Максимальное число с плавающей запятой (1.7977e+308) |
realmin |
Минимальное положительное число с плавающей запятой (2.2251e-308) |
pi = |
3.1415926535897.... |
i, j |
Мнимая единица |
inf (Inf) |
Машинная бесконечность |
NaN |
Неопределенность (Not-a-Number=не число) |
Текущее время и дата |
|
clock |
Текущее системное время |
date |
Дата |
Матричные операции |
|
diag |
Формирование или исключение диагоналей |
fliplr |
Поворот матрицы влево или вправо |
flipud |
Поворот матрицы вверх или вниз |
reshape |
Изменение размера матрицы |
rot90 |
Поворот матрицы на 90 градусов |
tril |
Создание нижней треугольной матрицы |
triu |
Создание верхней треугольной матрицы |
matlab\elfun - элементарные математические функции
Тригонометрические, гиперболические |
|
sin, sinh |
Cинус, гиперболический синус |
asin, asinh |
Арксинус |
cos, cosh |
Косинус |
acos, acosh |
Арккосинус |
tan, tanh |
Тангенс |
atan, atanh |
Арктангенс |
atan2 |
Арктангенс в четырех квадрантах плоскости |
sec, sech |
Секанс |
asec, asech |
Арксеканс |
csc, csch |
Косеканс |
acsc, acsch |
Арккосеканс |
cot, coth |
Котангенс |
acot, acoth |
Арккотангенс |
Показательные |
|
exp |
Экспонента |
log |
Натуральный логарифм |
log10 |
Десятичный логарифм |
sqrt |
Корень квадратный |
Комплексные числа |
|
abs |
Модуль |
angle |
Аргумент (фазовый угол) |
conj |
Комплексно сопряженное число |
imag |
Мнимая часть |
real |
Действительная часть |
Действия с числами |
|
fix |
Округление в сторону нуля |
floor |
Округление в сторону минус бесконечности |
ceil |
Округление в сторону плюс бесконечности |
round |
Округление до ближайшего целого числа |
rem |
Остаток от деления |
sign |
Функция знака |
matlab\specfun - специальные математические функции
besselj |
Функция Бесселя 1-го рода |
bessely |
Функция Бесселя 2-го рода |
besseli |
Модифицированная функция Бесселя 1-го рода |
besselk |
Модифицированная функция Бесселя 2-го рода |
beta |
Бета-функция |
betainc |
Неполная бета-функция |
betaln |
Логарифмическая бета-функция |
ellipj |
Эллиптические функции Якоби |
ellipke |
Полный эллиптический интеграл |
erf |
Функция ошибок |
erfc |
Дополнительная функция ошибок |
erfcx |
Нормированная дополнительная функция ошибок |
erfinv |
Обратная функция ошибок |
gamma |
Гамма-функция |
gcd |
Наибольший общий делитель |
gammainc |
Неполная гамма функция |
lcm |
Наименьшее общее кратное |
gammaln |
Логарифмическая гамма-функция |
cart2sph |
Преобразование прямоугольных координат в сферические |
cart2pol |
Преобразование прямоугольных координат в полярные |
pol2cart |
Преобразование полярных координат в прямоугольные |
sph2cart |
Преобразование сферических координат в прямоугольные |
matlab\matfun - матричные функции - численная линейная алгебра
Матричный анализ |
|
cond |
Число обусловленности матрицы |
norm |
Норма матрицы или вектора |
rcond |
Оценка числа обусловленности матрицы |
rank |
Ранг матрицы |
det |
Определитель |
trace |
След матрицы |
Линейные уравнения |
|
\ и / |
Решение линейных уравнений |
chol |
Разложение Холецкого |
lu |
LU-разложение |
inv |
Обратная матрица |
qr |
QR-разложение |
lscov |
Метод наименьших квадратов в присутствии шумов |
Собственные и сингулярные значения |
|
eig |
Собственные значения и векторы |
poly |
Характеристический полином |
rsf2csf |
Преобразование действительной формы в комплексную диагональную |
cdf2rdf |
Преобразование комплексной диагональной формы в действительную блочную диагональную |
balance |
Масштабирование матрицы |
svd |
Сингулярное разложение матрицы |
Матричные функции |
|
expm |
Матричная экспонента |
expm1 |
Представление expm в виде m-файла |
expm2 |
Матричная экспонента в виде ряда Тэйлора |
expm3 |
Матричная экспонента через спектральное разложение |
logm |
Матричный логарифм |
sqrtm |
Извлечение квадратного корня из матрицы |
funm |
Произвольная функция от матрицы |
matlab\datafun - анализ данных и преобразования Фурье
Основные операции |
|
max |
Максимальный элемент: для векторов MAX(X) - наибольший элемент Х. Для матриц MAX(X) - вектор, содержащий максимальные элементы столбцов. [Y,I] = MAX(X) сохраняет индексы максимальных значений в векторе I. В случае комплексных чисел находится максимальное значение модулей: MAX(ABS(X)). См. min, median, mean, sort. |
min |
Минимальный элемент: применение аналогично max |
mean |
Среднее значение элементов: для векторов MEAN(X) возвращает среднее значение элементов X. Для матриц MEAN(X) - вектор-строка, элементы которого равны средним значениям столбцов. См. median, std, min, max |
median |
Медиана: для векторов median(X) возвращает медиану значений элементов X: например, median(1:10)=5.5. Для матриц median(X) - вектор-строка, содержащая медианные значения столбцов. См. mean, std, max, min. |
std |
Cредне-квадратическое (стандартное) отклонение: для векторов std(Х) возвращает с.к.о.; для матриц std(X) - вектор-строка, элементы которого равны с.к.о. столбцов. При вычислении с.к.о. используется деление суммы на n-1, где n - число элементов. См. cov, mean, median. |
sort |
Cортировка элементов в порядке возрастания: sort(X) - сортировка столбцов X; если элементы Х - комплексные, происходит сортировка abs(X). [Y,I] = sort(X) возвращает матрицу индексов I. Если X - вектор, то Y = X(I). Если Х - матрица размером m x n, то for J = 1:n, Y(:,J) = X(I(:,J),J). См. min, max. |
sum |
Cумма элементов: для векторов sum(X) - сумма элементов Х. Для матриц sum(X) - вектор-строка, элементы которого равны сумме элементов столбцов. См. prod, cumprod, cumsum |
prod |
Произведение элементов: по применению аналогично sum |
cumsum |
Кумулянтная (накопительная) сумма элементов: для векторов cumsum(X) - кумулянтная сумма элементов X; для матриц - матрица, содержащая кумулянтные суммы по столбцам. См. cumprod, sum, prod. |
cumprod |
Кумулятное произведение элементов: по применению аналогично cumsum |
trapz |
Вычисление интеграла методом трапеций: Z = trapz(X,Y) вычисляет интеграл функции Y(X) методом трапеций; X и Y должны быть векторами одинаковой длины, либо X - вектор-столбец, а Y - матрица с таким же числом строк. Результат Z - скаляр или вектор-строка. Z = trapz(Y) вычисляет “трапецеидальный” интеграл Y при единичном шаге; если шаг отличен от единичного, необходимо умножить Z на фактическое значение шага. См. sum, cumsum. |
Конечные разности |
|
diff |
Разностная функция и приближенное вычисление производной: diff может иметь как числовые, так и символьные аргументы. При числовом векторном аргументе diff вычисляет разности. В случае векторного Х diff(X)=[X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)]. В случае матрицы diff(X) - матрица столбцовых разностей [X(2:n,:) - X(1:n-1,:)]. diff(X,n) - разностная функция n-го порядка. При символьном (строчном) аргументе diff находит аналитическое выражение производных (если установлен пакет Maple Symbolic Toolbox). Примеры: h = .001; x = 0:h:pi; diff(sin(x.^2))/h - приближенное значение 2*cos(x.^2).*x diff((1:10).^2) = 3:2:19 См. gradient, del2, int, symvar. |
gradient |
Приближенное вычисление градиента: [PX,PY] = gradient(Z,DX,DY) возвращает числовые значения частных производных матрицы Z в виде матриц PX = dZ/dx и PY = dZ/dy. DX и DY могут быть скалярными значениями шага в направлениях X и Y или векторами, задающими направления в явной форме. Запись [PX,PY] = gradient(Z) предполагает, что DX =DY = 1. Если Y - вектор, то gradient(Y) и gradient(Y,DX) возвращают численное значение одномерной производной dY/dX. Пример: [x,y] = meshgrid(-2:.2:2, -2:.2:2); z = x .* exp(-x.^2 - y.^2); [px,py] = gradient(z,.2,.2); contour(z),hold on, quiver(px,py), hold off См. diff, del2, quiver, contour. |
del2 |
Дискретное 5-точечное преобразование Лапласа: V = del2(U) - матрица того же размера, что U, элементы которой равны разности значения элемента U и среднего значения четырех соседних элементов. В “углах” и на “краях” учитываются два или три соседних элемента. См. gradient, diff. |
Корреляция |
|
corrcoef |
коэффициенты корреляции |
cov |
ковариационная матрица |
subspace |
угол между подпространствами |
Фильтрация и свертка |
|
filter |
одномерный цифровой фильтр |
filter2 |
двухмерный цифровой фильтр |
conv |
свертка и умножение полиномов |
conv2 |
двухмерная свертка |
deconv |
разложение и деление полиномов |
Преобразования Фурье |
|
fft |
дискретное преобразование Фурье (ДПФ) |
fft2 |
двухмерное ДПФ |
ifft |
обратное ДПФ |
ifft2 |
двухмерное обратное ДПФ |
abs |
модуль спектра |
angle |
фазовый угол |
unwrap |
исключить скачки фазового угла через 3600 |
fftshift |
центрирование спектра |