Функции в 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 function function result = adder(x, y, z) % This function adds the 3 input arguments result = 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 Function function result = adder(x,y) result = x+y; % Calling Sub function print(result); end % Sub function function print(result) fprintf( "The addition of given two number is %d" ,result); end |
Сохраните приведенный выше код с именем основной функции adder.m и просмотрите вывод, вызвав его из командной строки.
Выход:
Вложенные функции
В отличие от подфункций, вложенные функции определяются внутри основных функций. Область действия вложенной функции находится внутри файла. Нельзя получить доступ к вложенной функции из-за пределов файла. К рабочему пространству основной функции могут обращаться все вложенные функции, определенные в теле основной функции.
MATLAB
% A MATLAB program to illustrate nested functions % Primary Function function result = adder(x,y) result = x+y; % Nested Function function print(result) fprintf( "The sum of two numbers added in the nested function %d" ,result); end % Calling Nested Function print(result); end |
Сохраните приведенный выше код с основным именем файла adder.m и посмотрите на результат, вызвав функцию.
Выход:
Частные функции
Само название предполагает, что эти функции являются частными и будут видны только для ограниченного числа функций/файлов. Эти файлы функций хранятся в отдельной подпапке с именем private. Как правило, мы не можем получить доступ к файлам, которые не находятся в текущем пути/папке. Но это работает для частных функций. Эти функции находятся во вложенной папке и доступны для родительской папки и самой личной папки. Теперь давайте погрузимся в некоторые примеры, чтобы лучше понять концепцию.
Пример:
MATLAB
% A MATLAB program to illustrate % private functions % Adder Function function result = adder(x,y) result = x+y; % Calling private function print(result); end |
Сохраните приведенный выше код как adder.m в отдельной папке и создайте еще одну папку с именем private.
MATLAB
% A MATLAB program to illustrate % private functions % private function function 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 Function function result = adder(x,y) result = x-y; % Calling private function print(result); end |
Сохраните приведенный выше код как subtractor.m и сохраните его за пределами родительской папки. Теперь давайте посмотрим на вывод, обратившись к вышеуказанным функциям.
Выход:
В приведенном выше случае вы можете наблюдать ошибку, когда мы пытаемся получить доступ к личным функциям из места, отличного от родительской папки.
Программа успешно скомпилирована и выдала результат, когда мы попытались получить доступ к частной функции из функции сумматора , которая хранится в родительской папке. При работе с приватными функциями необходимо проверять текущий путь к файлу.