Функции в MATLAB

Опубликовано: 15 Сентября, 2022

Методы также широко известны как функции . Основная цель методов — повторное использование кода. Метод — это блок кода, который вызывается и выполняется, когда он вызывается пользователем. Он содержит локальное рабочее пространство и не зависит от базового рабочего пространства , которое принадлежит командной строке. Давайте взглянем на синтаксис метода.

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 и сохраните его за пределами родительской папки. Теперь давайте посмотрим на вывод, обратившись к вышеуказанным функциям.

Выход:

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

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