Vous êtes sur la page 1sur 49

Matlab

Índice Analítico

1. Matlab básico.........................................................................................2
1.1 Introdução..........................................................................................2
1.2 Operações matriciais..........................................................................8
1.3 Operações em Array........................................................................10
1.4 Manipulação matricial e vetorial......................................................13
1.5 Análise de dados..............................................................................18
1.6 Funções matriciais............................................................................20
1.7 Polinômios e processamento de sinais.............................................21
1.8 Funções de funções..........................................................................24
1.9 Gráficos............................................................................................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 básico

Matlab é um ambiente de computação técnica de visualização e


processamento numérico de alto desempenho. Ele integra análise numérica,
cálculo matricial, processamento de sinais, vários aplicativos e gráficos em um
ambiente amigável onde problemas e soluções são expressos como eles são
representados matematicamente sem a necessidade da programação tradicional.

O nome Matlab é acrônimo de laboratório de matrizes. Ele foi


originalmente escrito para permitir acesso fácil aos programas de cálculo
matricial desenvolvidos pelos projetos LINSPACK e EISPACK, que juntos
representavam o “estado da arte” em programas de cálculo matricial.

Matlab também contempla uma família de aplicativos específicos


chamados toolboxes na forma de coleções de funções Matlab (M-files),
estendendo o ambiente Matlab na solução de problemas particulares. Entre
outros, temos os seguintes toolboxes: Processamento de Sinais; Controle
Robusto; Identificação de Sistemas; Redes Neurais; Otimização e etc.

Provavelmente a característica mais importante do Matlab é sua


ampliabilidade. Isto permite que qualquer um possa criar uma toolbox.
Aplicativos matemáticos complexos são facilmente desenvolvidos em poucas
linhas no ambiente Matlab sem a necessidade de programação de uma única linha
de código C ou outro código de baixo nível.

1.1 Introdução

O Matlab trabalha essencialmente com um tipo de objeto: matriz retangular


numérica (real ou complexa). Em algumas situações existe significado especial
agregado às matrizes de dimensão 1 (escalares) e matrizes com uma só linha ou
coluna (vetores). A linguagem Matlab não usa declaração preliminar ou
dimensionamento de variáveis. Isso é feito de forma automática.

Matrizes podem ser adicionadas no ambiente de várias formas, contudo a


forma mais simples para matrizes pequenas é entrando com a lista dos elementos,
seguindo a seguinte convenção:

 Separe os elementos com espaços ou vírgulas.

2
Tutorial do Matlab 3

 Delimite os elementos com colchetes [ ].


 Use ; (ponto-e-vírgula) para indicar o final da linha.

Exemplo:

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

Resulta:
A=
1 2 3
4 5 6
7 8 9

Elementos de uma matriz podem ser quaisquer expressões Matlab. Por exemplo:

» x = [ -1.3 sqrt(3) (1+2+3)*4/5 ]

Resulta:
x=
-1.3000 1.7321 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 0 1.3000

Ao atribuir um valor numérico à 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 ]

Isto resulta em:


Tutorial do Matlab 4

A=
1 2 3
4 5 6
7 8 9
10 11 12

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

» A = A( 1:3 , : );

Remove as três primeiras linhas e todas as colunas da matriz atual A e coloca o


resultado em A.

A=
1 2 3
4 5 6
7 8 9

Variáveis e declarações do Matlab

Declarações no Matlab são frequentemente feitas da seguinte forma:

» variável = expressão

ou simplesmente,

» expressão

Quando o nome da variável é omitido, o nome ans é usado como variável


default.

Uma definição normalmente termina com ENTER. Se o último caractere é


um ponto-e-vírgula, ele suprime a apresentação no vídeo, embora faça a
atribuição da mesma forma. Isto é especialmente importante nas situações que o
resultado é muito grande, tal como uma matriz de 10 linhas e 10 colunas.
Tutorial do Matlab 5

Se a expressão é muito grande e não cabe em uma linha, use (...) para
continuar a definição 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 variável ou nome de função com uma letra seguida
de qualquer quantidade de letras (ou underscore). O Matlab diferencia letras
maiúsculas de minúsculas e usa somente os primeiros 19 caracteres do nome.

Obtendo informação da área de trabalho (workspace)

Para listar as variáveis ativas use o comando who. Para obter mais
informações sobre as variáveis como: nome, tamanho, número de elementos, etc.,
use o comando whos.

O utilitário de HELP

O comando help produz informações resumidas sobre funções específicas


ou sobre tópicos do Matlab. Para listar um grupo de funções, digite help seguido
do nome do grupo de funções. Exemplo:

» help matfun

Para obter auxílio sobre uma função específica digite help e o nome da
função. Exemplo:

» help inv

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


comando lookfor. Exemplo:

» lookfor inverse
Tutorial do Matlab 6

invhilb - Inverse Hilbert matrix.


ipermute - Inverse permute array dimensions.
acos - Inverse cosine, result in radians.
acosd - Inverse cosine, result in degrees.
acosh - Inverse hyperbolic cosine.ACSCH

 

