Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> MATLAB

Функции в 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

  1. 10 ключевых функций Insight для оптимизации FDM-печати на Stratasys
  2. Функции в C++: подробное объяснение с практическими примерами кода
  3. Освоение лямбда-функций Python: практические примеры и лучшие практики
  4. Мастерство функций в Verilog для эффективного RTL дизайна
  5. Функции в C: объявление, определение, вызов, аргументы (по значению и по ссылке), рекурсия
  6. MATLAB: Комплексный обзор ведущей среды численных вычислений
  7. Переменные в MATLAB: Основы, примеры и работа с векторами/матрицами
  8. Основные команды MATLAB для эффективных вычислений
  9. Типы данных в MATLAB: Полное руководство с примерами
  10. Матрицы в MATLAB: Создание, индексация, удаление строк/столбцов и операции