exponenta event banner

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

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

Синтаксис определения функции

Первой строкой каждой функции является оператор definition, который включает следующие элементы.

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 для лучшей читаемости кода.

См. также

Связанные темы