Salvando e saindo

Para sair do Matlab digite exit. Encerrando uma seção do Matlab, apaga-
se todas as variáveis da área de trabalho (workspace). Se for necessário, salve
suas variáveis digitando save. Este comando salvará todas as variáveis em um
arquivo chamado matlab.mat. Para recuperar as variáveis use o comando load .
Você também pode salvar somente algumas variáveis e usar o nome de um
arquivo qualquer. O exemplo a seguir salva as variáveis x, y e z no arquivo
temp.mat.

» save temp x y z

Números e expressões aritméticas

O Matlab usa notação convencional com potência de dez ou unidade


complexa como sufixo:

-4.534i
1.760217e-11

O Matlab usa 16 dígitos significativos e expressões aritméticas são


calculadas com a seguinte prioridade, de cima para baixo

^ potenciação
\ divisão à esquerda
/ divisão à direita
* multiplicação
- subtração
+ adição

Algumas funções internas retornam valores especiais. A função pi retorna o


valor de , a função inf retorna , etc. O Matlab dispões das funções
matemáticas elementares normalmente encontradas em calculadores científicas.
Tutorial do Matlab 7

Essas funções incluem, por exemplo: abs, sqrt, log, sin. Se uma operação
resultar em infinito isso não implica erro, simplesmente aquela variável terá o
valor infinito. O mesmo ocorre para operações inválidas como / ou 0/0. O
resultado é NaN (Not a Number).

Formato de saída

Para alterar a formatação do número 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

Funções

Grande parte do poder do Matlab vem do enorme conjunto de funções.


Algumas delas são internas ao processador Matlab e outras são disponíveis como
bibliotecas externas na forma de M-files. O conjunto de funções aplicadas a uma
área específica é denominado toolbox. Cada usuário pode criar suas próprias
funções que se comportam como se fossem funções internas. As seções adiante
discutem cada uma das diferentes categorias de funções analíticas do Matlab
básico.

É possível combinar funções de várias formas. Exemplo:

» x = sqrt( log(z) )

Algumas funções usam dois ou mais argumentos, e cada argumento pode


ser uma expressão. Exemplo:
Tutorial do Matlab 8

» angulo = atan2(y,3*x)

Existem funções que retornam dois ou mais valores. Nestes casos, os


valores de saída devem estar entre colchetes [ ] e separados por vírgula.
Exemplo:

» [ V, D ] = eig( A )

A função eig calcula os autovetores e os autovalores de A,


respectivamente.
1.1.1 Operações matriciais

Transposta de uma matriz

O caractere ' (apóstrofe) 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 3
2 4

Adicionando e subtraindo matrizes

Os símbolos + e - denotam adição e subtração de matrizes. Portanto, a


operação é definida se as matrizes têm a mesma dimensão. Exemplo:

» C=A+B
C=
2 5
5 8

A adição e a subtração são definidas também para o caso em que um dos


operandos é um escalar. Exemplo:
Tutorial do Matlab 9

» D=C-2
D=
0 3
3 6

Multiplicação de matrizes

O símbolo * denota multiplicação de matrizes e é válido sempre que


dimensões internas das duas forem iguais. Exemplo:

» E=A*B
E=
5 11
11 25

Naturalmente, um escalar (matriz de dimensão 1) pode multiplicar ou ser


multiplicado por qualquer matriz. Exemplo:

» F = 2*E
F=
10 22
22 50

Divisão de matrizes

Existem dois símbolos de divisão de matrizes: / e \. Os significados são:

X = A\B é solução do sistema A*X = B


X = B/A é solução do sistema X*A = B

Funções elementares e transcendentais

O Matlab considera expressões como exp(A) e sqrt(A) como operação


sobre cada um dos elementos de um vetor (linha ou coluna). Existem funções
para calculo de funções transcendentais de matrizes, quando essas são quadradas.
Exemplos:

 expm exponencial de uma matriz


 logm logaritmo de uma matriz
Tutorial do Matlab 10

 sqrtm raiz quadrada de uma matriz

Outras funções elementares sobre matrizes incluem:

 poly polinômio característico


 det determinante
 trace traço

1.1.2 Operações em Array

Refere-se às operações com array as operações aritméticas realizadas


elemento a elemento ao invés da operação matricial algébrica usual definida pelos
símbolos * \ / ^ e '. Para indicar que a operação é elemento-a-elemento usa-se
um ponto (.) antes do símbolo da operação.

Somando e subtraindo Arrays

Para a adição e subtração, as operações de arrays e as de matrizes são as


mesmas. Neste caso + e - podem ser usados sem o ponto.

Multiplicando e dividindo Arrays

O símbolo .* denota multiplicação elemento-a-elemento. Se A e B têm


mesma dimensão, então A.*B resulta em array cujos elementos são 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 expressão A./B e A.\B resulta no quociente de cada elemento. Exemplo:

» z = x.\y
z=
Tutorial do Matlab 11

4.0000 2.5000 2.000

Usando potenciação com Arrays

