Funções no MATLAB: Definição, Workspace, Entradas e Saídas
Uma função é um grupo de instruções que executam uma tarefa. No MATLAB, funções são definidas em arquivos separados. O nome do arquivo deve coincidir com o nome da função.
Funções operam em seu próprio workspace (workspace local), separado do workspace base (linha de comando). Podem aceitar múltiplos argumentos de entrada e retornar múltiplos argumentos de saída.
Sintaxe Básica
function [out1,out2,...,outN] = myfun(in1,in2,in3,...,inN)
Exemplo: Função mymax
Arquivo mymax.m:
function max = mymax(n1, n2, n3, n4, n5) % This function calculates the maximum of the five numbers given as input 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
Chamada:
mymax(34, 78, 89, 23, 11)
Resultado: ans = 89
Ajuda com help mymax exibe o comentário inicial.
Funções Anônimas
Definidas em uma única linha, sem necessidade de arquivo separado. Sintaxe:
f = @(arglist)expression
Exemplo: Potência
power = @(x, n) x.^n; result1 = power(7, 3) % 343 result2 = power(49, 0.5) % 7 result3 = power(10, -10) % 1e-10 result4 = power(4.5, 1.5) % 9.5459
Funções Primárias e Subfunções
Cada arquivo de função contém uma função primária (obrigatória, primeira) e zero ou mais subfunções. Subfunções só são visíveis dentro do mesmo arquivo.
Exemplo: Equação Quadrática com Subfunção
Arquivo quadratic.m:
function [x1,x2] = quadratic(a,b,c) % Returns roots of quadratic equation d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end function dis = disc(a,b,c) % Calculates discriminant dis = sqrt(b^2 - 4*a*c); end
Chamada: quadratic(2,4,-4) → ans = 0.7321
Funções Aninhadas (Nested Functions)
Definidas dentro do corpo de outra função. Compartilham o workspace da função que as contém.
Exemplo: Quadrática com Função Aninhada
Arquivo quadratic2.m:
function [x1,x2] = quadratic2(a,b,c)
function disc
d = sqrt(b^2 - 4*a*c);
end
disc;
x1 = (-b + d) / (2*a);
x2 = (-b - d) / (2*a);
end
Chamada: quadratic2(2,4,-4) → ans = 0.73205
Funções Privadas
Funções primárias visíveis apenas para funções na pasta pai. Ficam em subpasta chamada private.
Exemplo: Discriminante como Função Privada
Pasta private/disc.m:
function dis = disc(a,b,c) dis = sqrt(b^2 - 4*a*c); end
Arquivo quadratic3.m na pasta pai:
function [x1,x2] = quadratic3(a,b,c) d = disc(a,b,c); x1 = (-b + d) / (2*a); x2 = (-b - d) / (2*a); end
Chamada: quadratic3(2,4,-4) → ans = 0.73205
Variáveis Globais
Compartilhadas entre múltiplas funções. Devem ser declaradas global em todas as funções (e no workspace base, se necessário). Boa prática: usar nomes em maiúsculas.
Exemplo
Arquivo average.m:
function avg = average(nums) global TOTAL avg = sum(nums)/TOTAL; end
Script:
global TOTAL; TOTAL = 10; n = [34,45,25,45,33,19,40,34,38,42]; av = average(n)
Resultado: av = 35.5
MATLAB
- 10 Recursos Essenciais do Insight para Otimizar Impressão FDM Stratasys
- Funções em C++ Explicadas com Exemplos Práticos de Código
- Dominando Funções Lambda em Python: Exemplos Práticos e Boas Práticas
- Dominando Funções em Verilog para Design RTL Eficiente
- Dominando Funções em C: Estrutura, Declaração e Boas Práticas
- MATLAB: Visão Geral Abrangente do Ambiente Líder em Computação Numérica
- Entendendo Variáveis no MATLAB: Fundamentos e Exemplos
- Comandos Essenciais do MATLAB para Computação Eficiente
- Entendendo Tipos de Dados no MATLAB: Guia Completo
- Domine Matrizes no MATLAB: Criação, Referência e Manipulação de Dados