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

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

Смотрите также

Похожие темы