O símbolo .^ denota potenciação elemento-a-elemento. Exemplo:

» z = x.^y
z=
1 32 729

Operadores relacionais

Para comparar matrizes de dimensões idênticas, existem operadores


relacionais:

< menor
<= menor ou igual
> maior
>= maior ou igual
== igual
~= diferente

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


são divisíveis por 3:

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

1 0 0
0 1 0

A função rem(A,3) retorna a matriz dos restos da divisão por 3. Cada um


dos elementos de G informa se a operação relacional é falsa (0) ou verdadeira
(1).

A função find é muito usada em conjunto com operadores relacionais. O


exemplo abaixo ilustra como localizar todos os elementos de Y que são 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 lógicos

Os operadores &, |, e ~ são os operadores lógicos "e", "ou" e "não"


respectivamente. As funções any e all são muito utilizadas em conjunto com
operadores lógicos. A função any(x) retorna "1" se qualquer elemento de x for
não nulo e retorna "0" caso contrário. A função all(x) retorna "1" somente se
todos os elementos de x são não nulos. Essas funções são particularmente úteis
na declaração de um comando if.

if all(A < 0.5)


faça alguma coisa
end

Funções matemáticas

Um conjunto de funções matemáticas elementares são aplicáveis elemento-


a-elemento. Exemplo:

» A = [ -1 2 -3; 4 -5 6];
» B = abs(A)
B=
Tutorial do Matlab 13

1 2 3
4 5 6

1.1.3 Manipulação matricial e vetorial

A capacidade de indexação do Matlab permite manipulação de linhas e


colunas, elementos individuais e submatrizes de matrizes. Os vetores são o ponto
central da indexação e eles são gerados com o uso de “ :” (dois pontos).

Gerando vetores

A declaração abaixo ilustra a criação de um vetor usando (:) dois pontos:

» x = 1:5
x=
1 2 3 4 5

Você pode também criar o vetor com incrementos diferentes da unidade.


No exemplo a seguir o passo é de /4.

» 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 criação rápida 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
Tutorial do Matlab 14

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 funções para a geração de vetores tal como logspace que
gera um vetor espaçado logaritmicamente:

» w = logspace(-1,1,5)
w=
0.1000 0.3162 1.0000 3.1623 10.0000

Indexando

Elementos individuais de matrizes podem ser referenciados inserindo seus


índices de linha e coluna entre parênteses. Se uma expressão for usada como
índice, o índice é aproximado para o inteiro mais próximo.

» 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 5
Tutorial do Matlab 15

7 8

O exemplo a seguir mostra como fazer referência explícita a algumas linhas


ou colunas. Colocam-se os números 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=
1
2
3
4
5
6

Usando vetores de 0 e 1 na indexação

Você pode usar vetores de "uns", usualmente criados a partir de operadores


relacionais no referenciamento de submatrizes. Suponha que A é uma matriz de
dimensão m-por-n e L um vetor linha de "zeros" e "uns" de dimensão m. Então,

» A(L,:)

especifica as linhas de A cujos elementos de L são não 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,:);
Tutorial do Matlab 16

Matrizes vazias

A declaração,

» X=[]

atribui a matriz de dimensão zero-por-zero à X, sendo possível usar a variável X


em cálculos. Criar a matriz X vazia é diferente do que apagar a variável X com o
comando clear X. Com o uso de matrizes vazias é possível 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] ) = [ ]

Matrizes especiais

Existe uma coleção de funções que geram matrizes que são normalmente
encontradas nos problemas de álgebra linear e processamento de sinais.
Exemplos:

 compan - gera a matriz a partir do polinômio característico


 diag - matriz diagonal
 pascal - constrói o triângulo de Pascal
 zeros - matriz de "zeros"
 ones - matriz de "uns"
 eye - matriz identidade
 logspace - vetores espaçados logaritmicamente
 linspace - vetores espaçados linearmente
 rand - elementos randômicos uniformemente distribuídos
 randn - elementos randômicos normalmente distribuídos
 etc ...

Construindo matrizes a partir de matrizes

É possível formar matrizes maiores a partir de matrizes menores,


envolvendo as matrizes menores entre colchetes. Por exemplo, se A é uma matriz
quadrada,
Tutorial do Matlab 17

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

cria a matriz C com o dobro do tamanho de A. Note que na construção de


matrizes usando matrizes, as dimensões das matrizes menores devem ser
compatíveis ou então aparecerá uma mensagem de erro.

Manipulando matrizes

Várias funções estão disponíveis para a manipulação matricial como:


rot90 (rotação anti-horária de 90º), tril (parte triangular superior), triu (parte
triangular inferior), reshape (alteração da dimensão), etc.

1.1.4 Análise de dados

Esta seção apresenta uma introdução à análise de dados usando o Matlab.


Técnicas mais poderosas estão disponíveis usando funções de álgebra linear e
funções de processamento de sinais na seção 1.1.6 (Polinômios e processamento
de sinais).

Convenção

Por convenção, as diferentes variáveis em um conjunto de dados são


