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

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

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

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

Объявление функции в MATLAB:

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

Синтаксис:

function [i1,i2,...,in] = func_dec(o1,o2,...,om)

Теперь мы видим программу MATLAB. В этой программе функция называется funx_dec, поэтому вы должны сохранить файл с тем же именем, т. е. func_dec.m. Здесь входными параметрами являются i1, i2, i3,…, in, а выходными параметрами являются o1, o2, o3, …, om. Давайте разберемся с этим синтаксисом через практическую реализацию.

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

Пример 1:

Matlab




% MATLAB program for function
function [ans] = greatest_no(x,y,z)
    if x > y
        if x>z
            ans = x;
        else
            ans = z;
        end
    else
        if y>z
            ans= y; 
        else 
            ans=z;
        end
    end
end

Выход:

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

Анонимная функция — один из самых мощных инструментов MATLAB, поскольку она может определять функцию без М-файла. Анонимные функции в MATLAB, в отличие от обычных функций, связаны с переменной, а не с файлами. Когда вы объявляете переменную для анонимной функции, data_type этой конкретной переменной — function_handle.

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

Синтаксис:

func_name = @(inp_argu)math_exp
// The @ operator is used to initialize anonymous
 functions and handles function .

Давайте разберемся с синтаксисом анонимной функции на примере поиска функции куба:

Пример 2:

Matlab




% MATLAB code for anonymous function
cub = @(x) x.^3;

Выход:

Здесь синтаксис таков, что инициализация анонимной функции выполняется с помощью «@», за которым следует входной параметр x, записанный в круглых скобках «()», а затем записывается оператор, который должен быть выполнен.

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

Пример 3:

Matlab




% MATLAB code for function
% variable declaration
a = 3
b = 1
c = 43
para = @(x) a*(x*x) + b*x +c
% parabola equation
clear a b c

Выход:

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

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

Анонимные функции без переменной:

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

Пример 4:

Matlab




% MATLAB code for no variable anonymous function
print = @() disp("This is an anonymous function.");
print();

Выход:

ans: This is an anonymous function.

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

Анонимные функции одной переменной:

Использование функции Matlab без переменной совсем не удобно. Нам не нужно, чтобы одно и то же повторялось снова и снова, нам действительно нужно выполнять некоторые вычисления с течением времени. Для этого нам нужно поместить некоторые переменные в круглые скобки. У нас был наш предыдущий пример переменной cub, давайте рассмотрим еще один пример поиска с помощью анонимной функции.

Пример 5:

Matlab




% MATLAB code with variable
expression = @(x) x*sqrt(x);
expression(4)

Выход:

ans: 8

Анонимная функция с более чем одной переменной:

В некоторых случаях необходимо передать и оценить более одной переменной. В таких случаях мы можем передать более одной переменной в анонимную функцию для оценки. Давайте оценим выражение {x^3+ y^2 – z}, используя анонимную функцию.

Пример 6:

Matlab




% MATLAB Code anonymous function with more than one variable
expression = @(x,y,z) x.*3+y.*2-z;
expression(12,5,19)

Выход:

ans = 27

Вложенная анонимная функция:

Иногда нам нужно выполнить более одной строки кода, в таких случаях нам нужно использовать вложенную анонимную функцию. Вложенная анонимная функция сначала оценивает внутреннюю функцию, а затем внешняя выдает результат. Давайте разберемся с таким царем функций на примере решения определенного интеграла int_{1}^{6} (12x^3 -9x^2+2) dx.

Пример 7:

Matlab




% MATLAB Code for Nested anonymous function
expression = @() integral(@(x) (12*x.^3 - 9*x.*2 + 2),1,6)
  
expression =
  
  function_handle with value:
  
    @()integral(@(x)(12*x.^3-9*x.*2+2),1,6)

Выход:

ans = 3580

Передача анонимной функции в качестве дескриптора функции другим функциям:

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

Пример 8:

Matlab




function y = functionHandle(fun,x)
    fun = fun(123);
    y = fun * x;
end

Выход:

>> functionHandle(@(x) sqrt(x), 12) 
   ans = 133.0864