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

Funções do MATLAB

Uma função é um conjunto de instruções que executam uma tarefa juntos. No MATLAB, as funções são definidas em arquivos separados. O nome do arquivo deve ser o mesmo que o nome da função.

A função opera nas suas próprias áreas de trabalho (também conhecidas como áreas de trabalho locais) nas variáveis, diferindo da área de trabalho acessada na linha de comando do MATLAB (conhecida como área de trabalho básica).

As funções podem aceitar múltiplos parâmetros de entrada e podem retornar múltiplos parâmetros de saída.

A sintaxe da declaração da função é-

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

exemplo online

abaixo do nomemymaxA função deve ser escrita no arquivo chamadomymax.mdo arquivo. Ele aceita cinco números como parâmetros e retorna o número maior.

Crie um arquivo de função chamado mymax.m e insira o seguinte código no arquivo.-

function max = mymax(n1, n2, n3, n4, n5)
%Esta função é usada para calcular
%cinco números de entrada
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

A primeira linha da função começa com a palavra-chave function no início . Isso fornece o nome da função e a ordem dos parâmetros. Em nosso exemplo,mymaxA função tem cinco parâmetros de entrada e um parâmetro de saída.

As linhas de comentário após a declaração da função fornecem o texto de ajuda. Quando você inserir o seguinte conteúdo, essas linhas serão impressas:

help mymax

O MATLAB executará as seguintes instruções e retornará o seguinte resultado-

Esta função calcula o máximo dos
   cinco números fornecidos como entrada

Você pode chamar a função como-

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

O MATLAB executará as seguintes instruções e retornará o seguinte resultado-

ans = 89

Função anônima

As funções anônimas são como funções inline em linguagens de programação tradicionais, definidas em uma única sentença do MATLAB. Elas consistem em uma expressão do MATLAB e um número arbitrário de parâmetros de entrada e saída.

Você pode definir diretamente uma função anônima na linha de comando do MATLAB ou em funções ou scripts.

Dessa forma, você pode criar funções simples sem precisar criar um arquivo para elas.

A sintaxe para criar uma função anônima a partir de uma expressão é

f = @(arglist)expression

Exemplo

Neste exemplo, escreveremos uma função anônima chamada power, que recebe dois números como entrada e eleva o primeiro número à potência do segundo número.

Crie um arquivo de script e insira o seguinte código-

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

Quando o arquivo é executado, ele exibe-

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

Função principal e secundária

Deve ser definida qualquer função fora da função anônima no arquivo. Cada arquivo de função contém uma função principal necessária que apareceu primeiro, seguida por qualquer número de funções secundárias opcionais usadas após a função principal.

É possível chamar a função principal de fora do arquivo do arquivo principal (da linha de comando ou de outras funções), mas não é possível chamar funções de subarquivo fora do arquivo de função.

As subfunções são visíveis apenas para a função principal e para outras subfunções definidas no arquivo de função que as define.

Exemplo

Vamos escrever uma função chamada quadratic para calcular as raízes de uma equação quadrática. A função contém três entradas: coeficiente quadrático, coeficiente linear e constante. Ele retornará as raízes.

O arquivo de função quadratic.m conterá a função principal quadratic e a subfunção disc, que calcula o discriminante.

Crie um arquivo de função quadratic.m e insira o seguinte código

function [x1,x2] = quadratic(a,b,c)
% esta função retorna
% equação quadrática.
% ele precisa3parâmetros de entrada
%x2,x e
% constante
% ele retorna as raízes
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end          % fim da função quadratic
function dis = disc(a,b,c) 
% cálculo do discriminante da função
dis = sqrt(b^2 - 4*a*c);
end          % fim da subfunção-function

Você pode chamar essas funções a partir da linha de comando, conforme mostrado a seguir:

quadratic(2,4,-4)

O MATLAB executará as seguintes instruções e retornará o seguinte resultado-

ans = 0.7321

Funções aninhadas

Você pode definir uma função dentro do corpo de outra função. Essas são chamadas de funções aninhadas. As funções aninhadas contêm qualquer ou todos os componentes de qualquer outra função.

As funções aninhadas são definidas dentro do escopo de outra função, elas compartilham o acesso ao espaço de trabalho da função contida.

A sintaxe das funções aninhadas é a seguinte-

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

Exemplo

Vamos reescrever o exemplo anteriorquadraticFunção. No entanto, desta vez, a função disc será uma função aninhada.

Crie um arquivo de funçãoquadratic2m,e insira o seguinte código-

function [x1,x2,x2] = quadratic
function disc          % função aninhada
d = sqrt(b^2 - 4*a*c);
end          % fim da função disc
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end          % fim da função quadratic2

Você pode chamar a função acima a partir da linha de comando, conforme mostrado a seguir:

quadratic2(2,4,-4)

O MATLAB executará as seguintes instruções e retornará o seguinte resultado-

ans =  0.73205

Função privada

As funções privadas são funções principais que são visíveis apenas para um grupo limitado de outras funções. Se você não quiser tornar pública a implementação da função function(s), pode criá-las como funções privadas.

As funções privadas estão localizadas em uma subpasta com o nome especial Private.

Eles são visíveis apenas para as funções no diretório pai.

Exemplo

Vamos reescreverquadraticA função. No entanto, desta vez, a função disc calculará o discriminante e será uma função privada.

Crie uma subpasta chamada private no diretório da pasta de trabalho, e armazene o seguinte arquivo de função disc.m dentro dela

function dis = disc(a,b,c) 
% cálculo do discriminante da função
dis = sqrt(b^2 - 4*a*c);
end          % fim da subfunção

Crie uma função chamada quadratic no seu diretório de trabalho3m, e insira o seguinte código-

function [x1,x2,x3] = quadratic
(a,b,c)
% de uma equação do segundo grau. Esta função retorna
Ele precisa3parâmetros de entrada
% Elas são os2,x e
% Coeficiente Constante
% Ele retorna as raízes
d = disc(a,b,c); 
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end      %Fim do quadratic3

Você pode chamar a função acima a partir da linha de comando, conforme mostrado a seguir:

quadratic3(2,4,-4)

O MATLAB executará as seguintes instruções e retornará o seguinte resultado-

ans =  0.73205

Variáveis Globais

Variáveis globais podem ser compartilhadas por várias funções. Para isso, você precisa declarar a variável como global em todas as funções.

Se você quiser acessar a variável a partir do espaço de trabalho básico, declare a variável na linha de comando.

As declarações globais devem ocorrer antes de a variável ser usada no interior da função. É bom usar letras maiúsculas para o nome das variáveis globais, para distingui-las de outras variáveis.

Exemplo

Vamos criar um arquivo de função chamado average.m e insira o seguinte código-

function avg = average(nums)
global TOTAL
avg = sum(nums)/TOTAL;
end

Crie um arquivo de script e insira o seguinte código-

global TOTAL;
TOTAL = 10;
n = [34, 45, 25, 45, 33, 19, 40, 34, 38, 42];
av = average(n)

Quando você executar o arquivo, ele exibirá o seguinte resultado-

av =  35.500