exponenta event banner

функция

Объявление имени функции, входов и выходов

Описание

пример

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 является локальной функцией. Локальные функции доступны только другим функциям в том же файле.

Функция вызова 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