Você está na página 1de 50

Matlab

ndice Analtico
1.

Matlab bsico ........................................................................................ 2


1.1
Introduo ......................................................................................... 2
1.2
Operaes matriciais ......................................................................... 8
1.3
Operaes em Array........................................................................ 10
1.4
Manipulao matricial e vetorial .................................................... 13
1.5
Anlise de dados ............................................................................. 18
1.6
Funes matriciais........................................................................... 20
1.7
Polinmios e processamento de sinais............................................ 21
1.8
Funes de funes ......................................................................... 24
1.9
Grficos ........................................................................................... 28
1.10 Controles de fluxo .......................................................................... 38
1.11 Arquivos M ..................................................................................... 40
1.12 Arquivos de disco ........................................................................... 47
1.13 O depurador do Matlab ................................................................... 49

1.

Matlab bsico

Matlab um ambiente de computao tcnica de visualizao e


processamento numrico de alto desempenho. Ele integra anlise numrica,
clculo matricial, processamento de sinais, vrios aplicativos e grficos em um
ambiente amigvel onde problemas e solues so expressos como eles so
representados matematicamente sem a necessidade da programao tradicional.
O nome Matlab acrnimo de laboratrio de matrizes. Ele foi
originalmente escrito para permitir acesso fcil aos programas de clculo
matricial desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos
representavam o estado da arte em programas de clculo matricial.
Matlab tambm contempla uma famlia de aplicativos especficos
chamados toolboxes na forma de colees de funes Matlab (M-files),
estendendo o ambiente Matlab na soluo de problemas particulares. Entre
outros, temos os seguintes toolboxes: Processamento de Sinais; Controle
Robusto; Identificao de Sistemas; Redes Neurais; Otimizao e etc.
Provavelmente a caracterstica mais importante do Matlab sua
ampliabilidade. Isto permite que qualquer um possa criar uma toolbox.
Aplicativos matemticos complexos so facilmente desenvolvidos em poucas
linhas no ambiente Matlab sem a necessidade de programao de uma nica
linha de cdigo C ou outro cdigo de baixo nvel.

1.1

Introduo

O Matlab trabalha essencialmente com um tipo de objeto: matriz


retangular numrica (real ou complexa). Em algumas situaes existe
significado especial agregado s matrizes de dimenso 1 (escalares) e matrizes
com uma s linha ou coluna (vetores). A linguagem Matlab no usa declarao
preliminar ou dimensionamento de variveis. Isso feito de forma automtica.
Matrizes podem ser adicionadas no ambiente de vrias formas, contudo a
forma mais simples para matrizes pequenas entrando com a lista dos
elementos, seguindo a seguinte conveno:

Tutorial do Matlab

Separe os elementos com espaos ou vrgulas.


Delimite os elementos com colchetes [ ].
Use ; (ponto-e-vrgula) para indicar o final da linha.

Exemplo:

A = [ 1 2 3; 4 5 6; 7 8 9 ]

Resulta:
A=
1
4
7

2
5
8

3
6
9

Elementos de uma matriz podem ser quaisquer expresses Matlab. Por exemplo:

x = [ -1.3

sqrt(3)

(1+2+3)*4/5 ]

-1.3000

1.7321

Resulta:
x=
4.8000

Elementos individuais podem ser referenciados pelo seu ndice (linha,coluna).


Veja o exemplo a seguir:

x(5) = abs(x(1))

Resulta:
x=
-1.3000

1.7321

4.8000

1.3000

Ao atribuir um valor numrico x(5), automaticamente x(4) criado com valor


nulo. Voc pode construir matrizes maiores usando matrizes menores como seus
elementos. Por exemplo, vamos adicionar uma linha matriz A:

r = [ 10 11 12 ];
A = [ A; r ]

Tutorial do Matlab
Isto resulta em:

A=
1
4
7
10

2
5
8
11

3
6
9
12

Voc pode extrair sub-matrizes de uma matriz maior usando : (dois pontos).
Por exemplo:

A = A( 1:3 , : );

Remove as trs primeiras linhas e todas as colunas da matriz atual A e coloca o


resultado em A.

A=
1
4
7

2
5
8

3
6
9

Variveis e declaraes do Matlab


Declaraes no Matlab so frequentemente feitas da seguinte forma:

varivel = expresso

ou simplesmente,

expresso

Quando o nome da varivel omitido, o nome ans usado como varivel


default.

Tutorial do Matlab

Uma definio normalmente termina com ENTER. Se o ltimo caractere


um ponto-e-vrgula, ele suprime a apresentao no vdeo, embora faa a
atribuio da mesma forma. Isto especialmente importante nas situaes que o
resultado muito grande, tal como uma matriz de 10 linhas e 10 colunas.
Se a expresso muito grande e no cabe em uma linha, use (...) para
continuar a definio na linha seguinte. Exemplo:

s = 1 - 1/2 + 1/3 - 1/4 + 1/5 -1/6 + 1/7 ...


- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

Voc pode formar uma varivel ou nome de funo com uma letra
seguida de qualquer quantidade de letras (ou underscore). O Matlab diferencia
letras maisculas de minsculas e usa somente os primeiros 19 caracteres do
nome.

Obtendo informao da rea de trabalho (workspace)


Para listar as variveis ativas use o comando who. Para obter mais
informaes sobre as variveis como: nome, tamanho, nmero de elementos,
etc., use o comando whos.

O utilitrio de HELP
O comando help produz informaes resumidas sobre funes
especficas ou sobre tpicos do Matlab. Para listar um grupo de funes, digite
help seguido do nome do grupo de funes. Exemplo:

help matfun

Para obter auxlio sobre uma funo especfica digite help e o nome da
funo. Exemplo:

Tutorial do Matlab
help inv

Para localizar palavras-chaves em todos os arquivos do Matlab, use o


comando lookfor. Exemplo:

lookfor inverse
invhilb
ipermute
acos
acosd
acosh

- Inverse Hilbert matrix.


- Inverse permute array dimensions.
- Inverse cosine, result in radians.
- Inverse cosine, result in degrees.
- Inverse hyperbolic cosine.ACSCH

Salvando e saindo

Para sair do Matlab digite exit. Encerrando uma seo do Matlab, apagase todas as variveis da rea de trabalho (workspace). Se for necessrio, salve
suas variveis digitando save. Este comando salvar todas as variveis em um
arquivo chamado matlab.mat. Para recuperar as variveis use o comando load.
Voc tambm pode salvar somente algumas variveis e usar o nome de um
arquivo qualquer. O exemplo a seguir salva as variveis x, y e z no arquivo
temp.mat.

save temp x y z

Nmeros e expresses aritmticas