colocadas em colunas, permitindo observação vertical dos dados através das
linhas. Portanto, um conjunto de dados de 50 amostras de 13 variáveis é
armazenado em uma matriz de dimensão 50-por-13.

O conjunto de dados armazenados na matriz count será usado para ilustrar


o uso de algumas funções

» count = [
11 57 291
43 178 1011
38 163 1095
61 420 2407
12 59 287 ]

Para esse exemplo temos 5 observações para 3 variáveis. Isso pode ser
obtido como segue:
Tutorial do Matlab 18

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

Um grupo de funções (abaixo) confere a capacidade de análise de dados


básica:
 max - máximo valor
 min - mínimo valor
 mean - valor médio
 median - mediana
 std - desvio padrão
 sort - ordenação
 sum - soma dos elementos
 prod - produto dos elementos
 cumsum - soma cumulativa dos elementos
 cumprod - Produto cumulativos dos elementos
 diff - Aproximação da derivada
 corrcoef - Coeficientes de correlação
 cov - Matriz de covariância
 var - Variância

Para argumentos vetoriais não faz diferença se o vetor é linha ou coluna.


Para arrays as funções são orientadas por colunas.

Continuando com o exemplo anterior, as declarações 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


Tutorial do Matlab 19

sigma =

21.4126 147.9503 865.7639

Ajuste de curvas

Uma das alternativas possíveis no Matlab para encontrarmos os


coeficientes de p(x) a partir de dados tabelados é por meio da função polyfit ,
onde n é o grau do polinômio.

p x   c1x d  c2 x d 1    cn

A sintaxe usada é a seguinte, onde x é a abscissa, p o valor da função para


cada x(i) e n o grau do polinômio.

» c = polifit(x,p,n)

1.1.5 Funções matriciais

Autovalores e autovetores

Se A é uma matriz n-por-n, os n números  que satisfazem a equação


Ax = x, são os autovalores de A. Eles são encontrados usando

» eig(A)

Se o comando for usado com dois parâmetros de saída, obteremos os


autovalores em D e os autovetores em X:

» [X,D] = eig(A)

Norma, posto e condicionamento

As funções Matlab que calculam a norma, posto e número de


condicionamento de uma matriz são:

 cond - número de condicionamento usando norma-2


Tutorial do Matlab 20

 norm - norma-1, norma-2, norma-F e norma-


 rank - posto da matriz
 rcond - estimativa do condicionamento
1.1.6 Polinômios e processamento de sinais

O Matlab possui funções para manipulação polinomial e para o


processamento digital de sinais. Essas funções operam primordialmente com
vetores.

Representação de polinômios

O Matlab representa polinômios como vetores linha contendo os


coeficientes ordenados em ordem decrescente dos expoentes. Por exemplo, o
polinômio característico de

A=
1 2 3
4 5 6
7 8 0

é calculado com

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

Esta é a representação Matlab do polinômio s 3  6 s2  72s  27. As raízes dessa


equação são

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

Essas raízes são os mesmos que os autovalores da matriz A. Você pode


reconstruir o polinômio original com a função poly
Tutorial do Matlab 21

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

Considere os polinômios a(s)  s2  2s  3 e b(s)  4 s2  5s  6 . O produto


dos polinômios é a convolução 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 convolução inversa para dividir dois polinômios, 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 funções de polinômios inclui:

 poly - polinômio característico


 roots - raízes de um polinômio
 polyval - cálculo do valor numérico do polinômio
 polyvalm - cálculo do polinômio de matrizes
 conv - multiplicação (convolução)
 deconv - divisão (deconvolução)
 residue - expansão em frações parciais
 polyder - derivada do polinômio
 polyfit - ajuste polinomial de curva

Processamento de sinais

Vetores são usados para armazenar sinais de dados amostrados, ou


sequências, para o processamento dos sinais. Para sistemas com múltiplas
entradas, cada linha da matriz corresponde a uma amostra. O Matlab básico
contém as funções a seguir, enquanto que o Signal Processing Toolbox contém
muitas funções adicionais.
Tutorial do Matlab 22

 abs - magnitude complexa


 angle - ângulo de fase
 conv - convolução
 deconv - deconvolução
 fft - transformada rápida de Fourier
 ifft - transformada rápida inversa de Fourier
 fftshift - alterna quadrantes de matrizes
 fft2 - FFT de duas dimensões
 ifft2 - FFT inversa de duas dimensões
 fftshift - rearranja os resultados da FFT
 conv2 - convolução de duas dimensões

Filtragem de dados

A função,

» 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 y
H(z)

A estrutura do filtro é dada a seguir pela sua função de transferência de


tempo discreta

Y ( z ) b(1)  b(2) z 1    b(nb) z  ( nb 1)


H ( z)  
X ( z) 1  a( 2) z 1    a (na ) z  ( na 1)

A função freqz do Signal Processing Toolbox calcula a resposta em


frequência de filtros digitais. Além dessa, exemplificada abaixo, esse Toolbox
contém inúmeras funções para o projeto de filtros digitais.

