Создание функций в файлах

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

Используйте строчные символы для ключевого слова.

Выходные аргументы (необязательно)

Если ваша функция возвращает один выход, можно задать имя выхода после function ключевое слово.

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 ключевое слово.

  • Функция является локальной функцией в файле скрипта.

Хотя иногда это необязательно, используйте end для улучшения читаемости кода.

См. также

Похожие темы