O Matlab usa notao convencional com potncia de dez ou unidade
complexa como sufixo:
-4.534i
1.760217e-11

O Matlab usa 16 dgitos significativos e expresses aritmticas so


calculadas com a seguinte prioridade, de cima para baixo

potenciao

Tutorial do Matlab
\
/
*
+

diviso esquerda
diviso direita
multiplicao
subtrao
adio

Algumas funes internas retornam valores especiais. A funo pi retorna


o valor de , a funo inf retorna , etc. O Matlab dispes das funes
matemticas elementares normalmente encontradas em calculadores cientficas.
Essas funes incluem, por exemplo: abs, sqrt, log, sin. Se uma operao
resultar em infinito isso no implica erro, simplesmente aquela varivel ter o
valor infinito. O mesmo ocorre para operaes invlidas como / ou 0/0. O
resultado NaN (Not a Number).

Formato de sada
Para alterar a formatao do nmero a ser apresentado na tela, utilize o
comando format. Exemplos:

x = [ 4/3 1.2345e-6 ]
format short
1.3333

0.0000

format short e
1.3333e+00

1.2345e-06

Funes
Grande parte do poder do Matlab vem do enorme conjunto de funes.
Algumas delas so internas ao processador Matlab e outras so disponveis
como bibliotecas externas na forma de M-files. O conjunto de funes aplicadas
a uma rea especfica denominado toolbox. Cada usurio pode criar suas
prprias funes que se comportam como se fossem funes internas. As sees
adiante discutem cada uma das diferentes categorias de funes analticas do
Matlab bsico.

Tutorial do Matlab
possvel combinar funes de vrias formas. Exemplo:

x = sqrt( log(z) )

Algumas funes usam dois ou mais argumentos, e cada argumento pode


ser uma expresso. Exemplo:

angulo = atan2(y,3*x)

Existem funes que retornam dois ou mais valores. Nestes casos, os


valores de sada devem estar entre colchetes [ ] e separados por vrgula.
Exemplo:

[ V, D ] = eig( A )

A funo eig calcula os autovetores e os autovalores de A,


respectivamente.
1.1.1 Operaes matriciais
Transposta de uma matriz
O caractere ' (apstrofe) denota transposta de uma matriz. Se z for
complexo, z' o transposto conjugado complexo de z. Exemplo:

A = [ 1 2; 3 4 ]
A=
1
2
3
4
B = A'
B=
1
2

3
4

Adicionando e subtraindo matrizes

Tutorial do Matlab

Os smbolos + e - denotam adio e subtrao de matrizes. Portanto, a


operao definida se as matrizes tm a mesma dimenso. Exemplo:

C=A+B
C=
2
5

5
8

A adio e a subtrao so definidas tambm para o caso em que um dos


operandos um escalar. Exemplo:

D=C-2
D=
0
3

3
6

Multiplicao de matrizes
O smbolo * denota multiplicao de matrizes e vlido sempre que
dimenses internas das duas forem iguais. Exemplo:

E=A*B
E=
5
11

11
25

Naturalmente, um escalar (matriz de dimenso 1) pode multiplicar ou ser


multiplicado por qualquer matriz. Exemplo:

F = 2*E
F=
10
22

22
50

Diviso de matrizes
Existem dois smbolos de diviso de matrizes: / e \. Os significados so:

10

Tutorial do Matlab
X = A\B soluo do sistema A*X = B
X = B/A soluo do sistema X*A = B

Funes elementares e transcendentais


O Matlab considera expresses como exp(A) e sqrt(A) como operao
sobre cada um dos elementos de um vetor (linha ou coluna). Existem funes
para calculo de funes transcendentais de matrizes, quando essas so
quadradas. Exemplos:

expm
logm
sqrtm

exponencial de uma matriz


logaritmo de uma matriz
raiz quadrada de uma matriz

Outras funes elementares sobre matrizes incluem:

poly
det
trace

polinmio caracterstico
determinante
trao

1.1.2 Operaes em Array


Refere-se s operaes com array as operaes aritmticas realizadas
elemento a elemento ao invs da operao matricial algbrica usual definida
pelos smbolos * \ / ^ e '. Para indicar que a operao elemento-a-elemento usase um ponto (.) antes do smbolo da operao.
Somando e subtraindo Arrays
Para a adio e subtrao, as operaes de arrays e as de matrizes so as
mesmas. Neste caso + e - podem ser usados sem o ponto.
Multiplicando e dividindo Arrays

11

Tutorial do Matlab

O smbolo .* denota multiplicao elemento-a-elemento. Se A e B tm


mesma dimenso, ento A.*B resulta em array cujos elementos so o produto
dos elementos individuais de A e de B. Exemplo:

x = [1 2 3]; y = [4 5 6];
z = x.*y
z=
4
10
18

A expresso A./B e A.\B resulta no quociente de cada elemento. Exemplo:

z = x.\y
z=
4.0000

2.5000

2.000

Usando potenciao com Arrays


O smbolo .^ denota potenciao elemento-a-elemento. Exemplo:

z = x.^y
z=
1

32

729

Operadores relacionais
Para comparar matrizes de dimenses idnticas, existem operadores
relacionais:

<
<=
>
>=
==
~=

menor
menor ou igual
maior
maior ou igual
igual
diferente

Tutorial do Matlab

12

O Matlab compara os pares de elementos correspondentes. O resultado


uma matriz de "uns" e "zeros", onde "um" representa "verdadeiro" e "zero"
representa "falso". Exemplo:

2 + 2 ~= 4
ans =
0

O exemplo abaixo, ilustra como encontrar os elementos da matriz A que


so divisveis por 3:

A = [8 1 6; 3 5 7; 4 9 2];
G = rem(A,3);
P = (G == 0)
P=
0
0
1
1
0
0
0
1
0

A funo rem(A,3) retorna a matriz dos restos da diviso por 3. Cada um


dos elementos de G informa se a operao relacional falsa (0) ou verdadeira
(1).
A funo find muito usada em conjunto com operadores relacionais. O
exemplo abaixo ilustra como localizar todos os elementos de Y que so maiores
que 3 e substitu-los por 10.

Y = [1 2 3 4 5 6 7 8 9];
i = find(Y > 3.0);
Y(i) = 10*ones(size(i));

Operadores lgicos
Os operadores &, |, e ~ so os operadores lgicos "e", "ou" e "no"
respectivamente. As funes any e all so muito utilizadas em conjunto com
operadores lgicos. A funo any(x) retorna "1" se qualquer elemento de x for
no nulo e retorna "0" caso contrrio. A funo all(x) retorna "1" somente se

13

Tutorial do Matlab

