И скрипты и функции позволяют вам повторно использовать последовательности команд путем хранения их в программных файлах. Скрипты являются самым простым типом программы, поскольку они хранят команды точно так же, как вы ввели бы их в командной строке. Функции обеспечивают больше гибкости, в основном, потому что можно передать входные значения и возвратить выходные значения. Например, эта функция с именем 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
для лучшей удобочитаемости кода.