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