todos os elementos de x so no nulos. Essas funes so particularmente teis


na declarao de um comando if.

if all(A < 0.5)


faa alguma coisa
end

Funes matemticas
Um conjunto de funes matemticas elementares so aplicveis
elemento-a-elemento. Exemplo:

A = [ -1 2 -3; 4 -5 6];
B = abs(A)
B=
1
2
4
5

3
6

1.1.3 Manipulao matricial e vetorial


A capacidade de indexao do Matlab permite manipulao de linhas e
colunas, elementos individuais e submatrizes de matrizes. Os vetores so o
ponto central da indexao e eles so gerados com o uso de : (dois pontos).
Gerando vetores
A declarao abaixo ilustra a criao de um vetor usando (:) dois pontos:

x = 1:5
x=
1

Voc pode tambm criar o vetor com incrementos diferentes da unidade.


No exemplo a seguir o passo de /4.

14

Tutorial do Matlab

y = 0 : pi/4 : pi
y=
0.0000 0.7854 1.5708 2.3562 3.1416
z = 6: -1 : 1
z=
6 5 4 3 2 1

A uso de (:) permite a criao rpida de tabelas como ilustrado a seguir:

x = (0 : 0.2 : 3)';
y = exp(-x) .* sin(x);
[x y]
ans =
0
0
0.2000 0.1627
0.4000 0.2610
0.6000 0.3099
0.8000 0.3223
1.0000 0.3096
1.2000 0.2807
1.4000 0.2430
1.6000 0.2018
1.8000 0.1610
2.0000 0.1231
2.2000 0.0896
2.4000 0.0613
2.6000 0.0383
2.8000 0.0204
3.0000 0.0070

Existem outras funes para a gerao de vetores tal como logspace que
gera um vetor espaado logaritmicamente:

w = logspace(-1,1,5)
w=
0.1000 0.3162

Indexando

1.0000

3.1623 10.0000

15

Tutorial do Matlab

Elementos individuais de matrizes podem ser referenciados inserindo


seus ndices de linha e coluna entre parnteses. Se uma expresso for usada
como ndice, o ndice aproximado para o inteiro mais prximo.

A = [1 2 3; 4 5 6; 7 8 9];
A(3,3) = A(1,3) + A(3,1)
A=
1 2 3
4 5 6
7 8 10

Usando (:) dois pontos, podemos indexar todas as linhas ou colunas ou


uma parte:

A(:,1)
A=
1
4
7
A(2:3,1:2)
A=
4
7

5
8

O exemplo a seguir mostra como fazer referncia explcita a algumas


linhas ou colunas. Colocam-se os nmeros das linhas e colunas dentro de
colchetes:

A( [1 3], [1 3] )
A=
1 3
7 10

Um outro uso para os dois pontos (:) no empilhamento das colunas de


uma matriz qualquer. No caso de vetores, obteremos sempre o vetor coluna:

A = [1 2; 3 4; 5 6];
B = A(:)
B=

16

Tutorial do Matlab
1
2
3
4
5
6

Usando vetores de 0 e 1 na indexao


Voc pode usar vetores de "uns", usualmente criados a partir de
operadores relacionais no referenciamento de submatrizes. Suponha que A
uma matriz de dimenso m-por-n e L um vetor linha de "zeros" e "uns" de
dimenso m. Ento,

A(L,:)

especifica as linhas de A cujos elementos de L so no nulos. Ou seja, os uns de


L apontam para as linhas de A. O exemplo a seguir mostra como extrair de X as
linhas cuja terceira coluna maior ou igual a 100.

L = X(:,3) > 100;


Y = X(L,:);

Matrizes vazias
A declarao,

X=[]

atribui a matriz de dimenso zero-por-zero X, sendo possvel usar a varivel X


em clculos. Criar a matriz X vazia diferente do que apagar a varivel X com o
comando clear X. Com o uso de matrizes vazias possvel remover linhas e
colunas de uma matriz, como mostra o exemplo a seguir que apaga as colunas 2
e 4 da matriz A:

A( :, [2 4] ) = [ ]

Tutorial do Matlab

17

Matrizes especiais
Existe uma coleo de funes que geram matrizes que so normalmente
encontradas nos problemas de lgebra linear e processamento de sinais.
Exemplos:

compan gera a matriz a partir do polinmio caracterstico


diag matriz diagonal
pascal constri o tringulo de Pascal
zeros matriz de "zeros"
ones matriz de "uns"
eye matriz identidade
logspace vetores espaados logaritmicamente
linspace vetores espaados linearmente
rand elementos randmicos uniformemente distribudos
randn elementos randmicos normalmente distribudos
etc ...

Construindo matrizes a partir de matrizes


possvel formar matrizes maiores a partir de matrizes menores,
envolvendo as matrizes menores entre colchetes. Por exemplo, se A uma
matriz quadrada,