» [h,w] = freqz(b,a,n);
» mag = abs(h);
» fase = angle(h);
» semilogy(w,mag)
Tutorial do Matlab 23

» plot(w,fase)

1.1.7 Funções de funções

A classe de funções Matlab para cálculo que não é sobre matrizes


numéricas, mais sim com funções matemáticas é aqui designada por funções de
funções (funfun) e incluem:

 Integração Numérica
 Equações não lineares e Otimização
 Solução de Equações Diferenciais
 etc

Para o uso das funções de funções, é usual representar as funfun através de


arquivos-M (M-files). Por exemplo, a função

1 1
f (x )   6
(x  0,3)  0,01 (x  0,9)2  0,04
2

foi codificada em um arquivo com extensão .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 gráfico dessa função é obtido como segue

» x = -1:.01:2;
» plot(x,humps(x))
Tutorial do Matlab 24

100

80

60

40

20

-20
-1 -0.5 0 0.5 1 1.5 2

Integração numérica

Uma função, 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 funções para o processo de quadratura:

 quad - regra de Simpson adaptativa


 quad8 - regra de Newton adaptativa

Note que o primeiro argumento da função quad é uma string que contém o nome
de uma função. Isso mostra porque essa função é chamada função de função (é
uma função que opera com outras funções). Os outros dois argumentos são os
limites de integração.

Equações não lineares e funções de otimização

No Matlab básico encontramos algumas funções para a manipulação de


equações não lineares e para otimizações. Exemplos:
Tutorial do Matlab 25

 fminsearch - mínimo de uma função multivariável


 fzero - zero de uma função de uma variável

Continuando com o exemplo definido pela função humps.m, a localização


do mínimo da função na região de 0.5 a 1 é calculada com fminsearch :

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

e o seu valor no mínimo é

» y = humps(xm)
y=
11.2528

A localização do zero da função que está próximo 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 inúmeras outras funções como, por


exemplo,

 fgoalattain - consecução de metas


 fmincon- minimização com restrições
 fminsearch - minimização sem restrições
 fsolve - solução de equações não lineares
 fzero - busca de zeros
 fminimax - solução do problema minimax
 linprog - programação linear
 quadprog - programação quadrática

Equações diferenciais
Tutorial do Matlab 26

Duas das funções disponíveis para a solução de equações diferenciais


ordinárias são:

 ode23 - método Runge-Kutta de ordem baixa


 ode45 - método Runge-Kutta de ordem média

Considere a equação diferencial de segunda ordem conhecida como


equação de Van der Pol.

x  (x 2  1)x  x  0

Esta equação pode ser escrita como um sistema de equações diferenciais de


primeira ordem

x 1  x1 (1  x 22 )  x 2
x 2  x1

O primeiro passo para simular este sistema é criar um arquivo que contem este
sistema de equações 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 equação diferencial no intervalo 0  t  20 , use a função ode23 .

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

-1

-2

-3
0 5 10 15 20

Para aqueles que trabalham com equações diferenciais recomenda-se


também o SIMULINK que é uma extensão gráfica do Matlab para a simulação de
equações diferenciais.
1.1.8 Gráficos

O sistema gráfico do Matlab oferece uma variedade de técnicas


sofisticadas para representar e visualizar dados. São funções gráficas em 2-D e
3-D.

Gráficos 2-D

O Matlab fornece uma variedade de funções para a visualização de dados


em duas dimensões (2-D).

Funções gráficas elementares

A lista abaixo sumariza as funções gráficas básicas. Elas diferem apenas na


escala dos eixos. Cada entrada pode ser um vetor ou uma matriz e as escalas são
ajustadas automaticamente para acomodar os dados de entrada.

 plot - gráfico de vetores ou de colunas de matrizes


 loglog - escala logarítmica nos dois eixos
 semilogx - escala logarítmica no eixo x e linear em y
 semilogy - escala logarítmica no eixo y e linear em x
 title - adiciona um título ao gráfico
Tutorial do Matlab 28

 xlabel - adiciona um nome ao eixo x


 ylabel - adiciona um nome ao eixo y
 text - mostra um texto na posição especificada
 gtext - coloca o texto no gráfico usando o mouse
 grid - coloca linhas de grid

Criando um gráfico

Se y é um vetor, plot(y) produz um gráfico linear dos elementos de y em


função do indexador de y. Se você especificar dois vetores como argumentos,
plot(x,y) produz um gráfico de y versus x. Você pode também especificar vários
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+)')
Tutorial do Matlab 29

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 0.5 1
x=sin(t)

Estilos de linhas, marcadores e cores

Tal como se mostrou no exemplo anterior, você pode passar um caractere


como um argumento à função plot para especificar um dos vários estilos de
linha, símbolos e cores. Na declaração plot(X,Y,S), S é uma string de 1, 2 ou 3
caracteres (delimitados por apóstrofes) com as funções definidas pela tabela a
seguir. Se você não especificar uma cor, ele usa as cores da tabela
automaticamente.
Tutorial do Matlab 30

Símbolo Cor Símbolo Linha


