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

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

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

Похожие темы