C = [ A A'; ones(size(A)) A.^2 ]

cria a matriz C com o dobro do tamanho de A. Note que na construo de


matrizes usando matrizes, as dimenses das matrizes menores devem ser
compatveis ou ento aparecer uma mensagem de erro.
Manipulando matrizes
Vrias funes esto disponveis para a manipulao matricial como:
rot90 (rotao anti-horria de 90), tril (parte triangular superior), triu (parte
triangular inferior), reshape (alterao da dimenso), etc.

18

Tutorial do Matlab
1.1.4 Anlise de dados

Esta seo apresenta uma introduo anlise de dados usando o Matlab.


Tcnicas mais poderosas esto disponveis usando funes de lgebra linear e
funes de processamento de sinais na seo 1.1.6 (polinmios e processamento
de sinais).
Conveno
Por conveno, as diferentes variveis em um conjunto de dados so
colocadas em colunas, permitindo observao vertical dos dados atravs das
linhas. Portanto, um conjunto de dados de 50 amostras de 13 variveis
armazenado em uma matriz de dimenso 50-por-13.
O conjunto de dados armazenados na matriz count ser usado para ilustrar
o uso de algumas funes

count = [
11
43
38
61
12

57
178
163
420
59

291
1011
1095
2407
287 ]

Para esse exemplo temos 5 observaes para 3 variveis. Isso pode ser
obtido como segue:

[n,p] = size(count)
n=
5
p=
3

Um grupo de funes (abaixo) confere a capacidade de anlise de dados


bsica:
max
- mximo valor
min
- mnimo valor
mean
- valor mdio
median
- mediana

19

Tutorial do Matlab

std
sort
sum
prod
cumsum
cumprod
diff
corrcoef
cov
var

- desvio padro
- ordenao
- soma dos elementos
- produto dos elementos
- soma cumulativa dos elementos
- Produto cumulativos dos elementos
- Aproximao da derivada
- Coeficientes de correlao
- Matriz de covarincia
- Varincia

Para argumentos vetoriais no faz diferena se o vetor linha ou coluna.


Para arrays as funes so orientadas por colunas.
Continuando com o exemplo anterior, as declaraes abaixo

mx = max(count);
mu = mean(count);
sigma = std(count);

resultam em:
mx =
61

420

2407

mu =
1.0e+003 *
0.0330

0.1754

1.0182

sigma =
21.4126 147.9503 865.7639

Ajuste de curvas
Uma das alternativas possveis no Matlab para encontrarmos os
coeficientes de p(x) a partir de dados tabelados por meio da funo polyfit,
onde n o grau do polinmio.

20

Tutorial do Matlab

px c1x d c2x d 1 cn
A sintaxe usada a seguinte, onde x a abscissa, p o valor da funo para
cada x(i) e n o grau do polinmio.

c = polifit(x,p,n)

1.1.5 Funes matriciais


Autovalores e autovetores
Se A uma matriz n-por-n, os n nmeros que satisfazem a equao
Ax = x, so os autovalores de A. Eles so encontrados usando

eig(A)

Se o comando for usado com dois parmetros de sada, obteremos os


autovalores em D e os autovetores em X:

[X,D] = eig(A)

Norma, posto e condicionamento


As funes Matlab que calculam a norma, posto e nmero de
condicionamento de uma matriz so:

cond
norm
rank
rcond

- nmero de condicionamento usando norma-2


- norma-1, norma-2, norma-F e norma-
- posto da matriz
- estimativa do condicionamento

21

Tutorial do Matlab
1.1.6 Polinmios e processamento de sinais

O Matlab possui funes para manipulao polinomial e para o


processamento digital de sinais. Essas funes operam primordialmente com
vetores.
Representao de polinmios
O Matlab representa polinmios como vetores linha contendo os
coeficientes ordenados em ordem decrescente dos expoentes. Por exemplo, o
polinmio caracterstico de

A=
1
4
7

2
5
8

3
6
0

calculado com

p = poly(A)
p=
1 -6 -72 -27

Esta a representao Matlab do polinmio s3 6s2 72s 27. As razes dessa


equao so

r = roots(p)
r=
12.1229
-5.7345
-0.3884

Essas razes so os mesmos que os autovalores da matriz A. Voc pode


reconstruir o polinmio original com a funo poly

p2 = poly(r)
p2 =
1 -6 -72 -27

22

Tutorial do Matlab

Considere os polinmios a(s) s2 2s 3 e b(s) 4s2 5s 6 . O produto


dos polinmios a convoluo dos seus coeficientes

a = [1 2 3]; b = [4 5 6];
c = conv(a,b)
c=
4 13 28 27 18

Voc pode utilizar a convoluo inversa para dividir dois polinmios, e


no caso do exemplo, obter b novamente.

[q,r] = deconv(c,a)
q=
4 5 6
r=
0 0 0 0 0

A lista de funes de polinmios inclui:

poly
roots
polyval
polyvalm
conv
deconv
residue
polyder
polyfit

- polinmio caracterstico
- razes de um polinmio
- clculo do valor numrico do polinmio
- clculo do polinmio de matrizes
- multiplicao (convoluo)
- diviso (deconvoluo)
- expanso em fraes parciais
- derivada do polinmio
- ajuste polinomial de curva

Processamento de sinais
Vetores so usados para armazenar sinais de dados amostrados, ou
sequncias, para o processamento dos sinais. Para sistemas com mltiplas
entradas, cada linha da matriz corresponde a uma amostra. O Matlab bsico
contm as funes a seguir, enquanto que o Signal Processing Toolbox contm
muitas funes adicionais.

23

Tutorial do Matlab

abs
angle
conv
deconv
fft
ifft
fftshift
fft2
ifft2
fftshift
conv2

- magnitude complexa
- ngulo de fase
- convoluo
- deconvoluo
- transformada rpida de Fourier
- transformada rpida inversa de Fourier
- alterna quadrantes de matrizes
- FFT de duas dimenses
- FFT inversa de duas dimenses
- rearranja os resultados da FFT
- convoluo de duas dimenses

Filtragem de dados
A funo,

y = filter(b,a,x)

filtra os dados do vetor x com o filtro descrito pelos vetores a e b, criando o


dado y filtrado.
x

H(z)

A estrutura do filtro dada a seguir pela sua funo de transferncia de


tempo discreta
H ( z)

Y ( z ) b(1) b(2) z 1 b(nb) z ( nb1)

X ( z)
1 a(2) z 1 a(na) z ( na1)

A funo freqz do Signal Processing Toolbox calcula a resposta em


frequncia de filtros digitais. Alm dessa, exemplificada abaixo, esse Toolbox
contm inmeras funes para o projeto de filtros digitais.

[h,w] = freqz(b,a,n);
mag = abs(h);
fase = angle(h);

24

Tutorial do Matlab
semilogy(w,mag)
plot(w,fase)

1.1.7 Funes de funes


A classe de funes Matlab para clculo que no sobre matrizes
numricas, mais sim com funes matemticas aqui designada por funes de
funes (funfun) e incluem:

Integrao Numrica
Equaes no lineares e Otimizao
Soluo de Equaes Diferenciais
etc

Para o uso das funes de funes, usual representar as funfun atravs


de arquivos-M (M-files). Por exemplo, a funo
f (x )

1
1

6
2
(x 0,3) 0,01 (x 0,9)2 0,04

foi codificada em um arquivo com extenso .m, por exemplo chamado humps.m,
cuja listagem mostrada a seguir:
% listagem do arquivo humps.m
function y = humps(x)
y = 1/.((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

O grfico dessa funo obtido como segue

x = -1:.01:2;
plot(x,humps(x))

25

Tutorial do Matlab
100

80

60

40

20

-20
-1

-0.5

0.5

1.5

Integrao numrica
Uma funo, tal como humps, pode ser integrada numericamente pelo
processo chamado quadratura que uma funfun. Exemplo:

q = quad('humps',0,1)
q=
29.8583

O Matlab oferece duas funes para o processo de quadratura:

quad - regra de Simpson adaptativa


quad8 - regra de Newton adaptativa

Note que o primeiro argumento da funo quad uma string que contm o
nome de uma funo. Isso mostra porque essa funo chamada funo de
funo ( uma funo que opera com outras funes). Os outros dois
argumentos so os limites de integrao.
Equaes no lineares e funes de otimizao

26

Tutorial do Matlab

No Matlab bsico encontramos algumas funes para a manipulao de


equaes no lineares e para otimizaes. Exemplos:

fminsearch
fzero

- mnimo de uma funo multivarivel


- zero de uma funo de uma varivel

Continuando com o exemplo definido pela funo humps.m, a localizao


do mnimo da funo na regio de 0.5 a 1 calculada com fminsearch:

xm = fminsearch('humps',0.5, 1)
xm =
0.6370

e o seu valor no mnimo

y = humps(xm)
y=
11.2528

A localizao do zero da funo que est prximo de x = 0 e de x = 1 ,

xz1 = fzero('humps',0)
xz1 =
-0.1316
xz2 = fzero('humps',1)
xz2 =
1.2995

No Optimization Toolbox temos inmeras outras funes como, por


exemplo,

fgoalattain
fmincon
fminsearch
fsolve
fzero
fminimax

- consecuo de metas
- minimizao com restries
- minimizao sem restries
- soluo de equaes no lineares
- busca de zeros
- soluo do problema minimax

27

Tutorial do Matlab

linprog
quadprog

- programao linear
- programao quadrtica

Equaes diferenciais
Duas das funes disponveis para a soluo de equaes diferenciais
ordinrias so:

ode23
ode45

- mtodo Runge-Kutta de ordem baixa


- mtodo Runge-Kutta de ordem mdia

Considere a equao diferencial de segunda ordem conhecida como


equao de Van der Pol.

x (x 2 1)x x 0
Esta equao pode ser escrita como um sistema de equaes diferenciais de
primeira ordem

x1 x1 (1 x22 ) x2
x 2 x1
O primeiro passo para simular este sistema criar um arquivo que contem este
sistema de equaes diferenciais. Chamaremos este arquivo de vdpol.m

function xponto = vdpol(t,x)


xponto(1,1) = x(1).*(1-x(2).^2)-x(2);
xponto(2,1) = x(1);

Para simular a equao diferencial no intervalo 0 t 20, use a funo ode23.

t0 = 0; tf = 20;
x0 = [0 0.25]'; % condicoes iniciais
[t,x] = ode23( 'vdpol', [t0 tf], x0 );
plot(t,x)

28

Tutorial do Matlab
3

-1

-2

-3
0

10

15

20

Para aqueles que trabalham com equaes diferenciais recomenda-se


tambm o SIMULINK que uma extenso grfica do Matlab para a simulao
de equaes diferenciais.
1.1.8 Grficos
O sistema grfico do Matlab oferece uma variedade de tcnicas
sofisticadas para representar e visualizar dados. So funes grficas em 2-D e
3-D.
Grficos 2-D
O Matlab fornece uma variedade de funes para a visualizao de dados
em duas dimenses (2-D).
Funes grficas elementares
A lista abaixo sumariza as funes grficas bsicas. Elas diferem apenas
na escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalas
so ajustadas automaticamente para acomodar os dados de entrada.

plot
loglog
semilogx
semilogy

- grfico de vetores ou de colunas de matrizes


- escala logartmica nos dois eixos
- escala logartmica no eixo x e linear em y
- escala logartmica no eixo y e linear em x

29

Tutorial do Matlab

title
xlabel
ylabel
text
gtext
grid

- adiciona um ttulo ao grfico


- adiciona um nome ao eixo x
- adiciona um nome ao eixo y
- mostra um texto na posio especificada
- coloca o texto no grfico usando o mouse
- coloca linhas de grid

Criando um grfico
Se y um vetor, plot(y) produz um grfico linear dos elementos de y em
funo do indexador de y. Se voc especificar dois vetores como argumentos,
plot(x,y) produz um grfico de y versus x. Voc pode tambm especificar vrios
conjuntos de dados e definir o estilo da linha e sua cor para cada conjunto de
dados, tudo isso em um mesmo comando:

t = 0:pi/100:2*pi;
x = sin(t);
y1 = sin(t + 0.25);
y2 = sin(t + 0.5);
plot(x,y1,'r-',x,y2,'g--')
title('Defasagem')
xlabel('x=sin(t)')
ylabel('y=sin(t+)')

30

Tutorial do Matlab

Defasagem
1
0.8
0.6
0.4
0.2
y=sin(t+)

0
-0.2
-0.4
-0.6
-0.8
-1
-1

-0.5

0.5

x=sin(t)

Estilos de linhas, marcadores e cores


Tal como se mostrou no exemplo anterior, voc pode passar um caractere
como um argumento funo plot para especificar um dos vrios estilos de
linha, smbolos e cores. Na declarao plot(X,Y,S), S uma string de 1, 2 ou 3
caracteres (delimitados por apstrofes) com as funes definidas pela tabela a
seguir. Se voc no especificar uma cor, ele usa as cores da tabela
automaticamente.

31

Tutorial do Matlab
Smbolo
y
m
c
r
g
b
w
k

Cor
amarela
magenta
ciano
vermelha
verde
azul
branca
preta

Smbolo
.
o
x
+
*
:
-.
-s
d
v
^
<
>
P
h

Linha
ponto
crculo
marca x
marca +
marca *
slida
pontilhada
trao-ponto
tracejada
quadrado
diamante
tringulo (p/ baixo)
tringulo (p/ cima)
tringulo (p/esquerda)
tringulo (p/diereita)
pentragrama
hexagrama

Adicionando linhas em um grfico existente


Voc pode adicionar outras curvas em um grfico que j foi construdo
usando o comando hold. Quando voc seleciona hold on, o Matlab no
remove as linhas atuais, ao invs disso ele adiciona as linhas atuais ao grfico
atual.
O que ele pode fazer mudar a escala dos eixos automaticamente se os novos
dados no se acomodarem dentro da escala anterior. Exemplo:

plot(x)
hold on
plot(y1,'--')
plot(y2,'-.')
hold off

32

Tutorial do Matlab
Resulta,
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0

50

100

150

200

250

Dados imaginrios e complexos


Quando os argumentos da funo plot so complexos, isto , eles tm
parte imaginria diferente de zero, a parte imaginria ignorada exceto quando
plot usado com um nico argumento. Nesta situao, o comando um
comando grfico resumido da parte real versus a parte imaginria. Portanto,
plot(z), quando z um vetor ou matriz complexa, equivalente ,
plot(real(z),imag(z)). Para ilustrar isso, o exemplo a seguir usa a distribuio dos
autovalores de uma matriz 20-por-20 randmica:

plot(eig(randn(20,20)),x)

33

Tutorial do Matlab
Distribuio de Autovalores
4

-1

-2

-3

-4
-4

-2

Exibindo grficos de matrizes


A funo plot pode ter um nico argumento, como plot(Y). Ela desenha
uma curva para cada coluna de Y. O eixo x formado pelo ndice de cada linha.
Se X e Y so matrizes, plot(X,Y) exibe o grfico das colunas de X versus colunas
de Y.

Resulta,

X = 0:pi/50:2*pi;
Y = sin(X); Z = cos(X); W = log(X);
A = [Y' Z' W'];
plot(A)

34

Tutorial do Matlab
2
1.5
1
0.5
0
-0.5
-1
-1.5
-2
-2.5
-3
0

20

40

60

80

100

120

Importando dados
Voc pode importar e exibir o grfico de dados gerados fora do Matlab.
Suponha voc tenha um arquivo chamado dados.dat contento valores de duas
funes e da varivel independente.
dados.dat
2.3
3.1
4.5
5.6
4.8
4.7
4.4
4.0
4.2

1.0
1.9
2.2
2.6
3.5
4.7
5.3
6.0
7.1

1.0
2.0
3.0
4.0
5.0
6.0
7.0
8.0
9.0

O comando load dados.dat produz uma matriz chamada dados, 9-por-3. A


seguir, mostra-se como renomear cada uma das variveis e como exibir o
grfico de cada funo separadamente.

load dados.dat
F1 = dados(:,1);
F2 = dados(:,2);
X = dados(:,3);
subplot(211), plot(X,F1)

35

Tutorial do Matlab
subplot(212), plot(X,F2)

Resulta,
6
5
4
3
2
0

10

10

8
6
4
2
0

Funes grficas especializadas em 2-D


O Matlab inclui uma variedade de funes especializadas, conforme
descrito resumidamente a seguir.

bar
compass
errorbar
feather
fplot
hist
polar
quiver
rose
stairs
fill

- grfico de barras
- grfico de ngulos com setas
- grfico de barras de erros
- grfico de ngulos
- calcula e exibe o grfico de uma funo
- cria um histograma
- grfico em coordenadas polares
- cria um grfico de um gradiente
- histograma em ngulo
- grfico similar ao de barras sem linhas internas
- desenha um polgono e preenche o interior

36

Tutorial do Matlab
Grfico de funes matemticas

Voc pode exibir o grfico de uma funo, y f (x) . A soluo pela fora
bruta calcular a funo para algumas centenas de pontos no intervalo de
interesse. Por exemplo, a funo a seguir oscila com frequncia tendendo para
infinito quando x 0,5.

x = (0:1/2000:1)';
plot(x,cos(tan(pi*x)))

Resulta,
y = c o s ( t a n ( p i* x ) )

1
0 .8
0 .6
0 .4
0 .2
0
-0 .2
-0 .4
-0 .6
-0 .8
-1
0

0 .2

0 .4

0 .6

0 .8

No exemplo, a funo exibida no intervalo [0,1]. Neste caso, a funo


fplot mais efetiva para obtermos a representao grfica da funo, pois ela
escolhe automaticamente uma quantidade maior de pontos na faixa que
necessrio maior resoluo grfica. Para usar a funo fplot, primeiro crie um
arquivo que conter a funo a ser exibida por meio de um grfico, por
exemplo, com o nome fofx.m

37

Tutorial do Matlab
function y = fofx(x)
y = cos(tan(pi*x));

Agora basta passar o nome da funo como argumento de fplot.

fplot('fofx',[0 1], 25,20,10)

Resulta,
y = cos(tan(pi*x))

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
0

0.2

0.4

0.6

0.8

Grficos 3-D
O Matlab oferece uma variedade de funes para a visualizao de dados
em 3-D, conforme sumarizado pelas funes a seguir. Contudo, no faremos um
detalhamento, visto que o assunto muito longo e pouco interessante para os
nossos objetivos.

plot3 - desenha linhas e pontos em 3-D.


contour, contour3 - grficos de contornos
pcolor - desenha uma matriz retangular de clulas cujas cores
so determinadas pelos elementos da matriz.

Tutorial do Matlab

38

image - mostra uma matriz como uma imagem mapeando os


elementos da matriz para o mapa de cores atuais.
mesh, meshc, meshz - cria uma perspectiva em 3-D dos
elementos da matriz.
fill3 - cria um polgono 3-D e preenche com uma cor slida ou
interpola cores.
zlabel - cria um label para o eixo z.
clabel - adiciona um label ao grfico de contorno.
view - determina o ponto de visualizao atual.
viewmtx - calcula uma transformao 4x4.

1.1.9 Controles de fluxo


O Matlab possui declaraes para controle de fluxo tal como aqueles
encontrados na maioria das linguagens de computador. O controle de fluxo
torna o Matlab mais do que uma calculadora cientfica, permitindo que seja
usado como uma linguagem de programao de alto nvel completa.
FOR
O Matlab possui a sua verso prpria dos loops DO ou FOR. Com isso
possvel repetir um grupo de declaraes por um nmero predeterminado de
vezes. Por exemplo,

for i = 1:n, x(i) = 0, end

impe o valor "0" para todos os primeiros n elementos de x. Se n menor que


"1", a construo ainda permitida, mas as declaraes internas ao loop no so
executadas. Se x no existe ou tem menos elementos que x, ento espaos
adicionais so alocados automaticamente.
Voc pode criar loops dentro de loops e pode fazer as declaraes
diretamente no prompt do Matlab, embora o uso de um M-file seja
recomendado nestes casos.

for i = 1:1:m

for j = 1:1:n

A(i,j) = 1/(i+j-1);

Tutorial do Matlab

39

end
end
A

A expresso do for usualmente do tipo m : i : n, onde m o valor inicial,


n o final e i o incremento, sendo que esse pode ser negativo.

WHILE
Tal como o for, a declarao while tambm para realizar um grupo de
declaraes um certo nmero de vezes. A diferena bsica que no while, o
controle do loop feito por uma condio lgica. Para ilustrar, vamos resolver
um problema: Qual o primeiro inteiro n para o qual n! (fatorial de n) um
nmero de 100 dgitos ?

n = 1;
while prod(1:n) < 1.e100, n = n+1; end
n

A funo prod realiza os produtos dos elementos do argumento. Logo, prod(1:n)


o fatorial de n.
Declaraes IF e BREAK
Os exemplos a seguir ilustram a utilizao da declarao if. O primeiro
exemplo mostra como um clculo pode ser dividido em trs casos dependendo
do sinal e da paridade de n.

if n < 0
A = -1;
elseif rem(n,2) == 0
A=0
else
A=1
end

O segundo exemplo envolve um problema no resolvido da teoria dos nmeros:

Tutorial do Matlab

40

"Pegue um nmero inteiro. Se ele for par, divida por dois; se for impar,
multiplique ele por 3 e some 1. Repita esse processo at que o inteiro seja igual
a um. O problema saber se existe algum inteiro para o qual o processo nunca
termina".
Este programa Matlab ilustra as declaraes while e if. Tambm mostrado o
uso da funo input que interrompe a execuo para a entrada de dados e da
declarao break que permite interromper um loop.

% Problema classico "3n+1" da teoria dos nmeros


while 1
n = input('Entre com n [negativo aborta] = ');
if n <= 0, break, end
while n > 1
if rem(n,2) == 0
n = n/2
else
n = 3*n+1
end
end
end

1.1.10 Arquivos M
A maneira mais simples de se usar o Matlab no modo de comando.
Quando voc entra com uma linha de comando, ele processa e imediatamente
mostra o resultado. O Matlab tambm pode executar uma sequncia de
comandos que est armazenada em um arquivo. Estes dois modos formam um
ambiente interpretativo. Os arquivos que contm declaraes Matlab so
chamados M-files porque usam a extenso .m. Por exemplo, o arquivo
bessel.m contm declaraes Matlab para o clculo de funes Bessel.
Um M-file consiste de uma sequncia de declaraes Matlab normais,
podendo incluir referencias a outros M-files. Um M-file pode chamar ele
prprio de forma recursiva. Voc pode criar um M-file usando um editor de
texto tal como o Notepad do Windows, ou outro qualquer. Dois tipos de Mfiles podem ser usadas: lotes (scripts) e funes (functions). Arquivos scripts
automatizam uma sequncia de comandos. Arquivos de funo permitem criar

Tutorial do Matlab

41

novas funes s existentes. Ambos, scripts e funes so arquivos texto tipo


ASCII.
Arquivos Scripts
O exemplo a seguir ilustra como calcular os primeiros 16 nmeros de
Fibonacci usando um arquivo script. Suponha que o nome do arquivo seja
fibno.m. Digitando fibno (sem a extenso) no prompt do Matlab, faz com os
comandos contidos no arquivo sejam executados. Note que depois da execuo
do programa as variveis f e i permanecem na rea de trabalho (workspace) do
Matlab. Verifique isso com who. Isso acontece porque os scripts operam
globalmente com dados no workspace. Os demos fornecidos junto como Matlab
so bons exemplos de como usar scripts para realizar tarefas mais complexas.
Para chamar os demos digite demo no prompt do Matlab.

% M-file (script) para calcular nmeros de Fibonacci


f = [ 1 1]; i = 1;
while f(i) + f(i+1) < 1000
f(i+2) = f(i) + f(i+1);
i = i + 1;
end
plot(f)

Arquivos de funes
Um M-file que contm a palavra function no incio da primeira linha um
arquivo de funo. Uma funo difere de um script no fato de que argumentos
podem ser passados; variveis definidas e manipuladas no arquivo so locais
funo e no operam globalmente no workspace. A funo listada seguir tem
o nome media1.m.

Tutorial do Matlab

42

function y = media1(x)
% calculo da media
% soma / m
% inico do programa
[m,n] = size(x);
if m == 1
m = n;
end
y = sum(x) / m;

Por exemplo, se z um vetor de inteiros de 1 99, sua mdia pode ser calculada
como segue:

z = 1:99;
media1(z)
ans =
50

A seguir, descreve-se alguns detalhes de mean.m:

A primeira linha declara o nome da funo, os argumentos de


entrada e os de sada. Sem esta linha, o arquivo um script ao
invs de funo;
O smbolo % indica que o resto da linha um comentrio e
deve ser ignorado;
As primeiras linhas documentam um M-file e so mostradas
quando pedimos help media1;
As variveis m, n e y so locais funo e no existem no
workspace depois que do trmino da funo. (Caso a varivel
j existisse antes da chamada media1, ela continuaria existindo
depois e inalterada);
No foi necessrio colocar os inteiros de 1 a 99 em uma
varivel chamada x. De fato, ns usamos media1 com uma
varivel chamada z. O vetor z foi passado ou copiado dentro da
funo onde ela tornou-se uma varivel local chamada x.

Voc pode criar uma funo um pouco mais complexa que media1,
chamada stat, que tambm calcula o desvio padro. Neste exemplo ilustramos o
uso de mltiplos argumentos de sada.

Tutorial do Matlab

43

function [mean,stdev] = stat(x)


[m,n] = size(x);
if m == 1
m = n;
end
mean = sum(x) / m;
stdev = sqrt(sum(x.^2)/m - mean.^2);

Uma funo que calcula o posto de uma matriz usa mltiplos argumentos
de entrada: No caso geral teramos mltiplos argumentos de entrada e de sada.

function r = rank(x,tol)
% rank (posto em Portugues) da matrix
s = svd(x);
if (nargin == 1)
tol = max(size(x)) * s(1) * eps;
end
r = sum(s > tol);

Este exemplo tambm mostra o uso da varivel permanente nargin para


encontrar o nmero de argumentos de entrada. A varivel nargout, embora no
usada neste exemplo, contm o nmero de argumentos de sada.
Criando um Help para seus arquivos pessoais
voc pode criar um help online para os seus M-files pessoais entrando o
texto em uma ou mais linhas de comentrio, comeando sempre pela segunda
linha do arquivo. Por exemplo, o arquivo da funo angle,

function p = angle(h)
% ANGLE Phase angle.
% ANGLE(H) returns the phase angles, in radians, of a
% matrix with complex elements.
%
% See also ABS, UNWRAP.
p = atan2(imag(h), real(h));

tm 5 linhas contguas de comentrio a partir da segunda linha. Quando


digitamos help angle, todo esse bloco mostrado. O mecanismo de help ignora

Tutorial do Matlab

44

linhas de comentrio que aparecem mais a frente, depois de uma declarao ou


mesmo uma linha em branco.
Informaes teis
Quando voc chama uma funo pela primeira vez, o Matlab compila a
funo e a coloca na memria. Ela estar ento disponvel para os usos
subsequentes sem a necessidade de ser compilada. Permanecer na memria at
o final da seo ou at que voc fique com pouca memria, acarretando na sua
eliminao automtica.
O comando what mostra uma listagem dos M-files no diretrio atual do
disco. O comando type lista os M-files.
De uma maneira geral, quando voc digita um nome de algo no Matlab,
por exemplo, whoopie, o interpretador do Matlab executa os seguintes passos:

1.
2.
3.
4.

Procura por whoopie como varivel;


Verifica se whoopie uma funo interna;
Procura um o arquivo whoopie.m no diretrio atual;
Procura um o arquivo whoopie.m nos diretrios especificados
pelo path do Matlab.

INPUT, KEYBOARD, PAUSE


A funo input permite obter dados do usurio. por exemplo,

n = input('Entre com o valor de n = ')

interrompe a execuo, mostra a frase na tela, espera, e ento atribui o valor ou


expresso digitada para a varivel n.
Similar input a funo keyboard. Esta funo torna o teclado do
computador um script. Quando colocada dentro de M-files, torna gil a
depurao e permite a modificao de variveis durante a execuo.

45

Tutorial do Matlab

O comando pause interrompe a execuo at que o usurio pressiona


uma tecla qualquer. pause(n) interrompe por n segundos antes de continuar.
Variveis globais
Cada funo Matlab possui suas prprias variveis locais que so
separadas daquelas de outras funes e daquelas que esto no workspace.
Contudo, se voc declarar uma varivel como global, todas as funes e o
workspace vo enxergar a mesma varivel. Para diferenciar das demais
variveis, costuma-se identificar uma varivel global declarando-a com um
nome longo e em letras maisculas, embora isso no seja uma imposio.
Suponha que voc queira estudar o comportamento dos coeficientes e
no problema do modelo predador-vtima de Latka-Volterra.

y1 y1 y2 y1
y2 y2 y2 y1
Crie o arquivo lotka.m:

function yp = lotka(t,y)
% modelo Votka-Voltera
global ALFA BETA
yp = [y(1) - ALFA*y(1)*y(2); -y(2) + BETA*y(1)*y(2)];

Interativamente, entre como as seguintes declaraes:

global ALFA BETA


ALFA = 0.01;
BETA = 0.02;
[t,y] = ode23( 'lotka', [0 10], [1; 1] );
plot(t,y)

Uma vez que ALFA e BETA so globais voc pode alter-las interativamente e
novas solues podem ser obtidas sem ter que editar nenhum arquivo e sem
passar os valores como argumentos.
Variveis alfanumricas

Tutorial do Matlab

46

Variveis do tipo texto so introduzidas no Matlab envolvendo o texto


com quotas simples (apstrofos). Por exemplo,

s = 'Ola'
s=
Ola

O texto armazenado em um vetor, um caracter por elemento. Desejando


concatenar textos, use colchetes:

s = [s, ' Pessoal']


s=
Ola Pessoal

Valores numricos so convertidos em variveis do tipo texto via


sprintf, num2str e int2str. Exemplo,

c = 23;
title(['A temperatura ',num2str(c),' graus C'])

A funo EVAL
A funo eval usada com variveis do tipo texto para implementar
recursos de macros de texto. A funo eval(t) fora que o texto contido na
varivel t seja "resolvido". O exemplo a seguir mostra como usar o comando
load para carregar 10 arquivos sequencialmente numerados: dados1.mat,
dados2.mat, ...

fname = dados;
for i = 1:10

eval( [ 'load ', fname, int2str(i) ] )


end

A funo eval especialmente til na passagem de argumentos de


funes cujo parmetro um nome de outra funo. Um exemplo tpico o
funo fplot que passa como argumento o nome da funo a ser exibida,
exemplo:

Tutorial do Matlab

47

fplot( 'sin', [0 10] )

1.1.11 Arquivos de disco


Os comandos load e save recuperam e armazenam dados do workspace
no disco.
Manipulao de arquivos de disco
Os comandos dir, type, delete e cd servem manipulao de arquivos.
Para a maioria desses comandos devemos especificar o path, wildcards e o
drive de destino como normalmente se faz no DOS.
O comando type difere do comando type usual de uma forma importante.
Se nenhuma extenso especificada, o Matlab considera a extenso .m como
default. Portanto, esse comando normalmente usado para obtermos uma rpida
listagem de um M-file na teta do computador.
O comando diary cria um dirio (log) da sua seo Matlab na forma de
um arquivo ASCII. Todos os comandos e resultados, exceto grficos, so
automaticamente acrescentados ao arquivo de dirio.
Transferncia de dados
Voc pode introduzir dados de outros programas dentro do Matlab.
Similarmente, voc pode exportar dados do Matlab para outros programas.
Tambm possvel usar o formato que o Matlab usa para armazenar dados:
MAT-files.
Importando dados
O melhor mtodo de importar dados depende de quantos dados existem,
qual o seu formato, etc. A seguir, listamos algumas opes:

Entre com os dados como uma lista explcita dos elementos. Se


o nmero de elementos for pequeno (10-15 elementos) mais
simples digitar os dados explicitamente usando colchetes.

48

Tutorial do Matlab

Crie um M-file e escreva os dados de forma explcita usando


um editor de texto.

Carregue os dados de um arquivo ASCII.

Escreva um programa em C ou FORTRAN para converter seus


dados no formato dos MAT-files e ento use o comando load.

Importe os dados do Excel.

Exportando dados do Matlab


Para exportar dados tambm existem vrias opes, das quais algumas
so listadas a seguir:

Para matrizes pequenas use o comando diary para criar uma


arquivo de dirio e ento liste as variveis neste arquivo. Voc
pode, mais tarde, usar um editor de texto para manipular os
dados.

Salve os dados em um formato ASCII usando o comando save


com a opo -ascii. Por exemplo,
A = rand(4,3);
save temp.dat A -ascii

cria um arquivo ASCII chamado temp.dat

Salve os dados como MAT-files usando o comando save e


ento escreva um programa em C ou FORTRAN para
reformatar os dados conforme necessrio para a aplicao.

Exporte os dados para o Execl.

Tutorial do Matlab

49

1.1.12 O depurador do Matlab


Embora o Matlab seja uma linguagem menos complexa que outras
linguagens de programao, ele tem sua sintaxe prpria e voc pode precisar
corrigir alguns erros. O Matlab encontra erros de sintaxe durante a fase de
compilao e esses erros, em geral, so simples de corrigir. O Matlab tambm
encontra erros na fase de execuo do programa; esses erros tendem a ser mais
difceis de solucionar por causa do workspace local s funes ser perdido
quando um erro interrompe a execuo. Quando isto ocorre, retornamos ao
workspace base do Matlab. Se voc usou ponto-e-vrgula para suprimir os
resultados intermedirios da tela, no ter como saber onde o erro ocorreu.
Para mostrar os resultados intermedirios, voc pode usar um dos
mtodos a seguir:

Remova os ponto-e-vrgula de interesse;


Use a declarao keyboard para permitir que o workspace seja
examinado no ponto da declarao;
Torne a primeira linha da funo uma linha de comentrio, de
tal forma que a funo possa ser executada como um script,
fazendo com que os resultados intermedirios sejam acessveis
no workspace base do Matlab;
Use o depurador do Matlab.