y amarela . ponto
m magenta o círculo
c ciano x marca x
r vermelha + marca +
g verde * marca *
b azul - sólida
w branca : pontilhada
k preta -. traço-ponto
-- tracejada
s quadrado
d diamante
v triângulo (p/ baixo)
^ triângulo (p/ cima)
< triângulo (p/esquerda)
> triângulo (p/diereita)
P pentragrama
h hexagrama

Adicionando linhas em um gráfico existente

Você pode adicionar outras curvas em um gráfico que já foi construído


usando o comando hold. Quando você seleciona hold on, o Matlab não remove
as linhas atuais, ao invés disso ele adiciona as linhas atuais ao gráfico atual.

O que ele pode fazer é mudar a escala dos eixos automaticamente se os novos
dados não se acomodarem dentro da escala anterior. Exemplo:

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

Resulta,
Tutorial do Matlab 31

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 50 100 150 200 250

Dados imaginários e complexos

Quando os argumentos da função plot são complexos, isto é, eles têm


parte imaginária diferente de zero, a parte imaginária é ignorada exceto quando
plot é usado com um único argumento. Nesta situação, o comando é um
comando gráfico resumido da parte real versus a parte imaginária. 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 distribuição
dos autovalores de uma matriz 20-por-20 randômica:

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

Distribuição de Autovalores
4

-1

-2

-3

-4
-4 -2 0 2 4 6
Tutorial do Matlab 32

Exibindo gráficos de matrizes

A função 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 são matrizes, plot(X,Y) exibe o gráfico das colunas de X versus colunas
de Y.

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

Resulta,
2

1.5

0.5

-0.5

-1

-1.5

-2

-2.5

-3
0 20 40 60 80 100 120

Importando dados

Você pode importar e exibir o gráfico de dados gerados fora do Matlab.


Suponha você tenha um arquivo chamado dados.dat contento valores de duas
funções e da variável independente.
Tutorial do Matlab 33

dados.dat

2.3 1.0 1.0


3.1 1.9 2.0
4.5 2.2 3.0
5.6 2.6 4.0
4.8 3.5 5.0
4.7 4.7 6.0
4.4 5.3 7.0
4.0 6.0 8.0
4.2 7.1 9.0

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


seguir, mostra-se como renomear cada uma das variáveis e como exibir o gráfico
de cada função separadamente.

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

Resulta,

2
0 2 4 6 8 10

0
0 2 4 6 8 10

Funções gráficas especializadas em 2-D


Tutorial do Matlab 34

O Matlab inclui uma variedade de funções especializadas, conforme


descrito resumidamente a seguir.

 bar - gráfico de barras


 compass - gráfico de ângulos com setas
 errorbar - gráfico de barras de erros
 feather - gráfico de ângulos
 fplot - calcula e exibe o gráfico de uma função
 hist - cria um histograma
 polar - gráfico em coordenadas polares
 quiver - cria um gráfico de um gradiente
 rose - histograma em ângulo
 stairs - gráfico similar ao de barras sem linhas internas
 fill - desenha um polígono e preenche o interior

Gráfico de funções matemáticas

Você pode exibir o gráfico de uma função, y  f (x ) . A solução pela força


bruta é calcular a função para algumas centenas de pontos no intervalo de
interesse. Por exemplo, a função a seguir oscila com frequência tendendo para
infinito quando x  0,5.

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

Resulta,
Tutorial do Matlab 35

1 y = cos(tan(pi*x))

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 0.2 0.4 0.6 0.8 1

No exemplo, a função é exibida no intervalo [0,1]. Neste caso, a função


fplot é mais efetiva para obtermos a representação gráfica da função, pois ela
escolhe automaticamente uma quantidade maior de pontos na faixa que é
necessário maior resolução gráfica. Para usar a função fplot, primeiro crie um
arquivo que conterá a função a ser exibida por meio de um gráfico, por exemplo,
com o nome fofx.m

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

Agora basta passar o nome da função como argumento de fplot.

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

Resulta,
Tutorial do Matlab 36

y = cos(tan(pi*x))
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 0.2 0.4 0.6 0.8 1

Gráficos 3-D

O Matlab oferece uma variedade de funções para a visualização de dados


em 3-D, conforme sumarizado pelas funções a seguir. Contudo, não 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 - gráficos de contornos
 pcolor - desenha uma matriz retangular de células cujas cores
são determinadas pelos elementos da matriz.
 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 polígono 3-D e preenche com uma cor sólida ou
interpola cores.
 zlabel - cria um label para o eixo z.
 clabel - adiciona um label ao gráfico de contorno.
 view - determina o ponto de visualização atual.
 viewmtx - calcula uma transformação 4x4.
Tutorial do Matlab 37

1.1.9 Controles de fluxo

O Matlab possui declarações 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 científica, permitindo que seja usado
como uma linguagem de programação de alto nível completa.

FOR

O Matlab possui a sua versão própria dos loops DO ou FOR. Com isso é
possível repetir um grupo de declarações por um número predeterminado de
vezes. Por exemplo,

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

