English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Функции MATLAB

Функция - это набор инструкций, выполняемых вместе. В MATLAB функция определяются в отдельном файле. Имя файла и имя функции должны быть одинаковыми.

Функция выполняет операции с переменными в своем собственном рабочем пространстве (также известном как локальное рабочее пространство), которое отличается от рабочего пространства, доступного через командную строку MATLAB (известного как базовое рабочее пространство).

Функция может принимать несколько входных параметров и возвращать несколько выходных параметров.

Грамматика функции -

function [out1, out2, ..., outN] = myfun(in1, in2, in3, ..., inN)

Онлайн пример

Ниже приведен примерmymaxФункция должна быть записана в файл с именемmymax.mв этом файле. Он принимает пять чисел в качестве параметров и возвращает наибольшее число.

Создайте файл функции, назовите его mymax.m и введите следующий код-

function max = mymax(n1, n2, n3, n4, n5)
%Эта функция предназначена для вычисления
%Ввести пять чисел
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

Первая строка функции начинается с ключевого слова function开头 . Она предоставляет имя функции и порядок параметров. В нашем примере,mymaxФункция имеет пять входных параметров и один выходной параметр.

Строки комментариев после функции предоставляют справочный текст. Когда вы вводите следующее, эти строки будут напечатаны:

help mymax

MATLAB выполнит эти инструкции и вернет следующий результат-

Эта функция вычисляет максимальное значение из
   пять чисел, переданных в качестве входных параметров

Вы можете вызвать функцию:

mymax(34, 78, 89, 23, 11)

MATLAB выполнит эти инструкции и вернет следующий результат-

ans = 89

Анонимные функции

Анонимные функции такие же, как inline функции в традиционных языках программирования, они определяются в одном MATLAB-выражении и состоят из MATLAB-выражения и任意ного количества входных и выходных параметров.

Вы можете определить анонимную функцию direkti v komandnom riadke MATLAB или в функции или скрипте.

Таким образом, вы можете создавать простые функции, не создавая для них файлов.

Синтаксис создания анонимной функции из выражения

f = @(arglist)expression

Пример

В этом примере мы напишем анонимную функцию под названием power, которая принимает два числа в качестве входных параметров и возводит первое число в степень второго.

Создайте сценарий файла и введите следующий код-

power = @(x, n) x.^n;
result1 = power(7, 3)
result2 = power(49, 0.5)
result3 = power(10, -10)
result4 = power(4.5, 1.5)

Когда вы запускаете файл, он показывает '-'

result1 = 343
result2 = 7
result3 = 1.0000e-10
result4 = 9.5459

Основная и вспомогательные функции

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

Основную функцию можно вызывать из за пределов файла, определенного в основном файле (из командной строки или другой функции), но вспомогательные функции не могут быть вызваны из за пределов файла функции.

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

Пример

Напишем функцию под названием quadratic для вычисления корней квадратного уравнения. Эта функция содержит три входных параметра: квадратный коэффициент, линейный коэффициент и константа. Она будет возвращать корни.

Файл функции quadratic.m будет содержать основную функцию quadratic и вспомогательную функцию disc, которая вычисляет дискримinant.

Создайте файл функции quadratic.m и введите в него следующий код

function [x1,x2] = quadratic(a,b,c)
%Эта функция возвращает
%Квадратное уравнение.
%Она требует 3 параметров ввода
%x2, x и
%Константа
%Она возвращает корни
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   % Конец функции quadratic
function dis = disc(a,b,c) 
%Функция вычисляет дискримinant
dis = sqrt(b^2 - 4*a*c);
end   % Конец подфункции

Вы можете вызвать вышеуказанные функции из командной строки, например:

quadratic(2,4,-4)

MATLAB выполнит эти инструкции и вернет следующий результат-

ans = 0.7321

Вложенные функции

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

Вложенные функции определяются в范围内 другой функции, они совместно используют доступ к рабочей области содержащей функции.

Вложенные функции следуют следующим синтаксисом-

function x = A(p1, p2)
...
B(p2)
   function y = B(p3)
   ...
   end
...
end

Пример

Давайте перепишем пример из предыдущего примераquadraticФункция, но на этот раз функция disc будет вложенной функцией.

Создайте файл функцииquadratic2.m,и введите следующий код в файл-

function [x1,x2] = quadratic2(a,b,c)
function disc %Вложенная функция
d = sqrt(b^2 - 4*a*c);
end   % Конец функции disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end   %Конец функции quadratic2

Вы можете вызвать этот функцию из командной строки, как показано ниже:

quadratic2(2,4,-4)

MATLAB выполнит эти инструкции и вернет следующий результат-

ans = 0.73205

Частные функции

Частные функции — это функции, видимые только ограниченному числу других функций.

Частные функции находятся в подпапке с особым именем Private.

Они видны только функциям в родительской папке.

Пример

Давайте перепишемquadraticФункция. Но на этот раз, функция disc будет частной функцией.

Создайте подпапку private в папке рабочей директории и сохраните в ней следующий файл функции disc.m

function dis = disc(a,b,c) 
%Функция вычисляет дискримinant
dis = sqrt(b^2 - 4*a*c);
end      %Конец подфункции

Создайте файл функции quadratic3.m в вашей рабочей директории и введите следующий код-

function [x1,x2] = quadratic3(a,b,c)
% Эта функция возвращает
% Однородное квадратное уравнение.
Это требует 3 параметров ввода
% Они являются x2, x и
% Константа
% Оно возвращает корни
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      %Конец quadratic3

Вы можете вызвать этот функцию из командной строки, как показано ниже:

quadratic3(2,4,-4)

MATLAB выполнит эти инструкции и вернет следующий результат-

ans = 0.73205

Глобальные переменные

Глобальные переменные могут быть разделены между несколькими функциями. Для этого вам нужно объявить переменную как глобальную во всех функциях.

Если необходимо получить доступ к переменной из базового рабочего пространства, объявите переменную в командной строке.

Глобальные объявления должны производиться до использования переменных в функции. Лучше использовать строчные буквы для имен глобальных переменных, чтобы отличить их от других переменных.

Пример

Давайте создадим файл функции с именем 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.500