function

Объявите имя функции, входные параметры и выходные параметры

Описание

пример

function [y1,...,yN] = myfun(x1,...,xM) объявляет функцию с именем myfun это принимает, вводит x1,...,xM и возвращает выходные параметры y1,...,yN. Этот оператор объявления должен быть первой исполняемой линией функции. Допустимые имена функций начинаются с буквенного символа и могут содержать буквы, числа или символы нижнего подчеркивания.

Можно сохранить функцию:

  • В файле функции, который содержит только функциональные определения. Имя файла должно совпадать с именем первой функции в файле.

  • В файле скрипта, который содержит команды и функциональные определения. Функции должны быть в конце файла. Файлы скрипта не могут иметь того же имени как функция в файле. Функции поддерживаются в скриптах в R2016b или позже.

Файлы могут включать несколько локальных функций или вложенных функций. Для удобочитаемости используйте end ключевое слово, чтобы указать на конец каждой функции в файле. end ключевое слово требуется когда:

  • Любая функция в файле содержит вложенную функцию.

  • Функция является локальной функцией в файле функции, и любая локальная функция в файле использует end ключевое слово.

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

Примеры

свернуть все

Задайте функцию в файле с именем average.m это принимает входной вектор, вычисляет среднее значение значений и возвращает один результат.

function ave = average(x)
    ave = sum(x(:))/numel(x); 
end

Вызовите функцию из командной строки.

z = 1:99;
ave = average(z)
ave =
    50

Задайте функцию в файле с именем stat.m это возвращает среднее и стандартное отклонение входного вектора.

function [m,s] = stat(x)
    n = length(x);
    m = sum(x)/n;
    s = sqrt(sum((x-m).^2/n));
end

Вызовите функцию из командной строки.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat(values)
ave =
   47.3400
stdev =
   29.4124

Задайте скрипт в файле с именем integrationScript.m это вычисляет значение подынтегрального выражения в$2\pi/3$ и вычисляет область под кривой от 0 до$\pi$. Включайте локальную функцию, которая задает подынтегральное выражение$y = \sin(x)^3$.

Примечание: Включая функции в скриптах требует MATLAB® R2016b или позже.

% Compute the value of the integrand at 2*pi/3.
x = 2*pi/3;
y = myIntegrand(x)

% Compute the area under the curve from 0 to pi.
xmin = 0;
xmax = pi;
f = @myIntegrand;
a = integral(f,xmin,xmax)

function y = myIntegrand(x)
    y = sin(x).^3;
end
y =

    0.6495


a =

    1.3333

Задайте две функции в файле с именем stat2.m, где первые вызовы функции второе.

function [m,s] = stat2(x)
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

Функциональный avg local function. Локальные функции только доступны для других функций в том же файле.

Вызовите функциональный stat2 из командной строки.

values = [12.7, 45.4, 98.9, 26.6, 53.1];
[ave,stdev] = stat2(values)
ave =
   47.3400
stdev =
   29.4124

Задайте функцию, которая ограничивает вход числовым вектором, который не содержит Inf или NaN элементы. Эта функция использует arguments ключевое слово, которое допустимо для MATLAB® версии R2019b и позже.

function [m,s] = stat3(x)
    arguments
        x (1,:) {mustBeNumeric, mustBeFinite}
    end
    n = length(x);
    m = avg(x,n);
    s = sqrt(sum((x-m).^2/n));
end

function m = avg(x,n)
    m = sum(x)/n;
end

В arguments блок кода, (1,:) указывает на тот x должен быть вектор. Функции валидации, {mustBeNumeric, mustBeFinite}, ограничьте элементы в x к числовым значениям, которые не являются Inf или NaN. Для получения дополнительной информации смотрите Валидацию Аргумента функции.

Вызывание функции с вектором, который содержит элемент, который является NaN нарушает объявление входного параметра. Это нарушение приводит к ошибке, будучи выданным mustBeFinite функция валидации.

values = [12.7, 45.4, 98.9, NaN, 53.1];
[ave,stdev] = stat3(values)
Invalid input argument at position 1. Value must be finite.
Представлено до R2006a