impõe o valor "0" para todos os primeiros n elementos de x. Se n é menor que


"1", a construção ainda é permitida, mas as declarações internas ao loop não são
executadas. Se x não existe ou tem menos elementos que x, então espaços
adicionais são alocados automaticamente.

Você pode criar loops dentro de loops e pode fazer as declarações


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);
» end
» end
» A

A expressão 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
Tutorial do Matlab 38

Tal como o for, a declaração while também é para realizar um grupo de


declarações um certo número de vezes. A diferença básica é que no while, o
controle do loop é feito por uma condição lógica. Para ilustrar, vamos resolver
um problema: Qual é o primeiro inteiro n para o qual n! (fatorial de n) é um
número de 100 dígitos ?

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

A função prod realiza os produtos dos elementos do argumento. Logo, prod(1:n)


é o fatorial de n.

Declarações IF e BREAK

Os exemplos a seguir ilustram a utilização da declaração if. O primeiro


exemplo mostra como um cálculo pode ser dividido em três 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 não resolvido da teoria dos números:

"Pegue um número 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 declarações while e if. Também é mostrado o


uso da função input que interrompe a execução para a entrada de dados e da
declaração break que permite interromper um loop.
Tutorial do Matlab 39

% Problema classico "3n+1" da teoria dos números

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.10Arquivos 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 também pode executar uma sequência de comandos
que está armazenada em um arquivo. Estes dois modos formam um ambiente
interpretativo. Os arquivos que contém declarações Matlab são chamados M-files
porque usam a extensão “.m”. Por exemplo, o arquivo bessel.m contém
declarações Matlab para o cálculo de funções Bessel.

Um M-file consiste de uma sequência de declarações Matlab normais,


podendo incluir referencias a outros M-files. Um M-file pode chamar ele próprio
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 M-files podem
ser usadas: lotes (scripts) e funções (functions). Arquivos scripts automatizam
uma sequência de comandos. Arquivos de função permitem criar novas funções
às existentes. Ambos, scripts e funções são arquivos texto tipo ASCII.

Arquivos Scripts

O exemplo a seguir ilustra como calcular os primeiros 16 números de


Fibonacci usando um arquivo script. Suponha que o nome do arquivo seja
fibno.m. Digitando fibno (sem a extensão) no prompt do Matlab, faz com os
comandos contidos no arquivo sejam executados. Note que depois da execução
do programa as variáveis 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
Tutorial do Matlab 40

são 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 números 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 funções

Um M-file que contém a palavra function no início da primeira linha é um


arquivo de função. Uma função difere de um script no fato de que argumentos
podem ser passados; variáveis definidas e manipuladas no arquivo são locais à
função e não operam globalmente no workspace. A função listada à seguir tem o
nome media1.m.

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 média pode ser calculada
como segue:

» z = 1:99;
» media1(z)
ans =
50
Tutorial do Matlab 41

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

 A primeira linha declara o nome da função, os argumentos de


entrada e os de saída. Sem esta linha, o arquivo é um script ao
invés de função;
 O símbolo % indica que o resto da linha é um comentário e deve
ser ignorado;
 As primeiras linhas documentam um M-file e são mostradas
quando pedimos help media1;
 As variáveis m, n e y são locais à função e não existem no
workspace depois que do término da função. (Caso a variável já
existisse antes da chamada media1, ela continuaria existindo
depois e inalterada);
 Não foi necessário colocar os inteiros de 1 a 99 em uma variável
chamada x. De fato, nós usamos media1 com uma variável
chamada z. O vetor z foi passado ou copiado dentro da função
onde ela tornou-se uma variável local chamada x.

Você pode criar uma função um pouco mais complexa que media1,
chamada stat, que também calcula o desvio padrão. Neste exemplo ilustramos o
uso de múltiplos argumentos de saída.

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 função que calcula o posto de uma matriz usa múltiplos argumentos
de entrada: No caso geral teríamos múltiplos argumentos de entrada e de saída.
Tutorial do Matlab 42

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 também mostra o uso da variável permanente nargin para


encontrar o número de argumentos de entrada. A variável nargout, embora não
usada neste exemplo, contém o número de argumentos de saída.

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 comentário, começando sempre pela segunda
linha do arquivo. Por exemplo, o arquivo da função 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));

têm 5 linhas contíguas de comentário a partir da segunda linha. Quando digitamos


help angle, todo esse bloco é mostrado. O mecanismo de help ignora linhas de
comentário que aparecem mais a frente, depois de uma declaração ou mesmo
uma linha em branco.

Informações úteis

Quando você chama uma função pela primeira vez, o Matlab compila a
função e a coloca na memória. Ela estará então disponível para os usos
subsequentes sem a necessidade de ser compilada. Permanecerá na memória até
o final da seção ou até que você fique com pouca memória, acarretando na sua
eliminação automática.

O comando what mostra uma listagem dos M-files no diretório atual do


disco. O comando type lista os M-files.
Tutorial do Matlab 43

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. Procura por whoopie como variável;


