Функции в MATLAB
Методы также широко известны как функции . Основная цель методов — повторное использование кода. Метод — это блок кода, который вызывается и выполняется, когда он вызывается пользователем. Он содержит локальное рабочее пространство и не зависит от базового рабочего пространства , которое принадлежит командной строке. Давайте взглянем на синтаксис метода.
Syntax:
function [y1, y2 ,y3 . . . . , yn] = functionName(arguments)
. . . . .
end
where, y1 . . . . yn are output variables.
Синтаксис MATLAB весьма своеобразен по сравнению с другими языками программирования. Мы можем вернуть одно или несколько значений из функции. Мы также можем передать один или несколько аргументов/переменных при вызове функции. Функции MATLAB должны быть определены в отдельных файлах, а имя функции должно совпадать с именем файла. Давайте также рассмотрим еще несколько способов определения функции в соответствии с потребностями пользователя.
- Анонимные функции
- Подфункции
- Вложенные функции
- Частные функции
Теперь давайте погрузимся в пример и поймем, как определить базовую функцию.
Пример:
MATLAB
% A MATLAB program to illustrate% defining a functionfunction result = adder(x, y, z)% This function adds the 3 input argumentsresult = x+y+z;end |
Строка комментария, написанная сразу после оператора функции , работает как текст справки . Сохраните приведенный выше код как adder.m и просмотрите вывод, вызвав его из командной строки.
Выход:
Анонимные функции
Анонимная функция представляет собой встроенную функцию с одной выходной переменной. Он может содержать несколько входных и выходных аргументов. Пользователь не может получить доступ/вызвать анонимную функцию из-за пределов файла. Пользователь может определить анонимную функцию в командной строке или в сценарии или файле функции.
Syntax:
output = @(arguments) expression
Parameters:
output = output to be returned
arguments = required inputs to be passed
expression = a single formula/logic to be
Пример:
В приведенном выше блоке кода определяется анонимная функция, доступ к которой осуществляется в самой командной строке.
Подфункции
Подфункции — это функции, которые определены после основной функции. Каждая функция должна быть определена в файле, кроме анонимных функций. Подфункции определены в основном файле функций, и эти функции не видны никаким другим функциям, кроме основных и подфункций, определенных в файле. В отличие от основных функций, к подфункциям нельзя получить доступ из командной строки/другого файла.
Syntax:
function output = mainFunction(x)
. . . . . .
subFunction(y)
. . . . . .
end
function result = subFunction(y)
. . . . . .
end
Пример:
MATLAB
% Printing the sum of two numbers% using sub functions% Primary Functionfunction result = adder(x,y)result = x+y;% Calling Sub functionprint(result);end% Sub functionfunction print(result)fprintf("The addition of given two number is %d",result);end |
Сохраните приведенный выше код с именем основной функции adder.m и просмотрите вывод, вызвав его из командной строки.
Выход:
Вложенные функции
В отличие от подфункций, вложенные функции определяются внутри основных функций. Область действия вложенной функции находится внутри файла. Нельзя получить доступ к вложенной функции из-за пределов файла. К рабочему пространству основной функции могут обращаться все вложенные функции, определенные в теле основной функции.
MATLAB
% A MATLAB program to illustrate nested functions% Primary Functionfunction result = adder(x,y)result = x+y;% Nested Functionfunction print(result)fprintf("The sum of two numbers added in the nested function %d",result);end% Calling Nested Functionprint(result);end |
Сохраните приведенный выше код с основным именем файла adder.m и посмотрите на результат, вызвав функцию.
Выход:
Частные функции
Само название предполагает, что эти функции являются частными и будут видны только для ограниченного числа функций/файлов. Эти файлы функций хранятся в отдельной подпапке с именем private. Как правило, мы не можем получить доступ к файлам, которые не находятся в текущем пути/папке. Но это работает для частных функций. Эти функции находятся во вложенной папке и доступны для родительской папки и самой личной папки. Теперь давайте погрузимся в некоторые примеры, чтобы лучше понять концепцию.
Пример:
MATLAB
% A MATLAB program to illustrate% private functions% Adder Functionfunction result = adder(x,y)result = x+y;% Calling private functionprint(result);end |
Сохраните приведенный выше код как adder.m в отдельной папке и создайте еще одну папку с именем private.
MATLAB
% A MATLAB program to illustrate% private functions% private functionfunction print(result)fprintf("The sum of two numbers added in the nested function is %d",result);end |
Сохраните приведенный выше код как print.m и сохраните его в личной папке.
MATLAB
% A MATLAB program to illustrate% private functions% Subtractor Functionfunction result = adder(x,y)result = x-y;% Calling private functionprint(result);end |
Сохраните приведенный выше код как subtractor.m и сохраните его за пределами родительской папки. Теперь давайте посмотрим на вывод, обратившись к вышеуказанным функциям.
Выход:
В приведенном выше случае вы можете наблюдать ошибку, когда мы пытаемся получить доступ к личным функциям из места, отличного от родительской папки.
Программа успешно скомпилирована и выдала результат, когда мы попытались получить доступ к частной функции из функции сумматора , которая хранится в родительской папке. При работе с приватными функциями необходимо проверять текущий путь к файлу.