
Создание м-файлов в виде м-функций.
По определению файлы, которые содержат в себе языковые коды системы MATLAB, называются М-файлами. М-файлы могут быть функциональными (М-функциями), если они содержат аргументы (входные переменные) и создают выходные данные. М-файлы обеспечивают расширяемость среды MATLAB, позволяют добавлять новые функции (встроенные функции) к уже существующим функциям MATLAB. М - файлы типа М-функций представляют собой как и М-сценарии обычные текстовые файлы, которые создаются с помощью редактора файлов. Написание М-функции начинается с кючевого слов function.
Формат заголовка М - функции:
function [список выходных переменных] = <имя функции>(<список входных переменных>)
Примечание: список выходных переменных может быть условным, т.е просто символ. Сохранение М-файла как М-функции должно быть с именем, которое указывается в поле заголовка М-функции.
Пример 1.
Создать
М-файл для вычисления следующего
выражения:
,
где
—
числа или матрицы одинаковой размерности.
В текстовом редакторе MATLAB выполняем команду File-New-Function M-file и создаем следующий М-файл в виде М-функции:
Применение точки означает массивное возведение в квадрат.
Созданную
М-функцию сохраним под именем
,
которому редактор MATLAB добавит
расширение ".m".
Обращение к функции fun1 может быть выполнено тремя способами.
1 Способ
Для примера 1 в командном окне выполним следующие действия:
введем fun1(3,4) (в качестве аргументов выбраны значения a=3, b=4)
Получим следующий ответ: ans= 5
2 Способ
Введем в командном окне:
a=3; b=4;
fun1(a,b)
И получим ответ: ans=5
3 Способ
Воспользуемся функцией с присвоением результата, например, через z.
Введем в командном окне:
z1=fun1(a,b)
Получаем: z1=5
Пример 2.
Вычисление
факториалов:
n
—
количество сомножителей.
Создадим следующую М-функцию под именем fact1.m:
Вычисление n-факториал:
function f1=fact1(n)
f1=prod(1:n);
Примечание. Функция prod в свою очередь является встроенной функцией MATLAB.
Для
примера вычислим
:
fact1(4)
ans= 24
или иным путем:
n=4;
fact1(n)
ans=24
Другие функции matlab
calendar
Функция calendar выводит в командное окно календарь на текущий месяц в виде таблицы из семи столбцов.
>> calendar
Apr 2005
S M Tu W Th F S
0 0 0 0 0 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
0 0 0 0 0 0 0
Чтобы отобразить календарь какого-либо другого месяца и года, нужно задать функцию
calendar с двумя аргументами (первый из них будет означать год, а второй- номер месяца). Например, отобразим календарь на март 2005 года.
calendar(2005,3)
Mar 2005
S M Tu W Th F S
0 0 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 0 0
0 0 0 0 0 0 0
diap
Создает массив
Пример, создающий одномерный массив чисел в диапазоне от 0 до 10
diap=0:0.1:10
help
Полный список операторов можно получить, используя команду help ops. Постепенно мы рассмотрим все операторы системы MATLAB и обсудим особенности их применения. А пока приведем только часть полного списка операторов, содержащую арифметические операторы:
>> help ops
Plus |
Plus |
+ |
Uplus |
Unary plus |
+ |
Minus |
Minus |
- |
Umlnus |
Unary minus |
- |
Mtimes |
Matrix multiply |
* |
times |
Array multiply |
* |
mpower |
Matrix power |
^ |
poWer |
Array power |
.^ |
mldivide |
Backslash or left matrix divide |
\ |
mrdivide |
Slash or right matrix divide |
/ |
Idivide |
Left array divide |
.\ |
rdivide |
Right array divide |
./ |
kron |
Kronecker tensor product |
kron |
Со списком элементарных функций можно ознакомиться, выполнив команду help elfun,
а со списком специальных функций – с помощью команды help specfun.
Функция eval ('выражение') интерпретирует и вычисляет текстовую строку, которая может содержать либо арифметическое выражение, либо инструкцию, либо обращение к функции
Примеры
Вычислим текущее время t:
format rational
eval('t = clock')
t = 1997 12 7 17 24 241/100
Следующий программный код позволяет сформировать матрицу Гильберта порядка n:
t = '1/(i + j-1)';
n = 4;
for i = 1:n
for j = 1:n
G(i, j) = eval(t);
end
end
format rational
G
G =
1 1/2 1/3 1/4
1/2 1/3 1/4 1/5
1/3 1/4 1/5 1/6
1/4 1/5 1/6 1/7
intersect
intersect - пересечение множеств для двух векторов а и b, т. е., общие элементы векторов а и b. Результирующий вектор отсортирован по возрастанию.
a=[1 2 3 4]
b=[3 4 5]
Ans=[3 4]
setdiff
setdiff-разность множеств т. е., те элементы вектора а, которые не содержатся в векторе b. Результирующий вектор сортируется по возрастанию
a=[1 2 3 4]
b=[3 4 5]
setdiff(a,b)
setdiff(b,a)
ans=[1 2]
ans=[5]
union - объединение множеств
union(a, b)
a=[1 2 3 4]
b=[3 4 5]
ans=[1 2 3 4 5]
unique - удаление из множеств одинаковых элементов
unique[1 2 3 4 5 2 4]
ans=[1 2 3 4 5]