MATLAB BÁSICO
Prof. Alberto Adade Filho (ITA/CTA)

RetornaÍndice

21. M-files

Consistem de uma seqüência de comandos MATLAB, armazenados como arquivos em disco e recebendo denominação com extensão .m (tipo do arquivo). M-files são usados para se automatizar uma seqüência longa de comandos ou para se incluir novas funções no MATLAB. Um M-file pode referenciar outros M-files, inclusive ele mesmo, recursivamente. Há dois tipos de M-files: script e function.

i. Script

Um m-file do tipo script consiste de uma seqüência normal de comandos MATLAB.

Ex.

% Um m-file para calcular números de Fibonnaci

f = [ 1 1 ]; k = 1;

while f(k) + f(k+1) < 1000

f(k+2) = f(k) + f(k+1);

k = k + 1;

end

stem(f)

Este arquivo foi gravado com o nome FIBNO.M. Entrando-se o comando fibno, o MATLAB executa os comandos em FIBNO.M, calculando os primeiros números da série de Fibonnaci e criando um gráfico:

Obs. Para editar m-files, usar um editor de arquivos tipo texto.

 

ii. Function

Em um m-file do tipo function a primeira linha traz a palavra function, dando ao m-file o mesmo status das outras funções do MATLAB. As variáveis definidas dentro de um m-file são variáveis locais, contudo, podem ser declaradas como variáveis globais através da declaração global (vide seção 22). Argumentos podem ser passados para uma função.

Ex.

function y = mean(x)

% MEAN calcula o valor médio. Para vetores, mean(x) retorna o valor médio. %Para matrizes, mean(x) é um vetor linha contendo o valor médio de cada coluna.

[m,n] = size(x);

if m = = 1

m = n; % trata vetor linha isolado

end

y = sum(x)/m;

Esta função está gravada num arquivo de nome mean.m e é referenciada da forma z=mean(v), por exemplo.

Obs . A função fplot proporciona uma maneira eficiente para se plotar um gráfico de uma função. Por exemplo, seja expnormal.m o M-file contendo a função,

function y = expnormal(x)

y = exp(-x .^2)

O comando fplot('expnormal', [-2,2]) produz o gráfico da função no domínio x indicado.

Na versão 4.2 do MATLAB, a função pode ser definida através de uma expressão simbólica, evitando-se, com isso, a criação de um M-file. No exemplo dado,

fplot('exp(-x^2')', [-2,2])

 

É possível escrever uma function que tenha uma outra function como parâmetro, esta última definida ou nomeada através de uma string (vide seção 23).

Ex. Definir uma function que calcula uma função f(x) real, em intervalo e incremento de x definidos como parâmetros e que gere uma tabela de valores de x, f(x).

function tab = ftab1(f, x0, xn, deltax)

% f : string com a definição ou o nome da função a ser calculada

% nos valores x = x0 + n * deltax.

% O resultado é colocado em forma de tabela: x , f(x).

%

x = x0 : deltax : xn;

y = eval(f); % f deve ser função de x.

tab = [ x ; y ]’;

Então, o comando,

tab = ftab1('humps(x)', 0.1,2,0.1)

onde a definição da função humps pode ser conferida através do comando type humps, retorna o resultado,

tab =

0.1000 15.4706

0.2000 45.8868

0.3000 96.5000

0.4000 47.4483

0.5000 19.0000

……................

1.6000 -3.5250

1.7000 -4.0218

1.8000 -4.3811

1.9000 -4.6494