Функции в MATLAB: определение, рабочая область, входные и выходные аргументы
Функция — группа операторов, выполняющих задачу. В MATLAB функции определяются в отдельных файлах. Имя файла должно совпадать с именем функции.
Функции работают в собственной локальной рабочей области, отделенной от базовой рабочей области командной строки.
Функции могут принимать несколько входных и возвращать несколько выходных аргументов.
Синтаксис
function [out1,out2,...,outN] = myfun(in1,in2,in3,...,inN)
Пример: функция mymax
Файл mymax.m:
function max = mymax(n1, n2, n3, n4, n5) % This function calculates the maximum of five input numbers max = n1; if n2 > max; max = n2; end if n3 > max; max = n3; end if n4 > max; max = n4; end if n5 > max; max = n5; end end
Первая строка начинается с function, задает имя и порядок аргументов. Комментарии сразу после — текст помощи (help mymax).
Вызов:
mymax(34, 78, 89, 23, 11)
Результат: ans = 89
Анонимные функции
Анонимная функция — однострочное выражение, создаваемое в командной строке или в скрипте без отдельного файла.
f = @(arglist) expression
Пример
power = @(x, n) x.^n; result1 = power(7, 3) % 343 result2 = power(49, 0.5) % 7 result3 = power(10, -10) % 1e-10 result4 = power(4.5, 1.5) % 9.5459
Основные и подфункции
В файле функции первая — основная (primary), вызываемая извне. После неё могут идти подфункции (subfunctions), видимые только внутри этого файла.
Пример: квадратное уравнение
Файл quadratic.m:
function [x1,x2] = quadratic(a,b,c) % returns roots of quadratic equation d = disc(a,b,c); % вызов подфункции x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end function dis = disc(a,b,c) % подфункция dis = sqrt(b^2 - 4*a*c); end
Вызов: quadratic(2,4,-4) → ans = 0.7321
Вложенные функции
Определяются внутри другой функции, имеют доступ к её рабочей области.
function x = A(p1, p2)
...
function y = B(p3)
...
end
end
Пример: quadratic2 с вложенной disc
function [x1,x2] = quadratic2(a,b,c)
function disc
d = sqrt(b^2 - 4*a*c);
end
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end
Приватные функции
Основная функция, видимая только функциям в родительской папке. Размещается в подпапке private.
Пример
Папка private/disc.m:
function dis = disc(a,b,c) dis = sqrt(b^2 - 4*a*c); end
Файл quadratic3.m в рабочей папке:
function [x1,x2] = quadratic3(a,b,c) d = disc(a,b,c); % вызывает приватную функцию x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end
Глобальные переменные
Общие для нескольких функций. Объявляются ключевым словом global во всех функциях и в базовой рабочей области. Рекомендуется использовать заглавные буквы.
Пример
average.m:
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Скрипт:
global TOTAL; TOTAL = 10; n = [34,45,25,45,33,19,40,34,38,42]; av = average(n)
Результат: av = 35.5
MATLAB
- 10 ключевых функций Insight для оптимизации FDM-печати на Stratasys
- Функции в C++: подробное объяснение с практическими примерами кода
- Освоение лямбда-функций Python: практические примеры и лучшие практики
- Мастерство функций в Verilog для эффективного RTL дизайна
- Функции в C: объявление, определение, вызов, аргументы (по значению и по ссылке), рекурсия
- MATLAB: Комплексный обзор ведущей среды численных вычислений
- Переменные в MATLAB: Основы, примеры и работа с векторами/матрицами
- Основные команды MATLAB для эффективных вычислений
- Типы данных в MATLAB: Полное руководство с примерами
- Матрицы в MATLAB: Создание, индексация, удаление строк/столбцов и операции