2. Verifica se whoopie é uma função interna;
3. Procura um o arquivo whoopie.m no diretório atual;
4. Procura um o arquivo whoopie.m nos diretórios especificados
pelo path do Matlab.

INPUT, KEYBOARD, PAUSE

A função input permite obter dados do usuário. por exemplo,

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

interrompe a execução, mostra a frase na tela, espera, e então atribui o valor ou


expressão digitada para a variável n.

Similar à input é a função keyboard . Esta função torna o teclado do


computador um script. Quando colocada dentro de M-files, torna ágil a
depuração e permite a modificação de variáveis durante a execução.

O comando pause interrompe a execução até que o usuário pressiona uma


tecla qualquer. pause(n) interrompe por n segundos antes de continuar.

Variáveis globais

Cada função Matlab possui suas próprias variáveis locais que são
separadas daquelas de outras funções e daquelas que estão no workspace.
Contudo, se você declarar uma variável como global, todas as funções e o
workspace vão enxergar a mesma variável. Para diferenciar das demais variáveis,
costuma-se identificar uma variável global declarando-a com um nome longo e
em letras maiúsculas, embora isso não seja uma imposição.

Suponha que você queira estudar o comportamento dos coeficientes  e 


no problema do modelo predador-vítima de Latka-Volterra.
Tutorial do Matlab 44

y 1  y1   y2 y1
y 2   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 declarações:

» 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 são globais você pode alterá-las interativamente e
novas soluções podem ser obtidas sem ter que editar nenhum arquivo e sem
passar os valores como argumentos.

Variáveis alfanuméricas

Variáveis do tipo texto são introduzidas no Matlab envolvendo o texto com


quotas simples (apóstrofos). 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
Tutorial do Matlab 45

Valores numéricos são convertidos em variáveis do tipo texto via sprintf,


num2str e int2str. Exemplo,

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

A função EVAL

A função eval é usada com variáveis do tipo texto para implementar


recursos de macros de texto. A função eval(t) força que o texto contido na
variável 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 função eval é especialmente útil na passagem de argumentos de funções


cujo parâmetro é um nome de outra função. Um exemplo típico é o função fplot
que passa como argumento o nome da função a ser exibida, exemplo:

» fplot( 'sin', [0 10] )

1.1.11Arquivos de disco

Os comandos load e save recuperam e armazenam dados do workspace


no disco.

Manipulação de arquivos de disco

Os comandos dir, type, delete e cd servem à manipulação 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 extensão é especificada, o Matlab considera a extensão “ .m” como
Tutorial do Matlab 46

default. Portanto, esse comando é normalmente usado para obtermos uma rápida
listagem de um M-file na teta do computador.

O comando diary cria um diário (log) da sua seção Matlab na forma de


um arquivo ASCII. Todos os comandos e resultados, exceto gráficos, são
automaticamente acrescentados ao arquivo de diário.

Transferência de dados

Você pode introduzir dados de outros programas dentro do Matlab.


Similarmente, você pode exportar dados do Matlab para outros programas.
Também é possível usar o formato que o Matlab usa para armazenar dados: MAT-
files.

Importando dados

O melhor método de importar dados depende de quantos dados existem,


qual o seu formato, etc. A seguir, listamos algumas opções:

 Entre com os dados como uma lista explícita dos elementos. Se


o número de elementos for pequeno (10-15 elementos) é mais
simples digitar os dados explicitamente usando colchetes.

 Crie um M-file e escreva os dados de forma explícita 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 então use o comando load .

 Importe os dados do Excel.

Exportando dados do Matlab

Para exportar dados também existem várias opções, das quais algumas são
listadas a seguir:
Tutorial do Matlab 47

 Para matrizes pequenas use o comando diary para criar uma


arquivo de diário e então liste as variáveis 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 opção -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 então


escreva um programa em C ou FORTRAN para reformatar os
dados conforme necessário para a aplicação.

 Exporte os dados para o Execl.

1.1.12O depurador do Matlab

Embora o Matlab seja uma linguagem menos complexa que outras


linguagens de programação, ele tem sua sintaxe própria e você pode precisar
corrigir alguns erros. O Matlab encontra erros de sintaxe durante a fase de
compilação e esses erros, em geral, são simples de corrigir. O Matlab também
encontra erros na fase de execução do programa; esses erros tendem a ser mais
difíceis de solucionar por causa do workspace local às funções ser perdido
quando um erro interrompe a execução. Quando isto ocorre, retornamos ao
workspace base do Matlab. Se você usou ponto-e-vírgula para suprimir os
resultados intermediários da tela, não terá como saber onde o erro ocorreu.

Para mostrar os resultados intermediários, você pode usar um dos métodos


a seguir:

 Remova os ponto-e-vírgula de interesse;


 Use a declaração keyboard para permitir que o workspace seja
examinado no ponto da declaração;
Tutorial do Matlab 48

 Torne a primeira linha da função uma linha de comentário, de tal


forma que a função possa ser executada como um script,
fazendo com que os resultados intermediários sejam acessíveis
no workspace base do Matlab;
 Use o depurador do Matlab.