И скрипты, и функции позволяют вам повторно использовать последовательности команд путем хранения их в программных файлах. Скрипты являются самым простым типом программы, поскольку они хранят команды именно так, как вы бы вводили их в командной строке. Функции обеспечивают большую гибкость, в основном потому, что можно передавать входные значения и возвращать выходные значения. Для примера эта функция называется fact
вычисляет факториал числа (n
) и возвращает результат (f
).
function f = fact(n) f = prod(1:n); end
Этот тип функции должен быть определен в файле, а не в командной строке. Часто вы храните функцию в ее собственном файле. В этом случае лучшая практика состоит в том, чтобы использовать одно и то же имя для функции и файла (в этом примере fact.m
), начиная с MATLAB® связывает программу с именем файла. Сохраните файл в текущей папке или в папке по путь поиска файлов MATLAB.
Можно вызвать функцию из командной строки, с помощью тех же синтаксических правил, которые применяются к функциям, установленным с MATLAB. Для образцов вычислите факториал 5.
x = 5; y = fact(5)
y = 120
Начиная с R2016b, другой опцией хранения функций является включение их в конец файла скрипта. Например, создайте файл с именем mystats.m
с несколькими командами и двумя функциями, fact
и perm
. Скрипт вычисляет сочетание (3,2).
x = 3; y = 2; z = perm(x,y) function p = perm(n,r) p = fact(n)/fact(n-r); end function f = fact(n) f = prod(1:n); end
Вызовите скрипт из командной строки.
mystats
z = 6
Первая линия каждой функции является оператором определения, который включает следующие элементы.
| Используйте строчные символы для ключевого слова. |
Выходные аргументы (необязательно) | Если ваша функция возвращает один выход, можно задать имя выхода после function myOutput = myFunction(x) Если ваша функция возвращает больше одного вывода, заключайте имена выходов в квадратные скобки. function [one,two,three] = myFunction(x) Если выхода нет, можно его опустить. function myFunction(x) Или можно использовать пустые квадратные скобки. function [] = myFunction(x) |
Имя функции (обязательно) | Допустимые имена функции следуют тем же правилам, что и имена переменных. Они должны начинаться с буквы и могут содержать буквы, цифры или символ нижнего подчеркивания. Примечание Чтобы избежать путаницы, используйте одно и то же имя как для файла функции, так и для первой функции в файле. MATLAB связывает вашу программу с именем файла, а не с именем функции. Файлы скрипта не могут иметь то же имя, что и функция в файле. |
Входные параметры (необязательно) | Если ваша функция принимает какие-либо входы, заключайте их имена в круглые скобки после имени функции. Входы разделяются запятыми. function y = myFunction(one,two,three) Если входных входов нет, можно опустить круглые скобки. |
Совет
Когда вы задаете функцию с несколькими входными или выходными аргументами, сначала перечислите все необходимые аргументы. Это упорядоченное расположение позволяет вам вызвать функцию, не задавая необязательные аргументы.
Тело функции может включать допустимые выражения MATLAB, операторы потока управления, комментарии, пустые линии и вложенные функции. Любые переменные, которые вы создаете в функции, хранятся в рабочей области, специфичной для этой функции, которая является отдельной от базового рабочего пространства.
Программные файлы могут содержать несколько функций. Если файл содержит только определения функций, первая функция является основной функцией и является функцией, которую MATLAB связывает с именем файла. Функции, которые следуют за основной функцией или кодом скрипта, называются локальными функциями. Локальные функции доступны только в файле.
Функции заканчиваются либо на end
оператор, конец файла или линия определения для локальной функции, в зависимости от того, что наступит раньше. end
оператор требуется, если:
Любая функция в файле содержит вложенную функцию (функцию, полностью содержащуюся в ее родительский элемент).
Функция является локальной функцией внутри файла функции, и любая локальная функция в файле использует end
ключевое слово.
Функция является локальной функцией в файле скрипта.
Хотя иногда это необязательно, используйте end
для улучшения читаемости кода.