Você está na página 1de 72

APOSTILA

MATLAB











2
O que o MATLAB?

MATLAB um software interativo de alta performance voltado para o clculo numrico. O
MATLAB integra anlise numrica, clculo com matrizes, processamento de sinais e construo de
grficos em ambiente fcil de usar onde problemas e solues so expressos somente como eles so
escritos matematicamente, ao contrrio da programao tradicional.
O MATLAB um sistema interativo cujo elemento bsico de informao uma matriz que no
requer dimensionamento. Esse sistema permite a resoluo de muitos problemas numricos em apenas
uma frao do tempo que se gastaria para escrever um programa semelhante em linguagem Fortran,
Basic ou C. Alm disso, as solues dos problemas so expressas no MATLAB quase exatamente
como elas so escritas matematicamente.

Carregando o MATLAB

No Gerenciador de Programas do Microsoft Windows deve-se abrir o grupo de programas do
MATLAB for Windows, que contm o cone do aplicativo MATLAB. Um duplo clique no cone
MATLAB carrega o aplicativo MATLAB.
Quando o MATLAB carregado, duas janelas so exibidas: a J anela de Comando (Command
Windows) e J anela Grfica (Graphic Windows). A J anela de Comando ativada quando se inicializa o
MATLAB, e o prompt padro (>>) exibido na tela.
A partir desse ponto, o MATLAB espera as instrues do usurio. Para entrar com uma matriz
pequena, por exemplo usa-se

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

colocando colchetes em volta dos dados e separando as linhas por ponto e vrgula.. Quando se
pressiona a tecla <enter>o MATLAB responde com

A =
1 2 3
4 5 6
7 8 9

Para inverter esta matriz usa-se

>>B =inv(A)

e o MATLAB responde com o resultado.

Editor de Linhas de Comando

As teclas com setas podem ser usadas para se encontrar comandos dados anteriormente, para
execuo novamente ou sua reedio. Por exemplo, suponha que voc entre com

>>log (sqt(tan(pi/5)))

Como para calcular a raiz quadrada o comando certo sqrt, o MATLAB responde com uma
mensagem de erro:

??? Undefined funcion or variable sqt.



3
Ao invs de reescrever a linha inteira, simplesmente pressione a tecla seta para cima. O
comando errado retorna, e voc pode, ento, mover o cursor para trs usando a tecla seta para
esquerda ou o ponto de insero com o mouse ao lugar apropriado para inserir a letra r. Ento, o
comando retorna a resposta apropriada:

>>log (sqrt(tan(pi/5)))

ans =
-0.1597

Alm das teclas com setas, pode-se usar outras teclas para reeditar a linha de comando. A seguir
dada uma breve descrio destas teclas:

Ctrl-P Chama uma linha de comando anterior.
Ctrl-N Chama uma linha de comando posterior.
Ctrl-B Move o cursor um caractere esquerda.
Ctrl-F Move o cursor um caractere direita.
Delete Move o cursor esquerda, apagando um caractere.
Ctrl-L Move o cursor uma palavra esquerda.
Ctrl-R Move o cursor uma palavra direita.
Ctrl-A Move o cursor para o comeo da linha.
Ctrl-E Move o cursor para o final da linha.
Ctrl-U Cancela a linha.
Ctrl-D Apaga o caractere que est sobre o cursor.
Ctrl-K Apaga at o final da linha.

Retorna a linha anterior

Retorna a linha posterior

Move um espao para a esquerda

Move um espao para a direita
Ctrl
Move uma palavra para a esquerda
Ctrl
Move uma palavra para a direita
Home Move para o comeo da linha
End Move para o final da linha
Del Apaga um caracter direita
Backspace Apaga um caracter a esquerda















4


1 INTRODUO

O MATLAB trabalha essencialmente com um tipo de objeto, uma matriz numrica retangular
podendo conter elementos complexos (deve-se lembrar que um escalar uma matriz de dimenso l x l
e que um vetor uma matriz que possui somente uma linha ou uma coluna).

1.1 Entrando com Matrizes Simples

As matrizes podem ser introduzidas no MATLAB por diferentes caminhos:
- digitadas na J anela de Comando (lista explcita de elementos),
- geradas por comandos e funes,
- criadas em arquivos ".m",
- carregadas a partir de um arquivo de dados externo.
O mtodo mais fcil de entrar com pequenas matrizes no MATLAB usando uma lista
explcita. Os elementos de cada linha da matriz so separados por espaos em branco ou vrgulas e as
colunas separadas por ponto e vrgula, colocando-se colchetes em volta do grupo de elementos que
formam a matriz. Por exemplo, entre com a expresso

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

Pressionando <enter>o MATLAB mostra o resultado

A=
l 2 3
4 5 6
7 8 9

A matriz A salva na memria RAM do computador, ficando armazenada para uso posterior.
As matrizes podem, tambm, ser introduzidas linha a linha, o que indicado para matrizes de
grande dimenso. Por exemplo:

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

Outra maneira para entrar com matrizes no MATLAB atravs de um arquivo no formato texto
com extenso ".m". Por exemplo, se um arquivo chamado "gera.m" contm estas trs linhas de texto,

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

ento a expresso "gera" l o arquivo e introduz a matriz A.

>>gera

O comando load pode ler matrizes geradas pelo MATLAB e armazenadas em arquivos binrios
ou matrizes geradas por outros programas armazenadas em arquivos ASCII.



5
1.2 Elementos das Matrizes

Os elementos das matrizes podem ser qualquer expresso do MATLAB,
por exemplo.

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

resulta em

x =
-l.3000 1.4142 23.0400

Um elemento individual da matriz pode ser reverenciado com ndice entre parnteses.
Continuando o exemplo,

>>x(6) =abs(x(l))
produz:

x =
-1.3000 1.4142 23.0400 0 0 1.3000

Note que a dimenso do vetor x aumentada automaticamente para acomodar o novo elemento
e que os elementos do intervalo indefinido so estabelecidos como zero.
Grandes matrizes podem ser construdas a partir de pequenas matrizes. Por exemplo, pode-se
anexar outra linha na matriz A usando

>>r=[ l0 11 12];
>>A=[A;r]

que resulta em

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

Note que o vetor r no foi listado porque ao seu final foi acrescentado ;.
Pequenas, matrizes podem ser extradas de grandes matrizes usando ;. Por exemplo,

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

seleciona as trs primeiras linhas e todas as colunas da matriz A atual, modificando-a para sua
forma original.

1.3 Declaraes e Variveis


O MATLAB uma linguagem de expresses. As expresses usadas so interpretadas e
avaliadas pelo sistema. As declaraes no MATLAB so freqentemente da forma

>>varivel =expresso


6

ou simplesmente

>>expresso

As expresses so compostas de operadores e outros caracteres especiais, de funes e dos
nomes das variveis. A avaliao das expresses produzem matrizes, que so ento mostradas na tela
e atribudas s variveis para uso futuro. Se o nome da varivel e o sinal de igualdade = so
omitidos, a varivel com o nome ans, que representa a palavra answer (resposta), automaticamente
criada. Por exemplo, digite a expresso

>>1900/81

que produz

ans=
23.4568

Se o ltimo caractere da declarao um ponto e vrgula, ;, a impresso na tela suprimida,
mas a tarefa realizada. Esse procedimento usado em arquivos com extenso ".m" e em situaes
onde o resultado uma matriz de grandes dimenses e temos interesse em apenas alguns dos seus
elementos.
Se a expresso to grande que no cabe em apenas uma linha, pode-se continuar a expresso
na prxima linha usando um espao em branco e trs pontos,..., ao final das linhas incompletas. Por
exemplo,

>>s =l - 1/2 +1/3 - 1/4 +1/5 - 1/6 +1/7 ...
>> - 1/8 +1/9 - l/10 +1/11 - 1/12 +1/13;

calcula o resultado da srie, atribuindo a somatria varivel s, mas no imprime o resultado na
tela. Note que os espaos em branco entre os sinais =, + e - so opcionais, mas o espao em
branco entre 1/7 e ... obrigatrio.
As variveis e funes podem ser formadas por um conjunto de letras, ou por um conjunto de
letras e nmeros, onde somente os primeiros 19 caracteres do conjunto so identificados. O
MATLAB faz distino entre letras maisculas e minsculas, assim a e A no so as mesmas
variveis. Todas as funes devem ser escritas em letras minsculas: inv(A) calcula a inversa de A,
mas INV(A) uma funo indefinida.

Os nomes das variveis devem consistir de uma nica palavra, conforme as trs regras abaixo

Tabela : Regras de Construo de Variveis
Regras de Construo das Variveis Comentrios/Exemplos
Variveis em letras minsculas e masculas so
diferentes mesmo que consistam das mesmas
letras

Items, items, itEms e ITEMS so variveis
diferentes entre si no MATLAB
As variveis podem consistir de at 19 letras

holnmbjkitkklwenohu
As variveis devem comear com alguma letra,
podendo ser seguido por quaisquer letras,
dgitos ou subescrito. Caracteres de pontuao
no podem ser utilizados.
how_about
x512
a_b_c_d


7


Em adio s regras acima para formao das variveis, as seguintes variveis so especiais no
MATLAB : ans, pi, eps, flops, inf, NaN, i, j, nargin, nargout, realmin e realmax





Tabela : Variveis Especiais
Variveis Especiais Significado
ans Nome default da varivel usado para resultados

pi Constante igual razo da circunferncia de um crculo para o seu
dimetro

eps O menor nmero tal que quando adicionado com um outro resulta em
um nmero diferente

flops Conta o nmero de operaes em ponto- flutuante

inf Indica um nmero infinito, p.e., 1/0

NaN Indica que no um nmero, p. e., 0/0

i (e) j
i=j= -1

nargin Nmero de argumentos de entrada usados em uma funo

nargout Nmero de argumentos de sada usados em uma funo

realmin O menor nmero real positivo utilizvel

realmax O maior nmero real positivo utilizvel

1.4 Obtendo Informaes da rea de Trabalho

Os exemplos de declaraes mostrados nos itens acima criaram variveis que so armazenadas
na rea de Trabalho do MATLAB. Executando

>>who

obtm-se uma lista das variveis armazenadas na rea de Trabalho:


Your variables are:

A ans rs x

Que mostra as cinco variveis geradas em nossos exemplos, incluindo ans.
Uma informao mais detalhada mostrando a dimenso de cada uma das variveis
correntes obtido com whos que para nosso exemplo produz:


8

Name Size Efements Bytes Density Complex
A 3 by 3 9 72 Full No
ans 1 by 1 1 8 Full No
r 1 by 3 3 24 Full No
s 1 by 1 1 8 Full No
x 1 by 6 6 48 Full No

Grand total is 20 elements using 160 bytes

Cada elemento de uma matriz real requer 8 bytes de memria, assim nossa matriz A de dimenso 3x3
usa 72 bytes e todas variveis utilizadas um total de 160 bytes.


1.5 Nmeros e Expresses Aritmticas

A notao decimal convencional, com ponto decimal opcional e o sinal de menos, usada para
nmeros. A potncia de dez pode ser includa como um sufixo. A seguir so mostrados alguns
exemplos de nmeros aceitos:

3 -99 0.00001
9.637458638 1.602E-20 6.06375e23

As expresses podem ser construdas usando os operadores aritmticos usuais e as regras de
precedncia:
1 ^ exponenciao
2 / diviso a direita
2 \ diviso a esquerda
3 * multiplicao
4 + adio
4 - subtrao

Deve-se notar que existem dois smbolos para diviso: as expresses 1/4 e 4\1 possuem o
mesmo valor numrico, isto , 0,25. Parnteses so usados em sua forma padro para alterar o mesmo
a precedncia usual dos operadores aritmticos.
1.6 Nmeros e Matrizes Complexas

Nmeros complexos so permitidos em todas operaes e funes no MATLAB. Os nmeros
complexos so introduzidos usando-se as funes especiais i e j. Por exemplo

>>z=3 +4*i

ou

>>z=3 +4*j

Outro exemplo

>>w=r * exp(i*theta)

As seguintes declaraes mostram dois caminhos convenientes para se introduzir matrizes
complexas no MATLAB:


9

>>A=[1 2; 3 4]+i*[5 6;7 8]

e

>>A=[1+5*i 2+6*i; 3+7*i 4+8*i]

que produzem o mesmo resultado.



Se i ou j forem usados como variveis, de forma que tenham seus valores originais modificados, uma
nova unidade complexa dever ser criada e utilizada de maneira usual:

>>ii =sqrt(-1);
>>z =3 +4*ii

1.7 Formato de Sada

O formato numrico exibido na tela pode ser modificado utilizando-se o comando format, que afeta
somente o modo como as matrizes so mostradas, e no como elas so computadas ou salvas (o
MATLAB efetua todas operaes em dupla preciso).
Se todos os elementos das matrizes so inteiros exatos, a matrizes mostrada em um formato sem
qualquer ponto decimal. Por exemplo,

>>x =[-1 0 1]

sempre resulta em

x =
-1 0 1

Se pelo menos um dos elementos da matriz no inteiro exato, existem vrias possibilidades de
formatar a sada. O formato default, chamado de formato short, mostra aproximadamente 5 dgitos
significativos ou usam notao cientfica. Por exemplo a expresso

>>x =[4/3 1.2345e-6]

mostrada , para cada formato usado, da seguinte maneira:

format short 1.3333 0.0000
format short e 1.3333e+000 1.2345e-006
format long 1.33333333333333 0.000000123450000
format long e 1.333333333333333e+000 1.234500000000000e-006
format hex 3ff5555555555555 3eb4b6231abfd271
format rat 4/3 1/810045
format bank 1.33 0.00
format + ++

Com o formato short e long, se o maior elemento da matriz maior que 1000 ou menor que 0.001,
um fator de escala comum aplicado para que a matriz completa seja mostrada. Por exemplo,



10
>>x =1.e20*x

resultado da multiplicao ser mostrado na tela.

X =
l.0e+20 *
1.3333 0.0000

O formato + uma maneira compacta de mostrar matrizes de grandes dimenses. Os smbolos "+", "-
", e "espao em branco" so mostrados, respectivamente para elementos positivos, elementos
negativos e zeros.


1.8 As Facilidades do HELP (Ajuda)

O MATLAB possui um comando de ajuda (help) que fornece informaes sobre a maior parte dos
tpicos. Digitando

>>help

obtm-se uma lista desses tpicos disponveis:

HELP topics:
c:\matlab -Establish MATLAB session parameters.
matlab\general -General purpose commands.
matlab\ops -Operators and special characters.
matlab\lang -Language constructs and debugging.
matlab\elmat -Elementary matrices and matrix manipulation.
matlab\specmat -Specialized matrices.
matlab\elfun -Elementary math functions.
matlab\specfun -Specialized math functions.
matlab\matfun -Matrix functions - numerical linear algebra.
matlab\datafun -Data analysis and Fourier transform functions.
matlab\polyfun -Polynomial and interpolation functions.
matlab\funfun -Function functions: nonlinear numerical methods.
matlab\sparfun -Sparse matrix functions.
matlab\plotxy -Two dimensional graphics.
matlab\piotxyz -Three dimensional graphics.
matlab\graphics -General purpose graphics functions.
matlab\color -Color control and lighting model functions.
matlab\sounds -Sound processing functions.
matlab\strfun -Character string functions.
matlab\iofun -Low-level file I/0 functions.
matlab\demos -Demonstrations and samples.
simulink\simulink -SIMULINK model analysis.
simulink\blocks -SIMULINK block library.
simulink\simdemos -SIMULINK demonstrations and samples.
nnet\exampies - Neural Network Toolbox examples.
nnet\nnet - Neural Network Toolbox.

For more help on directory/topic, type 'help topic".


11

Para obter informaes sobre um tpico especfico, digite help tpico. Por exemplo,

>>help plot

PLOT Linear plot.
PLOT(X,Y) plots vector Y versus vector X. If X or Y is a matrix,
then the vector is plotted versus the rows or columns of the matrix,
whichever line up. If X is a scalar and Y is a vector, length(Y)
disconnected points are plotted.

PLOT(Y) plots the columns of Y versus their index.
If Y is complex, PLOT(Y) is equivalent to PLOT(real(Y),imag(Y)).
In all other uses of PLOT, the imaginary part is ignored.

Various line types, plot symbols and colors may be obtained with
PLOT(X,Y,S) where S is a character string made from one element
from any or all the following 3 columns:

b blue . point - solid
g green o circle : dotted
r red x x-mark -. dashdot
c cyan + plus -- dashed
m magenta * star
y yellow s square
k black d diamond
v triangle (down)
^ triangle (up)
< triangle (left)
> triangle (right)
p pentagram
h hexagram

For example, PLOT(X,Y,'c+:') plots a cyan dotted line with a plus
at each data point; PLOT(X,Y,'bd') plots blue diamond at each data
point but does not draw any line.

PLOT(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3,...) combines the plots defined by
the (X,Y,S) triples, where the X's and Y's are vectors or matrices
and the S's are strings.

For example, PLOT(X,Y,'y-',X,Y,'go') plots the data twice, with a
solid yellow line interpolating green circles at the data points.

The PLOT command, if no color is specified, makes automatic use of
the colors specified by the axes ColorOrder property. The default
ColorOrder is listed in the table above for color systems where the
default is blue for one line, and for multiple lines, to cycle
through the first six colors in the table. For monochrome systems,
PLOT cycles over the axes LineStyleOrder property.

PLOT returns a column vector of handles to LINE objects, one
handle per line.


12

The X,Y pairs, or X,Y,S triples, can be followed by
parameter/value pairs to specify additional properties
of the lines.

See also SEMILOGX, SEMILOGY, LOGLOG, PLOTYY, GRID, CLF, CLC, TITLE,
XLABEL, YLABEL, AXIS, AXES, HOLD, COLORDEF, LEGEND, SUBPLOT,
STEM.

Overloaded methods
help cfit/plot.m
help fints/plot.m
help idmodel/plot.m
help iddata/plot.m
help cgrules/Plot.m
help xregtwostage/plot.m
help xregtransient/plot.m
help xregmodel/plot.m
help localmod/plot.m
help sweepset/plot.m
help mdevtestplan/plot.m
help cgdatasetnode/plot.m
help cgdatadisplay/plot.m
help ntree/plot.m
help dtree/plot.m
help wvtree/plot.m
help rwvtree/plot.m
help edwttree/plot.m

Finalmente, para obter informaes sobre um comando especfico, por exemplo title, digite:

>>help title

e as informaes mais detalhadas sobre este comando sero exibidas:

TITLE Graph title.
TITLE('text') adds text at the top of the current axis.

TITLE('text','Property1',PropertyValue1,'Property2',PropertyValue2,...)
sets the values of the specified properties of the title.

H =TITLE(...) returns the handle to the text object used as the title.

See also XLABEL, YLABEL, ZLABEL, TEXT.

Note que no exemplo mostrado para adicionar o ttulo em um grfico, TITLE
(TEXT) est escrito em letras maisculas somente para destacar. Deve-se lembrar que
todos os comandos do MATLAB devem ser escritas em letras minsculas, portanto, para
adicionar o texto Ttulo do Grfico em um grfico, digite:

>>title (Ttulo do Grfico)
1.9 Funes



13
A fora do MATLAB vem de um conjunto extenso de funes. O MATLAB possui um
grande nmero de funes intrnsecas que no podem ser alteradas pelo usurio. Outras funes
esto disponveis em uma biblioteca externa distribudas com o programa original (MATLAB
TOOLBOX), que so na realidade arquivos com a extenso .m criados a partir das funes
intrnsecas. A biblioteca externa (MATLAB TOOLBOX) pode ser constantemente atualizada
medida que novas aplicaes so desenvolvidas. As funes do MATLAB, intrnsecas ou arquivos
".m", podem ser utilizadas apenas no ambiente MATLAB.
As categorias gerais de funes matemticas disponveis no MATLAB
incluem:
Matemtica elementar;
Funes especiais;
Matrizes elementares;
Matrizes especiais;
Decomposio e fatorizao de matrizes;
Anlise de dados;
Polinmios;
Soluo de equaes diferenciais;
Equaes no-lineares e otimizao;
Integrao numrica;
Processamento de sinais.

As sees subseqentes mostram mais detalhes dessas diferentes categorias de funes.

2 OPERAES COM MATRIZES

As operaes com matrizes no MATLAB so as seguintes:

Adio;
Subtrao;
Multiplicao;
Diviso adireita;
Diviso a esquerda;
Exponenciao;
Transposta;

A seguir cada uma dessas operaes mostrada com mais detalhe.

2.1 Transposta

O caracter apstrofo, " ` " , indica a transposta de uma matriz. A declarao

>>A = [1 2 3; 4 5 6; 7 8 0]
>>B =A'

que resulta em

A =
1 2 3
4 5 6
7 8 0

B =


14
l 4 7
2 5 8
3 6 0

e
>>x =[-1 O 2]`

produz
x =
-1
0
2





Se Z uma matriz complexa, Z ser o conjugado complexo composto. Para obter simplesmente
a transposta de Z deve-se usar Z., como mostra o exemplo

>>Z =[1 2; 3 4] +[5 6; 7 8]*i
>>Z1 =Z
>>Z2 =Z.

que resulta em

Z =
1.0000 +5.0000i 2.0000 +6.0000i
6.0000 +7.0000i 4.0000 +8.0000i
Z1 =
1.0000 - 5.0000i 3.0000 - 7.0000i
2.0000 - 6.0000i 4.0000 - 8.0000i
Z2 =
1.0000 +5.0000i 3.0000 +7.0000i
2.0000 +6.0000i 4.0000 +8.0000i

2.2 Adio e Subtrao

A adio e subtrao de matrizes so indicadas, respectivamente, por + e -. As operaes
so definidas somente se as matrizes as mesmas dimenses. Por exemplo, a soma com as matrizes
mostradas acima, A + x, no correta porque A 3x3 e x 3x1. Porm,

>>C =A +B

aceitvel, e o resultado da soma

C =
2 6 10
6 10 14
10 14 0

A adio e subtrao tambm so definidas se um dos operadores um


15
escalar, ou seja, uma matriz l x l. Neste caso, o escalar adicionado ou subtrado de todos os
elementos do outro operador. Por exemplo:

>>y =x - 1

resulta em
y =

-2
-1
1

2.3 Multiplicao

A multiplicao de matrizes indicada por *. A multiplicao x*y definida somente se a
segunda dimenso de x for igual primeira dimenso de y. A multiplicao

>>x'* y

aceitvel, e resulta em

ans =
4

evidente que o resultado da multiplicao y'*x ser o mesmo. Existem dois outros produtos
que so transpostos um do outro.

>>x*y

ans =

2 l -l
0 0 0
-4 -2 2

>>y*x

ans =

2 0 -4
1 0 -2
-1 0 2

O produto de uma matriz por um vetor um caso especial do produto entre matrizes. Por
exemplo A eX,

>> b = A'x

que resulta em
b =
5
8
-7


16

Naturalmente, um escalar pode multiplicar ou ser multiplicado por qualquer matriz.

>>pi*x

ans =
-3.1416
0
6.2832

2.4 Diviso

Existem dois smbolos para diviso de matrizes no MATLAB "\" e "/". Se A
uma matriz quadrada no singular, ento A\B e B/A correspondem respectivamente multiplicao
esquerda e direita da matriz B pela inversa da matriz A, ou inv(A)*B e B*inv(A)N, mas o resultado
obtido diretamente. Em geral,

X =A\B a soluo de A*X = B
X = B/A a soluo de X*A = B



Por exemplo, como o vetor b foi definido como A*x, a declarao

>>z =A\b

resulta em

z =
-1
0
2

2.5 Exponenciao

A expresso A^p eleva A p-sima potncia e definida se A matriz quadrada e p um
escalar. Se p um inteiro maior do que um, a exponenciao computada como mltiplas
multiplicaes. Por exemplo,
>>A^3

ans =

279 360 306
684 873 684
738 900 441

MATLAB trata expresses como exp(A) e sqrt(A) como operaes de vetores, definidas em
cada elemento de A. As funes elementares de matrizes incluem
poly - polinmio caracterstico
det - determinante
trace - trao da matriz
exp - exponencial de cada elemento da matriz


17
log - logaritmo de cada elemento da matriz
sqrt - raiz quadrada de cada elemento da matriz
MATLAB tambm calcula funes transcendentais, tais como exponencial e logaritmo da
matriz. Estas funes especiais so definidas somente para matrizes quadradas. Uma funo
matemtica transcendental interpretada como uma funo da matriz se um m acrescentado ao nome
da funo. As trs funes abaixo so distribudas juntamente com o MATLAB
expm - matriz exponencial
logm - matriz logartmica
sqrtm - matriz raiz quadrada











3 OPERAES COM CONJUNTOS

O termo operaes com conjuntos usado quando as operaes aritmticas so realizadas
entre os elementos que ocupam as mesmas posies em cada matriz (elemento por elemento). As
operaes com conjuntos so feitas como as operaes usuais, utilizando-se dos mesmos caracteres
(*, /, \, ^ e ) precedidos por um ponto . (.*, ./, .\, .^ e . ).



3.1 Adio e Subtrao

Para a adio e a subtrao, a operao com conjuntos e as operaes com matrizes so as
mesmas. Deste modo os caracteres "+" e "-" podem ser utilizados tanto para operaes com matrizes
como para operaes com conjuntos.

3.2 Multiplicao e Diviso

A multiplicao de conjuntos indicada por .*. Se A e B so matrizes com as mesmas
dimenses, ento A.*B indica um conjunto cujos elementos so simplesmente o produto dos
elementos individuais de A e B. Por exemplo, se

>>x =[1 2 3]; y =[4 5 6];

ento,

>>z =x .* y


resulta em

z=
4 10 18


18

As expresses A./B e A.\B formam um conjunto cujos elementos so simplesmente os
quocientes dos elementos individuais de A e B. Assim,

>>z =x .\ y
resulta em

z =
4.0000 2.5000 2.0000

3.3 Exponenciao

A exponenciao de conjuntos indicada por .^. A seguir so mostrados alguns exemplos
usando os vetores x e y. A expresso

>>z =x .^y

resulta em

z =
l 32 729

A exponenciao pode usar um escalar.

>>z =x..^2

z =
l 4 9

Ou, a base pode ser um escalar.

>>z =2.^[x y]

z =
2 4 8 16 32 64

3.4 Operaes Comparativas

Estes so os seis operadores usados para comparao de duas matrizes com as mesmas
dimenses:

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

A comparao feita entre os pares de elementos correspondentes e o resultado uma matriz
composta dos nmeros um e zero, com um representando VERDADEIRO e zero, FALSO. Por
exemplo,



19
>>2 +2 ~=4

ans =
0

Pode-se usar, tambm os operadores lgicos & (e) e I (ou). Por exemplo,

>>1==1 & 4 ==3

ans =
0

>>1 ==1 | 4 ==3

ans =
1
3.5 Operaes Lgicas

Os operadores &, | e ~correspondem aos operadores lgicos e, ou e no.
C =A & B uma matriz cujo os elementos so 1s onde ambas as matrizes A e B so elementos no-
nulos, e 0s onde uma das matrizes ou ambas so elementos nulos.
C =A | B uma matriz cujo os elementos so 1s onde tanto A ou B possuem elementos no-nulos, e
0s onde ambas posssuem elementos nulos.
B =~A uma matriz cujo os elementos so 1s onde a matriz A um elemento nulo, e 0s quando A
um elemento no-nulo.
Todas as operaes acima so vlidas apenas para quando A e B possuem mesma dimenso, ou
quando uma das duas matrizes um escalar.
As funes lgicas e relacionais do MATLAB so:

any - condies lgicas
all - condies lgicas
find - encontra os ndices da matriz de valores lgicos
exist - verifica a existncia de variveis
isnan - detecta se algum elemento da matriz NaN
isinf - detecta se algum elemento da matriz infinito
finite - verifica os valores finitos da matriz
isempty - detecta matrizes vazias
isstr - detecta variveis string
isglobal - detecta variveis globais
issparse - detecta matrizes esparsas


3.6 Funes Matemticas

A funes trigonomtricas includas no MATLAB so
sin - seno
cos - cosseno
tan - tangente
asin - arco-seno
acos - arco-cosseno
atan - arco-tangente
atan2 - arco-tangente para os quatro quadrantes


20
sinh - seno hiperblico
cosh - cosseno hiperblico
tanh - tangente hiperblica
asinh - arco-seno hiperblico
acosh - arco-cosseno hiperblico
atanh - arco-tangente hiperblico

MATLAB inclui como funes elementares
abs - valor absoluto ou mdulo de um nmero complexo
angle - ngulo de fase
sqrt - raiz quadrada
real - parte real
imag - parte imaginria
conj - complexo conjugado
round - arredondamento para o inteiro mais prximo
fix - arredondamento para o inteiro mais prximo de zero
floor - arredondamento para o inteiro mais prximo de -
ceil - arredondamento para o inteiro mais prximo de +
sign - funo sinal
rem - remanescente ou mdulo
gcd - mximo divisor comum
lcm - mnimo mltiplo comum
exp - exponencial de base e
log - logaritmo natural
log10 - logaritmo de base 10

4 MANIPULAO DE VETORES E MATRIZES

O MATLAB permite a manipulao de linhas, colunas, elementos individuais e partes de
matrizes.

4.1 Gerando Vetores

Os dois pontos, : , um caracter importante no MATLAB. A declarao

>>x =1 : 5

gera um vetor linha contendo os nmeros de 1 a 5 com incremento unitrio. Produzindo

x =
l 2 3 4 5

Outros incrementos, diferentes de um, podem ser usados.

>>y =0 : pi/4 : pi

que resulta em

y =
0.0000 0.7854 1.5708 2.3562 3.1416

Incrementos negativos tambm so possveis.



21
>>z =6 : -l : l

z =
6 5 4 3 2 1

Pode-se, tambm, gerar vetores usando a funo linspace. Por exemplo,

>>k =linspace (0, l, 6)

k =
0 0.2000 0.4000 0.6000 0.8000 1.0000

gera um vetor linearmente espaado de 0 a 1, contendo 6 elementos.

4.2 Elementos das Matrizes

Um elemento individual da matriz pode ser indicado incluindo os seus subscritos entre
parnteses. Por exemplo, dada a matriz A:

A =

l 2 3
4 5 6
7 8 9

a declarao

>>A(3,3) =A(1,3) +A(3,l)

resulta em

A =
l 2 3
4 5 6
7 8 10

Um subscrito pode ser um vetor. Se X e V so vetores, ento X(V) [X(V(1)), X(V(2)), ....
X(V(n))]. Para as matrizes, os subscritos vetores permitem o acesso submatrizes contnuas e
descontnuas. Por exemplo, suponha que A uma matriz 10x10.

A =
92 99 11 18 15 67 74 51 58 40
98 80 17 14 16 73 55 57 64 41
14 81 88 20 22 54 56 63 70 47
85 87 19 21 13 60 62 69 71 28
86 93 25 12 19 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 15 82 89 91 48 30 32 39 66
79 16 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59



22
ento

>>A(1:5,3)


ans =
11
17
88
19
25

especifica uma submatriz 5x1, ou vetor coluna, que consiste dos cinco primeiros elementos da terceira
coluna da matriz A. Analogamente,

>>A(1:5,7:10)

ans =

74 51 58 40
55 57 64 41
56 63 70 47
62 69 71 28
68 75 52 34

uma submatriz 5x4, consiste das primeiras cinco linhas e as ltimas quatro colunas.
Utilizando os dois pontos no lugar de um subscrito denota-se todos elementos da linha ou
coluna. Por exemplo,

>>A(1:2:5,:)


ans =

92 99 11 18 15 67 74 51 58 40
14 81 88 20 22 54 56 63 70 47
86 93 25 12 19 61 68 75 52 34

uma submatriz 3x10 que consiste da primeira, terceira e quinta linhas e todas colunas da matriz A.
Muitos efeitos sofisticados so obtidos usando submatrizes em ambos os lados das
declaraes. Por exemplo, sendo B uma matriz 10x10 unitria,

>>B =ones (10)











23
B =

1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1

a declarao,
>> B(1:2:7,6:l0) =A(S:-1:2,1:5)
produz

1 1 1 1 1 86 93 25 12 19
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 85 87 19 21 13
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 14 81 88 20 22
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 98 80 17 14 16
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1


4.3 Matrizes Especiais

MATLAB apresenta algumas funes teis para gerar matrizes:
zeros - zeros
ones - constante
rand - elementos randmicos uniformemente distribudos
randn - elementos randmicos normalmente distribudos
eye - identidade
linspace - vetores espaados linearmente
logspace - vetores espaados logaritmicamente
meshgrid - utilizada com funes de duas variveis

4.4 Manipulao de Matrizes

rot90 - rotao
fliplr - inverte a matriz da esquerda para a direita
flipud - inverte a matriz de cima para baixo
diag - extrai ou cria diagonal
tril - tringulo inferior


24
triu - tringulo superior
reshape - altera o formato
- transposio
: - rearranjamento geral

5 FUNES

Uma classe de comandos do MATLAB no trabalha com matrizes numricas, mas com
funes matemticas. Esses comandos incluem:

Integrao numrica;
Equaes no-lineares e otimizao;
Soluo de equaes diferenciais.

As funes matemticas so representadas no MATLAB por arquivos ".m". Por exemplo, a
funo

est disponvel no MATLAB como um arquivo ".m" chamado humps.m:

function y =humps(x)

y =l ./ ((x-.3).^2 +.0l) +1./((x-.9).^2 +.04) - 6;


O grfico da funo :

>>x =-l:0.0l:2;
>>plot(x,humps(x))


-1 -0.5 0 0.5 1 1.5 2
-20
0
20
40
60
80
100



25

5.1 Integrao Numrica

A rea abaixo da curva pode ser determinada atravs da integrao numrica da funo
humps(x), usando o processo chamado quadratura. Integrando a funo humps(x) de -1 a 2:

>>q =quad (humps,-1,2)

q =
26.3450

Os dois comandos do MATLAB para integrao usando quadratura so:

quad Calcular integral numericamente, mtodo para baixa ordem.
quad8 Calcular integral numericamente, mtodo para alta ordem.

5.2 Equaes No-Lineares e Otimizao

Os dois comandos para equaes no-lineares e otimizao incluem:

fmin Minimizar funo de uma varivel.
fmins Minimizar funo de vrias variveis
fzero Encontrar zero de funo de uma varivel.



Continuando o exemplo, a localizao do mnimo da funo humps(x) no intervalo de 0.5 a 1
obtido da seguinte maneira,

>>xm =fmin(humps,0.5,1)

xm =
0.6370

>>ym =humps(xm)

ym =
11.2528

E o grfico deste intervalo com o ponto de mnimo pode ser construdo:

>>x =0.5:0.01:1
>>plot(x, humps(x), xm, ym, o)


26


Pode-se ver que a funo humps(x) apresenta dois zeros no intercalo de -1 a 2. A localizao
do primeiro zero prxima do ponto x =0,

xzl =fzero('humps',0)

xzl =
-0.1316

e a localizao do segundo zero prxima do ponto x=1,

>>xz2=fzero('humps',1)
xz2 =
1.2995

O grfico da funo com os dois zeros obtido atravs da expresso:

>>x =-1:0.01:2
>>plot(x, humps(x), xzl, humps(xzl),'*', xz2, humps(xz2), '+'), grid



27


5.3 Equaes Diferenciais

Os comandos do MATLAB para resolver equaes diferenciais ordinrias so:

ode23 Resolver equao diferencial. mtodo baixa ordem.
ode23p Resolver e plotar solues.
ode45 Resolver equao diferencial. Mtodo para alta ordem

Considere a equao diferencial de segunda ordem chamada de Equao de Van der Pol

x + (x
2
- 1) . x +x =0

Pode-se rescrever esta equao como um sistema acoplado de equaes diferenciais de
primeira ordem

x
1
=x
1
. (1-x
2
2
) - x
2

x
2
=x
1


O primeiro passo para simular esse sistema criar um arquivo .m contendo essas equaes
diferenciais. Por exemplo, o arquivo volpol.m:

function xdot=volpol(t,x)

xdot=[0 0]

xdot(l)=x(l).*(1- x(2).^2) - x(2);

xdot(2)=x(l);









28
Para simular a equao diferencial no intervalo 0 t 20, utiliza-se o comando ode23

>>t0 =0; tf =20;

>>x0 =[0 0.25];

>> [t,x] =ode23('volpol', t0, tf, x0);

>> plot(t,x)




29

6 GRFICOS

A construo de grficos no MATLAB mais uma das facilidades do sistema. Atravs de
comandos simples pode-se obter grficos bidimensionais ou tridimensionais com qualquer tipo de
escala e coordenada. Existe no MATLAB uma vasta biblioteca de comandos grficos.

6.1 Grficos Bidimensionais

Estes so os comandos para plotar grficos bidimensionais:


plot Plotar linear.
loglog Plotar em escala loglog.
semilogx Plotar em semilog.
semilogy Plotar em semilog.
fill Desenhar polgono 2D.
polar Plotar em coordenada polar.
bar Grfico de barras.
stem Seqncia discreta.
stairs Plotar em degrau.
errorbar Plotar erro.
hist Plotar histograma.
rose Plotar histograma em ngulo.
compass Plotar em forma de bssola.
feather Plotar em forma de pena.
fplot Plotar funo.
comet Plotar com trajetria de cometa.


Se Y um vetor, plot(Y) produz um grfico linear dos elementos de Y versos o ndice dos
elementos de Y. Por exemplo, para plotar os nmeros [0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14], entre com
o vetor e execute o comando plot:

>> Y =[0.0, 0.48, 0.84, 1.0, 0.91, 0.6, 0,14];
>>plot(Y)

e o resultado mostrado na J anela Grfica:


30


Se X e Y so vetores com dimenses iguais, o comando plot(X,Y) produz um grfico
bidimensional dos elementos de X versos os elementos de Y, por exemplo

>>t =0:0.05:4*pi;
>>y =sin(t);
>>plot(t,y)

resulta em



31


O MATLAB pode tambm plotar mltiplas linhas e apenas um grfico. Existem duas
maneiras, a primeira usado apenas dois argumentos, como em plot(X,Y), onde X e/ou Y so
matrizes. Ento:

Se Y uma matriz e X um vetor, plot(X,Y) plota sucessivamente as linhas ou
colunas de Y versos o vetor X.

Se X uma matriz e Y um vetor, plot(X,Y) plota sucessivamente as linhas ou
colunas de X versos o vetor Y.

Se X e Y so matrizes com mesma dimenso, plot(X,Y) plota sucessivamente as
colunas de X versos as colunas de Y.

Se Y uma matriz, plot(Y) plota sucessivamente as colunas de Y versos o ndice
de cada elemento da linha de Y.

A segunda, e mais fcil, maneira de plotar grficos com mltiplas linhas usando o
comando plot com mltiplos argumentos. Por exemplo:

>>plot(t, sin(t), t, cos(t), t, sin(t +pi), t, cos(t +pi))






32
6.2 Estilos de Linha e Smbolo

Os tipos de linhas, smbolos e cores usados para plotar grficos podem ser controlados se os
padres no so satisfatrios. Por exemplo,

>>X =0:0.05:1;
>>subplot(l2l), plot(X,X.^2,k*)
>>subplot(l22), plot(X,X.^2,k --)



Outros tipos de linhas, pontos e cores tambm podem ser usados:

TIPO DE LINHA
- ----
- - -----------------
-. ---------
:



TIPO DE PONTO



+ +++++++++
x x x x x x x x






33
CORES
y amarelo
m lils
c azul claro
r vermelho
g verde
b azul escuro
w branco
k preto

6.3 Nmeros Complexos

Quando os argumentos para plotar so complexos, a parte imaginria ignorada, exceto
quando dado simplesmente um argumento complexo. Para este caso especial plotada a parte real
versos a parte imaginria. Ento, plot(Z), quando Z um vetor complexo, equivalente a
plot(real(Z),imag(Z)).

6.4 Escala Logartmica, Coordenada Polar e Grfico de Barras

O uso de loglog, semilogx, semilogy epolar idntico ao uso de plot. Estes comandos so
usados para plotar grficos em diferentes coordenadas e escalas:

polar(Theta,R) plota em coordenadas polares o ngulo THETA, em radianos,
versos o raio R;
loglog plota usando a escala log
10
xlog
10
;
semilogx plota usando a escala semi-logartmica. O eixo x log
10
e o eixo y
linear;
semilogy plota usando a escala semi-logartmica. O eixo x linear e o eixo y
log
10
;

O comando bar(X) mostra um grfico de barras dos elementos do vetor X, e no aceita
mltiplos argumentos.

6.5 Plotando Grficos Tridimensionais e Contornos

Estes so alguns comandos para plotar grficos tridimensionais e contornos.

Plot3 Plotar em espao 3D.
fill3 Desenhar polgono 3D.
comet3 Plotar em 3D com trajetria de cometa.
contour Plotar contorno 2D.
contour3 Plotar contorno 3D.
clabel Plotar contorno com valores.
quiver Plotar gradiente.
mesh Plotar malha 3D.
meshc Combinao mesh/contour.
surf Plotar superfcie 3D.
surfc Combinao surf/contour.
surfil Plotar superfcie 3D com iluminao.
slice Plot visualizao volumtrica.
cylinder Gerar cilindro.
sphere Gerar esfera.


34

O comando mesh(X,Y,Z) cria uma perspectiva tridimensional plotando os elementos da
matriz Z em relao ao plano definindo pelas matrizes X eY. Por exemplo,
>>[X,Y] =meshgrid(-2:.2:2, -2:.2:2);
>>Z =X.* exp(-X..^2 - Y.^2);
>>mesh(X,Y,Z)



e o comando contour(Z,10) mostra a projeo da superfcie acima no plano xy com 10 iso-linhas:





35
6.6 Anotaes no Grfico

O MATLAB possui comandos de fcil utilizao para adicionar informaes em um grfico:

title Ttulo do grfico.
xlabel Ttulo do eixo-X.
ylabel Ttulo do eixo-Y.
zlabel Ttulo do eixo-Z.
text Inserir anotao no grfico.
gtext Inserir anotao com o mouse.
grid Linhas de grade.
legend Inserir legenda dos grficos traados.

Por exemplo:

>>fplot(sin, [-pi pi])
>>title(Grfico da funo f(x)=seno(x), -pi<x<pi)
>>xlabel(x)
>>ylabel(f(x))
>>grid










36
7. Anlise de Dados

Este captulo apresenta um grupo de funes que possuem a capacidade de anlise de dados.
Um grupo de funes que possui a capacidade de anlise de dados mostrado abaixo:
max - valor mximo
min - valor mnimo
mean - valor mdio
std - desvio mdio
sort - ordenar
sum - soma dos elementos
prod - produto dos elementos
cumsum - soma acumulativa dos elementos
cumprod - produto acumulativo dos elementos
hist - histograma

Quando os argumentos forem vetores, no ir importar se o vetor orientado por linha ou por coluna.
Se o argumento for uma matriz, as funes operaro orientadas por coluna. Desta forma, se voc
aplicar a funo max a uma matriz, o resultado um vetor linha contendo o valor mximo de cada
coluna.

8. FUNES DE MATRIZ

Neste captulo so descritas algumas funes especiais para aplicaes em matrizes, tais como
fatorao e decomposio.

8.1 Fatorao Triangular

O mtodo de fatorao mais bsico expressa uma matriz qualquer como o produto de duas
matrizes essencialmente triangulares, sendo uma delas a permutao de uma matriz triangular inferior
e a outra uma matriz triangular superior. Esta fatorao frequentemente chamada de LU, ou, em
algumas vezes, de LR.
A linha de comando descrita como
>>[L,U] =lu(A)
onde L a permutao da matriz triangular inferior e U a matriz triangular superior.

8.2 Fatorao Ortogonal

A fatorao QR utilizada tanto para matrizes quadradas como retangulares. Esta fatorao
expressa a matriz como o produto de uma matriz ortonormal e uma matriz triangular superior.
A linha de comando para esta fatorao descrita como
>>[Q,R] =qr(A)
onde Q a matriz ortonormal e R a matriz triangular superior.

8.3 Decomposio dos Autovalores

Se A uma matriz n-por-n, os n nmeros que satisfazem Ax =x so os autovalores de A. Eles
so encontrados utilizando
>>eig(A)
que retorna os autovalores em uma vetor coluna. Se A real e simtrica, os autovalores so reais. Mas
se A no simtrica, os autovalores frequentemente so nmeros complexos. Para se obter os
autovalores e os autovetores de uma vez basta utilizar a seguinte linha de comando:


37
>>[X,D] =eig(A)
onde os elementos da diagonal de D so os autovalores e as colunas de X so os autovetores
correspondentes tais que AX =XD.

9. POLINMIOS E PROCESSAMENTO DE SINAIS

A representao polinomial e o tratamento dois polinmios so tratados neste captulo.

9.1 Representao Polinomial

MATLAB representa polinmios como vetores linha contendo os coeficientes na ordem
decrescente de potncia. Por exemplo, a equao caracterstica da matriz
A =
1 2 3
4 5 6
7 8 0

computada atravs de
>>p =poly(A)

p =
1 -6 -72 -27
Esta a representao do MATLAB para o polinmio s
3
6s
2
72s -27.
As razes desta equao so dadas por
>>r =roots(p)

r =
12.1229
-5.7345
-0.3884

As razes da equao caracterstica so os autovalores da matriz A. Pode-se obter o polinmio original
atravs das razes encontradas acima
>>p2 =poly
p2 =
1 -6 -72 -27

Considere os polinmios a(s) =s
2
+2s +3 e b(s) =4s
2
+5s +6. O produto dos polinmios feito
atravs da convoluo dos coeficientes
>>a =[1 2 3]; b =[4 5 6];
>>c =conv(a,b)
c =
4 13 28 27 18
Uma lista completa das funes polinomiais inclui
poly - polinmio caracterstico
roots - razes do polinmio
polyval - avalia o polinmio com o argumento substituindo a varivel
polyvalm - avalia o polinmio com o argumento sendo uma matriz
conv - multiplicao
deconv - diviso
residue - expanso em fraes parciais
polyder - derivada do polinmio
polyfit - ajuste do polinmio


38
9.2 Processamento de Sinais

Vetores so utilizados para guardar sinais amostrados ou seqncias em processamento de
sinais. Para sistemas de vrias entradas, cada linha de uma matriz corresponde a um ponto de amostra
onde as colunas representam os diversos canais. MATLAB possui algumas funes de processamento
de sinais:
abs - mdulo de um nmero complexo
angle - ngulo de fase de um nmero complexo
conv - convoluo
deconv - desconvoluo
fft - transformada de Fourier
ifft - transformada de Fourier inversa
fftshift - troca os quadrantes da matriz Para argumentos bidimensionais, como matrizes, usam-se as
funes modificadas:
fft2 - fft bidimensional
ifft2 - ifft bidimensional
conv2 - convoluo bidimensional

9.3 Filtro de Dados

A funo
>>y =filter(b, a, x)
filtra os dados contidos no vetor x com o filtro descrito pelos vetores a e b, criando os dados filtrados
y. A estrutura do filtro pode ser descrita pela equao diferencial
y(n) =b(1)x(n) +b(2)x(n 1) +... +b(nb)x(n nb +1) a(2)y(n 1) ... a(na)y(n na +1)
ou de modo equivalente, pela transformada Z

H(z) =Y(z) =b(1) +b(2)z
1
+...+b(nb)z
(na 1)

X(z) 1 +a(2)z
1
+...+a(na)z
(na 1)


A funo freqz retorna a resposta complexa em freqncia de filtros digitais.

10. CONTROLE DE FLUXO

Os comandos que controlam o fluxo especificam a ordem em que a computao feita. No
MATLAB estes comandos so semelhantes aos usados na linguagem C, mas com uma estrutura
diferente.

10.1 Lao for

O lao for o controlador de fluxo mais simples e usado na prograo MATLAB.
Analisando a expresso

>>for i=1:5,
X(i)=i^2;
end

pode-se notar que o lao for dividido em trs partes:

A primeira parte (i=1) realizada uma vez, antes do lao ser
inicializado.



39
A segunda parte o teste ou condio que controla o lao, (i<=5).
Esta condio avaliada; se verdadeira, o corpo do lao (X(i)=i^2) executado.

A terceira parte acontece quando a condio se torna falsa e o lao
termina.

O comando end usado como limite inferior do corpo do lao.
comum construes em que conjuntos de laos for so usados principalmente com
matrizes:

for i=1:8
for j=1:8,
A(i,j)=i+j;
B(i,j)=i-j;
end
end
C=A+B;

10.2 Lao while

No lao while apenas a condio testada. Por exemplo na expresso

a =l; b =15;
while a<b,
clc
a =a+l
b =b-l
pause(l)
end
disp(fim do loop)

a condio a<b testada. Se ela for verdadeira o corpo do lao, ser executado.
Ento a condio retestada, e se verdadeira o corpo ser executado novamente. Quando o
teste se tornar falso o lao terminar, e a execuo continuar no comando que segue o lao aps o
end.

10.3 Declaraes if e break

A seguir, apresentado um exemplo do uso da declarao if no MATLAB.

for i =l:5,
for j =l:5,
if i ==j
A(i,j) =2;
elseif abs(i-j) ==1
A(i,j) =-1;
else
A(i,j) =0;
end
end
end
A


40
Os valores de i e j variam de 1 a 5, varrendo toda a matriz A. Se (if) i for igual a j, A(i,j)=2,
ou se (elseif) o valor absoluto de i-j for igual a 1, A(i,j)=-1, ou (else) A(i,j)=0, se nenhuma das
condies anteriores forem satisfeitas.

conveniente, s vezes, controlarmos a sada deu m lao de outro modo alm do teste, no
incio ou no fimdo mesmo. O comando break permiteuma sada antecipada de um for ou while. Um
comando break faz com que o lao mais interno seja terminado imediatamente. Por exemplo,


%modifica a matriz A
clc
x =s;
for i =l:5,
if x ==q,
break
end
j =l;
while j<=5,
[A(num2str(i) , num2str(j)) =num2str(A(i,j))]
x =input(Modifica? (s-sim, n-no, p-prxima linha, q-sair) =>);
if x ==s,
A(i,j) =input(Entre com o novo valor de A(i,j) ==>);
j=j+l;
clc
end
if x ==n,
j=j+l;
clc
end
if x ==p,
clc
break
end
if x ==q,
clc
break
end
end
end

11. ARQUIVOS .m

Os comandos do MATLAB so normalmente digitados na J anela de Comando, onde uma
nica linha de comando introduzida e processada imediatamente. O MATLAB tambm capaz
de executar seqncias de comandos armazenadas em arquivos.
Os arquivos que contm as declaraes do MATLAB so chamadas arquivos .m, e
consistem de uma seqncia de comandos normais do MATLAB, possibilitando incluir outros
arquivos .m escritos no formato texto (ASCII).
Para editar um arquivo texto na J anela de Comando do MATLAB selecione New M-File
para criar um novo arquivo ou Open M-File para editar um arquivo j existente, a partir do menu
File. Os arquivos podem, tambm, ser editados fora do MATLAB utilizando qualquer editor de
texto.


41
Existem alguns comandos e declaraes especiais para serem usados nos arquivos, por
exemplo

%Plota uma funo y=ax^2 +bx +c no intervalo -5<x<5
clear
aux=s;
while aux==s,
clc
a=input(a =);
b=input(b =);
c=input(c =);
x=-5:0.1:5;
y=a*x.^2+b*x+c;
plot(y)
figure(1)
pause
clc
close
aux=input(Plotar outro ? (s/n) ==>,s);
end

O caracter % usado para inserir um comentrio no texto, o comando clear apaga todos os dados
da memria, o comando input usado quando se deseja entrar com um dado a partir da J anela de
Comando, pause provoca uma pausa na execuo do arquivo at que qualquer tecla seja digitada,
clc limpa a J anela de Comando, figure(1) mostra a J anela Grfica nmero 1 e close fecha todas as
J anelas Grficas.

11.1 Arquivos-M: Scripts e Funes

Um dos assuntos mais importantes, a criao de arquivos-M descrita neste captulo.
MATLAB usualmente acionado por um comando; quando se entra com uma simples linha de
comando, MATLAB a processa imediatamente e mostra o resultado. MATLAB tambm pode
executar uma sequncia de comandos que est armazenada em um arquivo.
Arquivos de disco que possuem linhas de comando para MATLAB so chamados arquivos-M
em virtude de sua extenso ser do tipo .m. Por exemplo, o arquivo bessel.m contm linhas de comando
do MATLAB para avaliar funes Bessel. Um arquivo-M consiste de uma seqncia normal de linhas
de comando do MATLAB, a qual pode fazer uma chamada a outros arquivos-M. Um arquivo-M pode
chamar a si mesmo de modo recursivo. Pode-se criar estes arquivos com um editor de textos como o
Notepad ou o Word.
Dois tipos de arquivos-M podem ser usados: scripts e funes. Scripts, ou arquivos script,
realizam longas seqncias de comandos. Funes, ou arquivos funo, permitem adicionar novas
funes funes j existentes. A maior parte do poder do MATLAB se deve ao fato de se poder criar
novas funes que resolvam problemas especficos.

11.2 Arquivos Script

Quando um script chamado, MATLAB simplesmente executa os comandos encontrados no
arquivo. As linhas de comando de um arquivo script operam globalmente com os dados que esto no
espao de trabalho. Scripts so teis na realizao de anlise, soluo de problemas, ou no projeto de
longas seqncias de comando, o que se torna cansativo para ser feito interativamente. Como um
exemplo, suponha um arquivo chamado fibno.m que possui os comandos:
f =[1 1]; i =1;
while f(i) +f(i+1) <1000


42
f(i+2) =f(i) +f(i+1);
i =i +1;
end
plot(f)
Digitando a linha de comando fibno faz com que MATLAB execute os comandos, calculando
os 16 primeiros nmeros da srie de Fibonacci, e crie um grfico. Aps a execuo do arquivo estar
completa, as variveis f e i ficam mantidas no espao de trabalho.
Os demos fornecidos pelo MATLAB so bons exemplos de como se utilizar scripts para realizar
tarefas mais complicadas. Para us-los, basta digitar demos no prompt do MATLAB.

11.3 Arquivos Funo

Um arquivo-M que contm a palavra function no nicio da primeira linha um arquivo funo.
Uma funo difere de um script pelos argumentos que devem ser passados e pelas variveis que so
definidas e manipuladas, que so locais funo e no podem ser operadas globalmente no espao de
trabalho. O arquivo mean.m um exemplo de um arquivo funo que possui as linhas de comando:
function y =mean(x)

% MEAN Average or mean value
% For vectors, Mean(x) returns the mean value
% For matrices, MEAN(x) is a row vector
% containing the mean value of each column.
[m,n] =size(x);
if m ==1
m =n;
end
y =sum(x)/m;

A existncia deste arquivo define uma nova funo chamada mean. A nova funo mean
usada como qualquer outra funo do MATLAB. Por exemplo, se z um vetor de inteiros de 1 a 99,
>>z =1:99;
o valor mdio deste encontrado atravs do comando
>>mean(z)
que resulta em
ans =
50
As informaes abaixo so para o arquivo mean.m, mas o princpio vlido para todos os
arquivos funo:
A primeira linha declara o nome da funo e os argumentos de entrada e sada. Sem esta linha,
o arquivo um arquivo script, e no um arquivo funo.
O smbolo % indica que o restante da linha um comentrio e deve ser ignorado.
As primeiras linhas descrevem o arquivo-M e so mostradas quando voc digita help mean.
As variveis m, n e y so locais a mean e no aparecem no espao de trabalho aps mean ter
terminado. (Ou, se elas existem, permanecem inalteradas.)
No necessrio definir os inteiros de 1 a 99 em uma varivel de nome x. No exemplo, a
funo mean foi usada com uma varivel z. O vetor z que contm os inteiros de 1 a 99 foi passado ou
copiado para mean onde ele se tornou uma varivel local de nome x.
Pode-se criar uma ajuda online para os arquivos-M entrando com um texto de uma ou mais
linhas de comentrios, comeando pela segunda linha do arquivo. Por exemplo, o arquivo-M angle.m
contm
function p =angle(h)
%ANGLE Phase angle.
ANGLE(H) returns the phase angles, in radians, of a matrix with complex elements.


43

See also ABS, UNWRAP.
Quando se entra com help angle, as linhas 2, 3 e 4 so mostradas. Baseado nisto, a primeira
linha de comentrios em qualquer arquivo-M deve conter o maior nmero de informaes possveis.

11.4 Variveis Globais

Cada funo do MATLAB definida por um arquivo-M possui suas prprias variveis locais, as
quais no tem relao com as de outras funes e com as do espao de trabalho. Entretanto, se vrias
funes e tambm o plano de trabalho declararem uma varivel particular como global, ento todos
eles dividem a mesma varivel. Qualquer atribuio a esta varivel, em qualquer funo, fica
disponvel a todas as outras funes que a declaram como global.
Para fazer com que uma varivel seja global, basta escrever
global X Y Z
onde as variveis X, Y e Z iro trabalhar como sendo globais.

11.5 Strings de Texto

Strings de texto so entradas no MATLAB entre aspas simples ( ). Por exemplo,
>>s =Hello
resulta em
s =
Hello
O texto armazenado em um vetor, sendo um caractere por elemento. Neste caso,
>>size(s)
ans =
1 5
indica que s possui cinco elementos. Os caracteres so armazenados com seus valores ASCII, e a
funo abs mostra estes valores:
>>abs(s)
ans =
72 101 108 108 111

Utiliza-se colchetes para juntar variveis de texto em strings maiores:
>>s =[s, World ]
s =
Hello World

11.6 A Funo eval
A funo eval trabalha com variveis do tipo texto e implementa uma poderosa facilidade de
macro. eval(t) faz com que o texto contido em t seja avaliado. Por exemplo,
t =1/(i+j-1);
for i =1:n
for j =1:n
a(i,j) =eval(t);
end
end
Cria uma matriz a de dimenso n por n, onde cada elemento avaliado pela funo que est
descrita por t.



44

12. OPERAES COM O DISCO

Os comandos load e save so usados, respectivamente, para importar dados do disco
(rgido ou flexvel) para a rea de trabalho do MATLAB e exportar dados da rea de trabalho para
o disco. Outras operaes com o disco podem ser efetuadas, como executar programas externos,
trocar o diretrio de trabalho, listagem do diretrio, e sero detalhadas a seguir.


12.1 Manipulao do Disco

Os comandos cd, dir, delete, type ewhat do MATLAB so usados da mesma maneira que
os comandos similares do sistema operacional.

cd troca o diretrio de trabalho atual
dir lista o contedo do diretrio atual
delete exclui arquivo
type mostra o contedo do arquivo texto
what lista arquivos .m, .mat e .mex.

Para maiores detalhes sobre estes comandos utilize o help.

12.2 Executando Programas Externos

O caracter ponto de exclamao, !, um desvio e indica que o restante da linha ser um
comando a ser executado pelo sistema operacional. Este procedimento vem sendo historicamente
utilizado em todos as verses do MATLAB como prompt para indicar a execuo de um colando
do DOS, sendo muito til nas verses que usavam somente o DOS. No ambiente Windows,
entretanto, este comando desnecessrio, mas foi mantido nas verses do MATLAB para Windows.
Para entrar com o caracter de desvio no prompt do MATLAB, deve-se coloca-lo no Incio
do comando do DOS ou Windows que se deseja executar. Por exemplo, para carregar um aplicativo
como o programa Notepad do Windows (Bloco de Notas), sem sair do MATLAB, entre com

>>! Notepad

Uma nova janela aberta, o Notepad carregado, podendo ser utilizado da maneira usual.
Pode-se usar, tambm, qualquer comando implcito do DOS, por exemplo:
copy, fomat, ren, mkdjr, rmdir, ...

12.3 Importando e Exportando Dados

Os dados contidos na rea de Trabalho do MATLAB podem ser armazenados
em arquivos, no formato texto ou binrio, utilizando o comando save. Existem diversas
maneiras de utilizar este comando. Por exemplo. para armazenar as variveis X, Y e Z pode-se
fazer:

save salva os dados no arquivos binrio matlab.mat.
save X salva a matriz X no arquivo o binrio x.mat.
save arql X Y Z salva as matrizes X, Y e Z no arquivo binrio arq1.mat.
save arq2.sai X Y Z -ascii salva as matrizes X., Y e Z no arquivo texto arq2.sai com 8 dgitos.
Save arq3.sai X Y Z -ascii -
double
salva as matrizes X., Y e Z no arquivo texto arq3.sai com 16 dgitos.


45

Os dados obtidos por outros programas podem ser importados pelo MATLAB, desde que
estes dados sejam gravados em disco no formato apropriado. Se os dados so armazenados no
formato ASCII, e no caso de matrizes, com colunas separadas
por espaos e cada linha da matriz em uma linha do texto, o comando load
pode ser usado. Por exemplo suponha que um programa em linguagem C, depois de
executado, monta o arquivo teste.sai (mostrado abaixo) que contm uma matriz.

1.0000 2.0000 3.0000

4.0000 5.0000 6.0000

7.0000 8.0000 9.0000

Executando o comando:

>>load teste.sai

o MATLAB importa a matriz, que passa a se chamar teste:

>>teste

teste =

1 2 3
4 5 6
7 8 9

Obviamente, o MATLAB pode tambm importar (atravs do comando load) os dados que
foram anteriormente exportados por ele. Por exemplo, para importar as variveis X, Y e Z,
anteriormente exportadas usando o comando save, pode-se fazer:

save load
save X load x
save arq1 X Y Z load arq1
save arq2.sai X Y Z -ascii load arq2.sai
save arq3.sai X Y Z -ascii -double load arq3.sai

Deve-se ressaltar que o comando save, quando usado para exportar os dados do MATLAB em
formato texto, exporta apenas um bloco contendo todas as variveis. E quando importamos estes
comandos atravs do comando load, apenas uma varivel com nome do arquivo importada. Por
exemplo

>>X=rand(3,3)

X =
0.2190 0.6793 0.5194
0.0470 0.9347 0.8310
0.6789 0.3835 0.0346

>>Y =rand(3,3)



46
Y =
0.0535 0.0077 0.4175
0.5297 0.3835 0.6868
0.6711 0.0668 0.5890

>>save arq2.sai X Y -ascii
>>clear
>>load arq2.sai
>>arq2

arq2 =

0.2190 0.6793 0.5194
0.0470 0.9347 0.8310
0.6789 0.3835 0.0346
0.0535 0.0077 0.4175
0.5297 0.3834 0.6868
0.6711 0.0668 0.5890


13. O Debugger do MATLAB

Este captulo descreve comando que auxiliam na descoberta de erros que ocorrem durante o
tempo de execuo. Apesar da linguagem que MATLAB utiliza ser menos complexa que as outras
linguagens de programao, ele possui sua prpria sintaxe, e talvez seja necessrio reparar alguns
erros que venham a acontecer. MATLAB encontra erros de sintaxe durante a compilao. Estes erros
usualmente so fceis de consertar. MATLAB tambm pode encontrar erros durante o tempo de
execuo; estes erros tendem a ser mais difceis de serem repararados, pois o espao de trabalho local
funo perdido quando um erro fora o retorno ao prompt do MATLAB e ao espao de trabalho
principal. Se utiliza-se o ponto-e-vrgula para que os resultados imediatos das linhas de comando no
sejam mostrados, no se saber onde ocorreu o erro. Para se mostrar os resultados intermedirios,
pode-se utilizar qualquer um dos mtodos abaixo:
Remover os ponto-e-vrgulas de forma que se possa visualizar os resultados imediatos.
Adicionar o comando keyboard para que se possa examinar a situao do espao de trabalho
no ponto onde keyboard foi inserido.
Retirar a declarao de function para que os arquivos-M possam ser executados como script,
tornando os resultados intermedirios disponveis no espao de trabalho principal.
Utilizar o debugger do MATLAB.
Os trs primeiros mtodos requerem a edio do arquivo-M. O ltimo mtodo foi introduzido
a partir da verso 4.0 do MATLAB, e os seus comandos so:

dbstop Introduz uma interrupo
dbclear Remove a interrupo
dbcont Continua a execuo
dbdown Muda o contexto do espao de trabalho local
dbstatus Lista todas as interrupes
dbstep Executa uma ou mais linhas
dbtype Lista os arquivos-M com o nmero das linhas
dbup Muda o contexto do espao de trabalho local
dbquit Finaliza o modo debug




47
14. Arquivos E/S

As funes de E/S de arquivo do MATLAB que permitem a leitura e a escrita em formato
diferente ao gerados pelo mesmo so descritas neste captulo.
As funes de E/S (Entrada/Sada) de arquivo do MATLAB permitem a leitura de dados coletados em
outro formato diretamente pelo MATLAB, ou a escrita de dados gerados pelo MATLAB no formato
requerido por outro programa ou dispositivo. As funes lem e gravam arquivos de texto formatados
e arquivos binrios de dados.

14.1 Abrindo e Fechando Arquivos

Antes de se ler ou escrever em um arquivo, deve-se abri-lo com o comando fopen,
especificando o arquivo a ser aberto e a string de permisso. Por exemplo,
>>fid =fopen(pen.dat,r)
abre para leitura o arquivo pen.dat.
As strings de permisso disponveis so:
r para leitura
w para gravao
a para atribuio
r+ tanto para leitura como para gravao

Outras strings de permisso podem ser obtidas com o comando help fopen.
A funo fopen retorna um identificador de arquivo, que um inteiro positivo atribudo ao
arquivo pelo sistema operacional. Este identificador de arquivo basicamente um atalho para se
referenciar o arquivo. As funes de E/S de arquivo do MATLAB utilizam o identificador como
argumento para identificar o arquivo aberto para leitura, escrita ou encerramento. Se o arquivo no
pode ser aberto, fopen retorna -1 como identificador. aconselhvel testar o identificador cada vez
que um arquivo aberto. Um segundo valor que retornado pode fornecer informao adicional sobre
erros. Por exemplo, se MATLAB no encontra o arquivo pen.dat, o comando
>>[fid, message] =fopen(pen.dat,r)
atribui -1 para fid, e message recebe uma string com a forma abaixo
No such file or directory.
Uma vez aberto, o arquivo fica disponvel para leitura e gravao. Quando se termina a leitura
ou a gravao, usa-se fclose para fechar o arquivo. Por exemplo,
>>status =fclose(fid)
fecha o arquivo associado com o identificador fid, e
>>status =fclose(all)
fecha todos os arquivos abertos. Ambas as formas retornam 0 se esta operao for realizada com
sucesso, ou -1 se algo de errado acontecer.

14.2 Leitura de Arquivos com Dados em Binrio

A funo fread l arquivos de dados binrios. Na sua forma mais simples, ele l um arquivo
inteiro em uma matriz. Por exemplo,
>>fid =fopen(pen.dat,r);
>>A =fread(fid);
>>status =fclose(fid);
L todos os dados do demo penny como caractere, e os escreve em uma matriz A. Dois
argumentos opcionais a fread fazem o controle do nmero de valores lidos e a preciso de cada valor.
>>fid =fopen(pen.dat,r);
>>A =fread(fid,100);
>>status =fclose(fid);


48
L os 100 primeiros valores de dados em um vetor coluna A. Substituindo o nmero 100 pelas
dimenses de uma matriz [10,10], faz com que sejam lidos os mesmos 100 elementos, armazenando-
os em uma matriz 10x10. E
>>A =fread(fid,Inf)
L at o final do arquivo, preenchendo a matriz A como um vetor coluna. Omitir o tamanho do
argumento produz o mesmo efeito. O argumento de preciso numrica controla o nmero de bits lidos
em cada valor e a interpretao destes bits como valores caractere, inteiro ou ponto flutuante. Algumas
precises comuns incluem
char e uchar para caracteres com sinal e sem sinal (tipicamente 8 bits)
short e long para inteiros curtos e longos (tipicamente 16 e 32 bits, respectivamente)
float e double para valores em ponto flutuante de preciso simples e dupla (tipicamente 32 e 64
bits, respectivamente)
Se fid se referir a um arquivo aberto contendo valores em ponto flutuante, ento
>>A =fread(fid,10,float)
L 10 valores em ponto flutuante preenchendo um vetor coluna A.

14.3 Escrevendo em Arquivos com Dados em Binrio

A funo fwrite escreve os elementos de uma matriz em um arquivo com uma preciso
numrica especfica, retornando o nmero de valores escritos. Por exemplo,
>>fwriteid =fopen(magic5.bin,w);
>>count =fwrite(fwriteid,magic(5),integer*4);
>>status =fclose(fwriteid);
Cria um arquivo binrio de 100 bytes contendo os 25 elementos da matriz quadrada 5x5,
armazenados em inteiros de 4 bytes. Isto atribui 25 varivel count.

14.4 Escrevendo Arquivos de Texto Formatados e Strings

A funo fprintf converte dados em strings de caractere e os mostra na tela ou em um arquivo.
O formato de sada definido por um especificador de converso e por um texto. Os especificadores
de converso controlam a sada dos elementos de uma matriz. Os textos so copiados diretamente. Os
especificadores so precedidos pelo caractere %; converses comuns incluem
%e para notao exponencial
%f para notao de ponto fixo
%g que seleciona automaticamente o menor entre %e e %f
Campos opcionais no especificador de formato controlam o tamanho e a preciso do campo.
Por exemplo,
>>x =0: .1: 1;
>>y =[x; exp(x)];
>>fid =fopen(exptable.txt,w);
>>fprintf(fid,Exponential Function\n\n);
>>fprintf(fid,%6.2f %12.8f\n,y);
>>status =fclose(fid);
Cria um arquivo de texto contendo uma pequena tabela para a funo exponencial. A primeira
chamada a fprintf escreve o ttulo, seguido por dois comandos ENTER, o qual definido por \n. A
segunda chamada escreve a tabela propriamente dita. As strings de controle de formato definem o
formato de cada linha da tabela como:
- um valor de ponto fixo de seis caracteres com duas casas decimais
- dois espaos
- um valor de ponto fixo de doze caracteres com oito casas decimais





49

14.5 Lendo Arquivos de Texto Formatados e Strings

A funo de entrada de texto do MATLAB, fscanf, similar funo fprintf. fscanf possui
como argumento o identificador para o arquivo de texto aberto, e uma string de controle do formato
contendo caracteres e especificadores de converso, nesta ordem. Os especificadores para fscanf so
precedidos pelo caractere %; converses comuns incluem
%s para converter uma string
%d para converter um nmero decimal
%f para converter um valor em ponto flutuante
O exemplo a seguir faz a leitura do arquivo com os dados exponenciais escrito anteriormente:
>>fid =fopen(exptable.txt,r);
>>title =fscanf(fid,%s);
>>[table,count] =fscanf(fid, %d %f );
>>status =fclose(fid);

A linha do ttulo combina com o especificador %s na primeira chamada fscanf. A segunda
chamada entra com a tabela de valores, combinando alternadamente um valor decimal e um valor em
ponto flutuante, como lido em cada linha da tabela, at que o fim do arquivo seja atingido. count
retorna o nmero de valores combinados.
Um argumento opcional controla o nmero de elementos lidos da matriz. Por exemplo, se fid
faz referncia a um arquivo aberto contendo os strings de decimal ento
>>A =fscanf(fid,%5d,100);
faz a leitura de 100 valores decimais para um vetor coluna A, e
>>A =fscanf(fid,%5d,[10,10]);
Faz a leitura de 100 valores decimais para uma matriz A 10x10.


15. Grficos Avanados

O sistema grfico do MATLAB incorpora uma variedade de tcnicas sofisticadas para
apresentao e visualizao de dados. Este sistema construdo atravs de um conjunto de objetos
grficos, tais como linhas e superfcies, cuja presena pode ser controlada pelo ajuste dos valores das
propriedades de cada objeto. Entretanto, em virtude do MATLAB possibilitar um rico ajuste nas
funes grficas 2-D e 3-D, na maior parte do tempo no necessrio acessar estes objetos grficos, os
quais so considerados objetos de baixo nvel.

15.1 Grficos 2-D

15.1.1 Importando Dados

MATLAB permite que sejam importados e plotados dados gerados fora dele. Suponhando um
arquivo, weather.dat, contendo a mdia de temperatura e precipitao dos meses, armazenadas em
doze linhas de um texto em ASCII:
30 4.0
31 3.7
38 4.1
49 3.7
59 3.5
68 2.9
74 2.7
72 3.7
65 3.4


50
55 3.4
45 4.2
34 4.9

O comando,
>>load weather.dat
Produz uma matriz 12 por 2. A linha de comando
>>temp =weather(:,1);
>>precip =weather(:,2);
Armazena as colunas de temperatura e precipitao em vetores individuais.
Pode-se plotar tanto a temperatura como a precipitao em funo do ms correspondente, em
uma mesma figura, fazendo-se uso dos comandos plot e subplot:
>>subplot(2,11)
>>plot(temp)
>>subplot(2,1,2)
>>plot(precip)
Um grfico scatter tambm um modo til de se apresentar os dados. As linhas de comando a
seguir produzem um grfico scatter mostrando a relao entre a temperatura e a precipitao em cada
ms:
>>month =[J an; Feb; Mar; Apr; ...
May; J un; J ul; Aug; ...
Sep; Oct; Nov; Dec];
>>plot(temp,precip,o)
>>axis([28 80 2.5 5.2])
>>xlabel(temp)
>>ylabel(precip)
>>title(Boston)
A linha de comando axis, do exemplo, acima introduz espao extra ao grfico atravs do ajuste
da escala dos eixos a valores maiores que a faixa de dados. Isto permite que o texto fique dentro do
grfico.

15.1.2 Funes Especiais para Grficos 2-D

MATLAB inclui uma variedade de funes especiais para grficos, necessrias em muitas
aplicaes. A lista a seguir descreve algumas delas.
bar - cria um grfico do tipo barra
compass - cria um grfico de ngulos e mdulos de nmeros complexos onde a representao dos
pontos feita por setas com incio na origem
errorbar - cria um grfico com barras de erro
feather - cria um grfico de ngulos e mdulos de nmeros complexos onde a representao dos
pontos feita por setas com comeo em pontos igualmente espaados ao longo do eixo horizontal
fplot - avalia uma funo e plota os resultados
hist - cria um histograma
polar - cria um grfico em coordenadas polares dos ngulos em funo dos raios
quiver - cria um grfico do gradiente ou de outro campo do vetor
rose - cria um histograma de ngulo
stairs - cria um grfico similar a um grfico de barra, mas sem as linhas internas
fill - desenha um polgono e o preenche com cores slidas ou interpoladas






51
15.1.3 Polgonos Preenchidos

A funo fill define uma rea polinomial cujo interior preenchido com uma cor especificada.
Se especificada uma cor para cada ponto, MATLAB utiliza interpolao bilinear para determinar a
cor da parte interna. Por exemplo,
>>t =0:.05:2*pi;
>>x =sin(t);
>>fill(x,t,b)
Produz um polgono preenchido pela cor azul.
Para criar uma rea preenchida com uma interpolao de cores, utiliza-se o comando colormap
da forma descrita abaixo:
>>colormap(hot)
>>fill(x,t,x)
A sombra varia do escuro para o claro medida que o valor de sin(t) varia de um mnimo at
um mximo (o que corresponde da esquerda para a direita no grfico).

15.1.4 Plotando Funes Matemticas
Existem vrias maneiras diferentes de se plotar os grficos de funes, y = f(x). Uma
aproximao que simplesmente avalia a funo em alguns pontos no intervalo de interesse descrita
pelas linhas de comando abaixo. No caso, a funo oscila infinitamente no intervalo .
>>x =(0:1/2000:1);
>>plot(x,cos(tan(pi*x)))
Essas linhas de comandos produzem o grfico da funo na faixa de 0 a 1.
funo fplot uma aproximao mais elegante, visto que ela amostra a funo com um
nmero suficiente de pontos que fornea uma representao grfica decente. Enquanto que a
representao anterior avaliava a funo em intervalos espaados constantemente, fplot concentra a
sua avaliao sobre regies onde a taxa de variao da funo maior. Para avaliar uma funo, deve-
se criar um arquivo funo e passar o nome do arquivo para fplot. Por exemplo, o arquivo funo a
seguir define uma funo, chamada fofx, do exemplo anterior:
function y =fofx(x)
y =cos(tan(pi*x));
Passa-se o nome desta funo para fplot para que seja avaliada e plotada. Em virtude da
funo oscilar infinitamente na faixa de avaliao, o nmero de interaes usadas para preencher a
regio onde ocorrem as rpidas variaes reduzido com relao ao ajuste padro para prevenir de um
tempo de computao excessivamente longo.
>>fplot(fofx, [0 1], 25, 20, 10)
Neste exemplo, fplot utiliza menos pontos para avaliar a mesma funo, mas agora amostra a
funo em intervalos menores em uma regio onde a taxa de variao a maior, gerando uma figura
mais precisa nas proximidades de x =0.5.

15.2 Grficos 3-D

MATLAB possui uma variedade de funes para exibir dados em 3-D. Algumas plotam linhas
em trs dimenses, enquanto outras desenham superfcies e figuras utilizando pseudocores para
representar uma quarta dimenso. A lista a seguir mostra essas funes:
plot3 - plota linhas e pontos em 3-D
contour, contour3 - cria grficos de contorno
pcolor - desenha uma matriz retangular de clulas cujas cores so determinadas pelos elementos da
matriz
image - mostra uma matriz como uma imagem atravs do mapeamento dos elementos da matriz pelo
mapa de cores ativo


52
mesh, meshc, meshz - cria grficos 3-D em perspectiva dos elementos da matriz, mostrados como
alturas acima de um plano delimitado
surf, surfc, surfl - cria grficos 3-D em perspectiva dos elementos da matriz, mostrados como alturas
acima de um plano delimitado. O grfico formado pela gerao de uma superfcie colorida utilizando
os pontos como vrtices de um quadriltero.
fill3 - cria um polgono 3-D a o preenche com cores slidas ou interpoladas
Obs.: Ser utilizado o termo superfcie mesh para indicar os grficos criados atravs do comando
mesh.
Alm das funes de insero de comentrios e notas mostradas para os grficos 2-D, MATLAB
possui as seguintes funes para os grficos 3-D:
zlabel - define um nome para a varivel do eixo z
clabel - define identificaes para os contornos em grficos de contorno

MATLAB permite a especificao do ponto de visualizao do grfico. Em geral, as vistas so
definidas por uma matriz de transformao 4 por 4 que o MATLAB utiliza para transformar um
grfico 3-D em uma tela 2-D. Entretanto, a funo abaixo permite a especificao do ponto de viso de
uma maneira simplificada:
view - ajusta o ponto de viso atual onde os parmetros de entrada podem ser o azimute (rotao
horizontal) e a elevao vertical, ambos em grau, ou as coordenadas cartesianas.

15.2.1 Grficos de Linhas

O anlogo tridimensional da funo plot a funo plot3. Se x, y e z so vetores de mesmo
tamanho,
>>plot3(x,y,z)
Gera uma linha no espao tridimensional que passa pelos pontos de coordenadas dadas pelos
elementos dos vetores x, y e z, e depois produz uma projeo bidimensional desta linha na tela.. Por
exemplo
>>t =0:pi/50:10*pi;
>>plot3(sin(t),cos(t),t);
Produz um helicide.

Se X, Y e Z so trs matrizes de mesma dimenso,
>>plot3(X,Y,Z)
Traa as linhas obtidas pelas colunas de X, Y e Z. Para especificar vrios tipos de linhas,
smbolos grficos e cores, usa-se a linha de comando plot3(X,Y,Z,s), onde s uma string de 1, 2 ou 3
caracteres formada pelos caracteres listados com a funo plot.
>>plot3(x1,y1,z1,s1,x2,y2,z2,s2,x3,y3,z3.s3,...)
Combina os grficos definidos por cada grupo de elementos (x, y, z, s), onde x, y e z so
vetores ou matrizes e s so as strings.

15.2.2 Meshgrid

MATLAB define uma superfcie mesh pelas coordenadas z dos pontos, situando-a acima de
uma rea retangular no plano x-y. Desta forma, um grfico formado pela ligao dos pontos
adjacentes com linhas retas. Superfcies mesh so teis para visualizao de matrizes que so muito
grandes para serem mostradas na forma numrica, e funes grficas de duas variveis.
O primeiro passo para que seja mostrada uma funo de duas variveis, z = f(x,y), gerar as
matrizes X e Y consistindo de linhas e colunas repetidas, respectivamente, sobre o domnio da funo.
Depois utiliza-se estas matrizes para avaliar e plotar a funo.
A funo meshgrid transforma o domnio especificado por dois vetores, x e y, em matrizes, X
e Y. Utiliza-se estas matrizes para avaliar funes de duas variveis. As linhas de X so cpias do
vetor x e as colunas de Y so cpias do vetor y. Para ilustrar o uso da funo meshgrid, considere a


53
funo sin(r)/r, tambm chamada funo sinc. Para avaliar esta funo entre -8 e 8, tanto em x como
em y, passa-se como argumento dois vetores para a funo meshgrid criando as matrizes necessrias:
>>x =-8:.5:8;
>>y =x;
>>[X,Y] =meshgrid(x,y);
>>R =sqrt(X.^2 +Y.^2) +eps;
>>Z =sinc(R);
>>mesh(Z)
A matriz R contm a distncia dos pontos ao centro da matriz, o qual a origem. Adiconando
eps evita a diviso por zero, o que produz NaNs no dados.

15.2.3 Grficos de Contorno

MATLAB possui funes para gerar grficos de contorno tanto para 2-D como para 3-D. As funes
contour e contour3 geram grficos compostos de linhas obtidas da matriz entrada como argumento.
Existe a opo de se especificar o nmero de linhas de contorno, a escala dos eixos e o valor dos dados
com os quais se desenhar as linhas de contorno. Por exemplo, a linha de comando abaixo cria um
grfico de contorno contendo 20 linhas de contorno e usando o arquivo-M peaks para gerar os dados
de entrada.
>>contour(peaks,20)
Os crculos de contorno agem da mesma forma que a funo plot com relao a estilos de
linha, marcadores e cores. Para criar um grfico de contorno 3-D com os mesmo dados, utiliza-se a
funo contour3:
>>contour3(peaks,20)

15.2.4 Grficos de Pseudocores

As linhas de comando,
>>z =peaks;
>>pcolor (z)
>>colormap(hot)
Criam uma figura com a matriz peaks definida por um mapa de cores. O nome pcolor significa
pseudocolor. Para cada ponto, z(i,j), um valor em escala do elemento da matriz, z(i,j), usado como
ndice no mapa de cores para determinar a cor a ser mostrada naquele ponto.
O mapa de cores uma matriz com trs colunas que especificam a intensidade das trs
componentes de vdeo: vermelho, verde e azul. Neste caso, o mapa de cores especificado mapeia o
menor dado como preto e o maior dado como branco. Os valores entre estes dois valores so
mapeados com sombras de vermelho, laranja e amarelo. Isto til pois a escala contnua de cores do
preto ao branco faz representar o contorno da funo peaks. Os possveis mapas de cores podem ser
obtidos atravs da linha de comando help color.

15.2.5 Grficos de Superfcies e Mesh

As funes mesh e surf mostram superfcies em trs dimenses. Se Z uma matriz cujo os
elementos Z(i,j) definem a altura da superfcie com relao a uma rea delimitada (i,j), ento
>>mesh(Z)
Gera uma figura da superfcie, colorida e definida por linhas, e a mostra em uma projeo em
perspectiva. Da mesma forma
>>surf(Z)
Gera uma figura da superfcie, colorida e definida por faces, e a mostra em uma projeo em
perspectiva. Ordinariamente, as faces so quadrilteros com cores constantes, delineadas por linhas
mesh pretas, mas a funo shading permite que sejam eliminadas estas linhas.


54
Quando mesh(Z) e surf(Z) so usados com simples matrizes como argumentos, este argumento
especifica tanto a altura quanto as cores da superfcie. Para a matriz peaks utilizada anteriormente
>>mesh(peaks)
produz uma superfcie mesh para a funo peaks

Matrizes de Cores

Utilizando duas matrizes como argumentos, as linhas de comando,
>>mesh(Z,C)
ou
>>surf(Z,C)
Especifica independentemente atravs do segundo argumento, as cores a serem mostradas na
superfcie. Com pcolor, os valores de C so postos em escala e usados como ndices no mapa de
cores selecionado. No caso, C chamada matriz de cores.
Quando a superfcie de dados contm NaNs, estes elementos no so plotados. Isto cria um falha na
superfcie no lugar correspondente. Definindo alguns elementos na matriz de cores como NaNs, uma
maneira til de tornar regies da superfcie invisveis. Por exemplo, a linha de comando abaixo
produz uma falha na superfcie definida pela matriz peaks:
>>p =peaks;
>>p(30:40,20:30) =nan*p(30:40,20:30);
>>mesh(peaks,p)

Superfcies Paramtricas

As funes mesh, surf e pcolor podem ter dois vetores ou matrizes adicionais como
argumento, com a funo de descrever a superfcie com os dados x e y. Se Z uma matriz m por n, e x
e y so vetores de dimenses n e m respectivamente, ento
>>mesh(x, y, Z, C)
Descreve uma superfcie mesh cujo os vrtices possuem cores C(i,j) e esto localizados nos
pontos (x(j), y(i), Z(i, j)) Perceba que x corresponde coluna e y linha da matriz Z.. De maneira
mais geral, se X, Y, Z e C so matrizes de mesmas dimenses, ento
>>mesh(X, Y, Z, C)
Descreve uma superfcie mesh cujo os vrtices possuem cores C(i,j) e esto localizados no
pontos (X(i,j), Y(i,j), Z(i,j))
As mesmas consideraes podem ser aplicadas para a funo surf(X, Y, Z, C), etc.

Variaes de surf e mesh

MATLAB possui funes que produzem combinaes nos grficos baseados nas funes surf
e mesh. Por exemplo, surfc desenha uma superfcie com contorno bidimensional no plano z =0. Da
mesma forma, existem as funes surfl, meshc e meshz.


15.3 Funes Grficas de Propsito Geral

Sero descritas abaixo funes para controle de aparncia dos grficos criados com as funes
descritas anteriormente.







55
15.4.1 Ponto de Vista

MATLAB permite que seja especificado o ngulo do qual visualiza-se um grfico 3-D. A
funo view define o ngulo de viso em coordenadas esfricas atravs da especificao do azimute
(rotao horizontal) e da elevao vertical do ponto de vista, com relao a origem dos eixos. O
azimute um ngulo polar no plano x-y, sendo positivo quando a rotao for no sentido horrio com
relao ao ponto de vista. A elevao vertical o ngulo acima (ngulo positivo) ou abaixo (ngulo
negativo) do plano x-y. Por exemplo, as quatro linhas de comando abaixo proporcionam quatro
maneiras diferentes de se visualizar a funo peaks.
>>view(-37.5,30)
>>view(-7,80)
>>view(-90,0)
>>view(-7,-10)

15.4.2 Controlando os Eixos com a funo axis
A funo axis possui vrias opes que permitem que sejam personalizados escala e
orientao. Ordinariamente, MATLAB encontra os valores de mximo e mnimo da funo a ser
plotada e escolhe uma rea de plotagem apropriada. Pode-se redefinir os limites pelo ajuste dos limites
do eixos:
>>axis([xmin xmax ymin ymax])
Ou para um grfico 3-D:
>>axis([xmin xmax ymin ymax zmin zmax])
axis(auto) retorna a escala do eixo para seu valor padro, o modo automtico. v =axis salva
a escala dos eixos do grfico que est ativo no vetor v. Para que grficos subsequentes
possuam os mesmos limites, basta entrar com o comando axis(v).
axis(axis) congela a escala nos valores que esto sendo usados.
axis(ij) define MATLAB no seu modo de eixo matriz. A origem do sistema de coordenadas
se encontra no canto superior esquerdo. O eixo i vertical e numerado de cima para baixo. o
eixo j horizontal e numerado da esquerda para a direita.
axis(xy) define MATLAB com os eixos cartesianos. A origem do sistema de coordenadas se
encontra no canto inferior esquerdo. O eixo x horizontal e numerado da esquerda para a
direita. O eixo y vertical e numerado de baixo para cima.
axis(on) e axis(off) fazem com que o nome do eixo e os marcadores apaream ou no,
respectivamente, junto com o grfico.

15.3.3 Tornando Visvel Linhas e Superfcies Escondidas

O comando hidden permite que se enxergue atravs de uma superfcie de modo a se poder
visualizar possveis figuras que estejam atrs desta superfcie. Este comando se faz til quando esto
sendo plotadas vrias figuras em um nico grfico.
Por exemplo, as linhas de comando a seguir fazem com que os dados gerados por pcolor possam ser
visualizados atravs do grfico de peaks.
>>mesh(peaks(20)+7)
>>hold
>>pcolor(peaks(20))
>>hidden off








56
15.3.4 Subgrficos

Podem ser mostrados vrios grficos em uma mesma janela ou imprimi-los em uma mesma
folha de papel com a funo subplot.
subplot(m,n,p) divide a janela em uma matriz m por n de subregies e seleciona a p-sima
subregio para o grfico que est sendo plotado no momento.
Os grficos so numerados comeando pela primeira linha na parte superior da janela; em
seguida, a segunda linha, e assim segue. Por exemplo,
>>t =0:pi/10:2*pi;
>>[X,Y,Z] =cylynder(4*cos(t));
>>subplot(2,2,1)
>>mesh(X)
>>subplot(2,2,2)
>>mesh(Y)
>>subpoot(2,2,2)
>>mesh(Y)
>>subplot(2,2,3)
>>mesh(Z)
>>subplot(2,2,4)
>>mesh(X,Y,Z)
Traa dados em quatro diferentes subregies na janela de grficos.

15.3.5 Figura

Chamando a funo figure sem argumentos faz com que seja aberto uma nova janela grfica.
figure(N) faz com que a N-sima figura se torne a figura atual; o resultado dos comandos
grficos subsequentes so mostrados nesta janela. Se a figura N no existe, MATLAB cria
uma usando o prximo nmero disponvel (no necessariamente N).
A funo ginput permite que sejam utilizados o mouse ou as teclas de seta para selecionar pontos
no grfico. Isto fornece as coordenadas da posio do ponteiro.

15.4 Mapas de Cores e Controle de Cores

MATLAB define o mapa de cores como sendo uma matriz de trs colunas. Cada linha da
matriz define uma cor particular atravs de trs valores dados na escala de 0 a 1. Estes valores
especificam a intensidade das componentes de vdeo azul, verde e vermelho.
Algumas cores esto listadas na tabela abaixo:

Vermelho Verde Azul Cor
0 0 0 preto
1 1 1 branco
1 0 0 vermelho
0 1 0 verde
0 0 1 azul
1 1 0 amarelo
1 0 1 magenta
0 1 1 ciano
.5 .5 .5 cinza
.5 0 0 vermelho escuro



57
Os mapas de cores podem ser fornecidos por tabelas, ou gerados em operaes de matrizes. O
diretrio color do toolbox do MATLAB possui vrias funes que geram mapas teis, incluindo hsv,
hot, cool, pink, copper e flag. Cada funo possui um parmetro opcional, m, o qual especifica o
nmero de linhas no mapa resultante. Por exemplo
>>hot(m)
uma matriz m por 3, cuja as linhas especificam a intensidade das cores padres de um mapa
que varia de preto, passando por sombras de vermelho, laranja e amarelo, at o branco.
Se o tamanho do mapa de cores no especificado, MATLAB utiliza m =64 como valor padro. Isto
permite trs ou quatro figuras, onde cada uma possui sua tabela de 256 cores.
A linha de comando,
>>colormap(M)
Faz com que a matriz de mapa de cores M seja usada pela figura ativa. Por exemplo,
>>colormap(hot)
Torna ativo o mapa de cores hot de tamanho 64. Desde que as funes mesh, surf, pcolor e
image utilizam mapas de cores, todas as outras funes que so derivadas destas quatro tambm o
fazem. As funes plot, plot3, contour e contour3 no fazem uso dos mapas de cores.

15.4.1 Mostrando Mapas de Cores

As funes pcolor so teis para mostrar mapas de cores. Por exemplo, para visualizar um
mapa de cores em tons de cinza tendo oito entradas, utiliza-se as seguintes linhas de comando:
>>colormap(gray(8))
>>pcolor([1:9;1:9])

15.4.2 Alterando os Mapas de Cores

O fato de os mapas de cores serem matrizes, permite que sejam manipulados como qualquer
outra matriz. A funo brighten utiliza esta vantagem para ajustar um dado mapa de cores de forma
que a intensidade das cores escuras aumente ou diminua.
Pode-se combinar mapas de cores aritmeticamente, embora os resultados sejam inesperados
em algumas vezes.

15.5 Manuseamento de Grficos

As caractersticas grficas apresentadas at aqui fazem parte da interface de alto-nvel do
sistema grfico do MATLAB. Entretanto, este sistema tambm fornece um ajuste das funes de
baixo-nvel que permitem que sejam criadas e manipuladas linhas, superfcies e outros objetos grficos
que MATLAB utiliza para produzir grficos sofisticados. Este sistema denominado Handle
Graphics.

15.5.1 Objetos Grficos

MATLAB define os objetos grficos como sendo os desenhos mais primitivos de seu sistema
grfico, e os organiza em uma hierarquia estruturada em rvore. Este objetos incluem a tela raiz (root
screen), figuras (figures), eixos (axes), linhas (lines), patches (patches), superfcies (surfaces), imagens
(images), texto (text), e interface de controle (uicontrol) e menus (uimenu) para o usurio.
O objeto root a raiz da hierarquia. Ele corresponde a tela do computador. Existe somente um
objeto raiz, sendo todos os outros objetos seus descendentes.
Objetos figure correspondem s janelas individuais na tela raiz. Pode existir qualquer nmero
de objetos figura, onde cada qual descendente do objeto raiz. Os demais objetos grficos so
descendentes das janelas de figura. Todos as funes de criao de objetos e todas as funes de alto-


58
nvel criam uma figura se ela no existe. Pode-se tambm criar uma figura utilizando-se a funo
figure.
Objetos axes definem uma regio na janela de figura e orienta os seus descendentes nesta
regio. Eixos so descendentes de figuras e so superiores a linhas, superfcies, texto, imagens e
patches. Todos as funes de criao de objetos e todas as funes de alto-nvel criam objetos eixo se
eles no existem. Pode-se criar eixos diretamente utilizando-se a funo axes.
Objetos line so usados para criar a maioria dos grficos 2-D e alguns 3-D. Eles so
descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas estabelecido pelo
seus superiores (eixos). Objetos linha so criados por plot, plot3, contour e contour3.
Objetos patch so definidos pelos polgonos preenchidos. Eles so descendentes dos eixos e
suas posies so definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos).
Este objetos podem ser preenchidos com cores slidas ou interpoladas. fill e fill3 cria objetos patch.
Objetos surface so representaes 3-D dos dados de uma matriz. Eles so compostos de
quadrilteros cujo os vrtices so especificados pelos dados definidos. Superfcies podem ser
preenchidas com cores slidas ou interpoladas ou somente com uma rede de linhas ligando os pontos.
Eles so descendentes dos eixos e suas posies so definidas pelo sistema de coordenadas
estabelecido pelo seus superiores (eixos). pcolor e o grupo de funes de mesh e surf criam os objetos
superfcie.
Objetos image dado pelo resultado do mapeamento dos elementos de uma matriz com o
mapa de cores se encontra ativo. Imagens, geralmente, possuem seu prprio mapa de cores que
definem somente as cores usadas naquela imagem. Imagens so 2-D e, portanto, no podem ser vistas
por nenhum ngulo diferente do padro. Eles so descendentes dos eixos e suas posies so definidas
pelo sistema de coordenadas estabelecido pelo seus superiores (eixos). Objetos imagem so criados
atravs da funo image.
Objetos text so as strings de caracteres. Eles so descendentes dos eixos e suas posies so
definidas pelo sistema de coordenadas estabelecido pelo seus superiores (eixos).
Objetos uicontrol so interfaces de controle que permitem ao usurio executar funes quando
selecionado um objeto com o mouse. Eles so descendentes das figuras e, portanto, so
independentes dos eixos.
Objetos uimenu so interfaces de menu que permitem o usurio criar menus na parte superior
da janela de figura. Eles so descendentes das figuras e, portanto, independentes dos eixos.

Handle de Objetos

Cada objeto grfico individual possui um nico identificador (chamado handle) que
atribudo ao objeto quando ele criado. Alguns grficos tais como contour plot, so compostos de
mltiplos objetos, cada qual com seu prprio handle. O handle do objeto raiz sempre zero enquanto
que o de uma figura um inteiro. O handle de outros objetos so nmeros decimais que contm
informaes utilizadas pelo MATLAB. MATLAB define as seguintes funes para simplificar o
acesso aos handles dos objetos:
gcf - informa o handle da figura ativa
gca - informa o handle do sistema de eixos ativo
Pode-se utilizar estas funes como argumentos de entrada de outras funes que requeiram os
handles de grficos e eixos. Pode-se, tambm, remover qualquer objeto utilizando a funo delete,
descrevendo como argumento o handle do objeto. Por exemplo, os eixos atuais podem ser apagados
atravs da linha de comando:
>>delete(gca)
Todas as funes do MATLAB que criam objetos, criam handles para estes objetos. Isto inclui
funes de alto-nvel, tais como surfc, a qual cria tanto objeto linha como objeto superfcie.






59
Funes de Criao de Objetos

Todos os objetos so criados por funes de mesmo nome (a funo text cria um objeto texto,
a funo figure cria um objeto figura, etc.). As funes grficas de alto-nvel do MATLAB chamam a
funo de baixo-nvel apropriada para desenhar seus respectivos grficos.
Muitas funes de alto-nvel ajustam as propriedades do objeto com a finalidade de
produzirem um resultado particular. As funes de baixo-nvel simplesmente criam um dos nove
objetos grficos definidos pelo MATLAB (no se pode criar um novo objeto raiz) e os coloca no
objeto-me apropriado. Por exemplo, chamando a funo line,
>>line
MATLAB desenha a linha no eixo que est ativo usando os valores de dado padro. Se no
houver eixo, MATLAB cria um. Se no houver uma janela de figura onde possam ser criados os eixos,
MATLAB tambm cria uma janela. Se chamada a funo line pela segunda vez, uma linha
desenhada nos eixos existentes (diferentemente com relao a funo plot, por exemplo, a qual
substitui os eixos em cada chamada). Esta caracterstica til quando se quer adicionar um objeto a
uma figura existente. Pode-se obter o mesmo resultado utilizando o comando hold.

15.5.2 Propriedades dos Objetos

Todos os objetos possuem propriedades que definem como eles so mostrados. Estas
propriedades incluem informaes gerais tais como o tipo do objeto, seus descendentes (children) e
superiores (parent), o que est ou no visvel, bem como informaes nicas de um determinado
objeto tais como os dados utilizados para se determinar um objeto superfcie.
Quando se cria um objeto, ele inicializado com os valores padres; destes, alguns podem ser
alterados (outros so definidos pelo MATLAB como sendo somente para leitura).


Especificando e Alterando as Propriedades dos Objetos

MATLAB possui dois modos de ajuste dos valores das propriedades. Pode-se especificar as
propriedades do objeto quando se chama a funo de criao do objeto, ou depois que o objeto foi
criado fazendo uso da funo set. Por exemplo, a linha de comando,
>>figh =figure(Color,white)
>>axh =axes(View,[37.530],XColor,k,YColor,k,ZColor,k)
>>surfh =surface(peaks,,FaceColor,none,LineStyle,.)

Cria trs objetos e atribui valores s propriedades onde os valores padres no so desejados.
Para o caso acima, a janela de figura criada possui fundo branco e as linhas dos eixos so definidas
como sendo pretas (k). O ngulo de viso definido como tendo um azimute de -37.5&deg; e uma
elevao de 30&deg;. Os dados para que a superfcie seja gerada so fornecidos pela funo peaks, e
esta superfcie definida por pontos, no possuindo nenhuma cor dentro dos quadrilteros formados
por estes pontos.












60
Utilizando as Funes set e get

Uma outra forma de se especificar as propriedades dos objetos referenciando este objeto
depois de sua criao. Pode-se fazer isto utilizando o handle que retornando pela funo de criao.
A funo set permite que seja ajustada qualquer propriedade do objeto pela especificao do
handle do mesmo e pelo par propriedade/valor. Por exemplo, o exemplo anterior define uma
superfcie e salva seu handle em surfh. Pode-se alterar a propriedade do objeto referente ao estilo de
linha (LineStyle), de uma linha pontilhado para uma linha slida, atravs da linha de comando:
>>set(surfh,LineStyle,-)


Para se ter uma lista das propriedades que podem ser alteradas de um objeto particular, chama-
se a funo set com o handle do objeto:
>>set(surfh)
Para se fazer a alterao do valor de uma propriedade, utiliza-se a funo get.
Chamando-se a funo get com o handle do objeto, obtm-se a lista de todas as propriedades
para aquele objeto com o valores atuais:
>>get(surfh)


































61
ANEXO Analisando os Polinmios Interpoladores e os Comandos de Bibliotecas do
Software Matlab (CESARE ALEXANDRE BORTOLETO)

FORMAS INTERPOLADORAS
Consideremos (n+1) pontos distintos: , chamados de ns da interpolao, e os valores
de y=f(x) nesses pontos: . Atravs da funo g(x) que interpola f(x)
podemos obter o valor de aproximadamente a partir dos pontos tabelados, tal que:
e (1)
, onde .
Apresentaremos neste trabalho, a implementao de alguns mtodos computacionais para a estimava
desse valor que so: o Interpolador de Lagrange, Newton e Spline linear. Utilizamos como ferramenta
computacional o software MATLAB.

INTERPOLADOR DE LAGRANGE

O polinmio interpolador de Lagrange dado por:
.
A forma mais simples para satisfazer (1) impor que
e, para isso teremos:
onde .

IMPLEMENTAO

Para implementar o polinmio interpolador devemos usar notao vetorial dos dados tabelados, ou
seja, vetores x e y, onde o valor a ser interpolado c, pertence ao vetor x. Isto :
e .
A formatao dos nmeros utilizada foi a cientfica com seis algarismos significativos. No entanto,
testamos a execuo dos programas em preciso dupla, isto : a declarao dos dados e dos resultados
foram do tipo long.
x=input('Entre com o vetor x:');
b=input('Entre com o vetor F(x):');
c=input('Entre com o(s) valor(es) da interpolao:');
[l,n]=size(x); % Dimenso do Vetor x.
[l1,n1]=size(b); % Dimenso do Vetor F(x).
if (l==l1)
if (n==n1) % Verifica as dimenses dos vetores.
Result=0;
i=1; y=1;


62
for (Cont=1:n) % Faz a interpolao de 1 at n->N de colunas do vetor.
l=1;
for(j=1:n) % Calcula todos os polinmios.
if (y~=j)
l=l*[(c-x(i,j))/(x(i,y)-x(i,j))];
end
end
Result=Result+l*b(1,Cont); %Armazena o Valor da Interpolao.
y=y+1; j=1;
end
disp (' ')
disp ('O resultado da interpolao :')
disp (' ')
disp (Result)
else
disp ('OBS: O Nmero de Abscissa deve conter o mesmo nmero de Ordenada e vice-versa')
disp ('Favor entrar com outros Valores')
end
end
end


INTERPOLADOR DE NEWTON

O mtodo de Newton dado por:

onde denominado de operador diferenas divididas de ordem k entre os pontos , j
=0, 1, 2, ...., k.
Definimos o operador diferenas divididas por:

Portanto para obtermos os operadores de diferenas divididas devemos construir a tabela:


63




IMPLEMENTAO

a=input('Entre com o vetor x:');
b=input('Entre com o vetor F(x):');
x=input('Entre com o(s) valor(es) da interpolao:');
a=a'; % Faz a transposta do vetor
b=b'; % Faz a transposta do vetor
[l,n]=size(a); % Dimenso do Vetor x.
[l1,n1]=size(b); % Dimenso do Vetor F(x).
if (l==l1)
if (n==n1) % Verifica as dimenses dos vetores.
e(1,1)=b(1,1);
q=1; A=2; C=2;
for (T=1:l) % Faz a interpolao de 1 at l->N de linhas do vetor.
i=1; j=1; d=0;
q=q+1;
for (z=2:l) % Calcula todos os polinmios.
r=(b(z,j)-b(i,j))/(a(A,j)-a(i,j));
d(i,j)=r;
if (i==1)
e(q,1)=r;
end
A=A+1;
i=i+1;
end
A=C+1;
C=A;
l=l-1;
b=d;


64
end
end
end
[l,n]=size(e);
i=1;
for (N=1:l)
p(i,1)=(x-a(i,1));
i=i+1;
end
i=2; I=1; J =l; X=1;
H(1,1)=p(1,1);
for(L=2:J )
H(i,1)=H(I,1)*p(i,1);
i=i+1;
I=I+1;
end
i=1; I=1;
P=e(i,1);
l=l-1;
for(l=1:l)
i=i+1;
P=P+e(i,1)*H(I,1);
I=I+1;
end
disp (' ')
disp ('O resultado da interpolao por Newton :')
disp (' ')
disp (P)
end


SPLINE LINEAR

Consideremos uma partio p do intervalo [a,b] tal que
(2)
A funo spline linear interpolante de f(x), , nos ns dados em (2), pode ser escrita em cada
subintervalo como
(3)
Os splines de grau um associados partio definida por , podem ser dados por:



65
onde

IMPLEMENTAO

x=input('Entr e com o vetor x:');
b=input('Entre com o vetor F(x):');
c=input('Entre com o(s) valor(es) da interpolao:');
[l,n]=size(x); % Dimenso do Vetor x.
[l1,n1]=size(b); % Dimenso do Vetor F(x).
if (l==l1)
if (n==n1) % Verifica as dimenses dos vetores.
i=1; j=1;
for(L=1:n)
if x(1,j)>c
B=x(1,j);
B1=b(1,j);
j=j-1;
A=x(1,j);
A1=b(1,j);
end
j=j+1;
end
R=A1*(B-c)/(B-A)+B1*(c-A)/(B-A);
disp ('O resultado da Splaine :')
disp (' ')
disp (R)
else
disp ('OBS: O Nmero de Abscissa deve conter o mesmo nmero de Ordenada e vice-versa')
disp ('Favor entrar com outros Valores')
end
end
end

COMPARANDO OS POLINMIOS INTERPOLADORES COM OS COMANDOS DO
MATLAB
Os comandos do software MATLAB que nos fornece o valor aproximado de so: polyfit que
determina os coeficientes do polinmio interpolador p dado por p=polyfit(x,y,n) onde n o grau do
polinmio; polyval(p, ), interp1(x,y, ) e interp1(x,y, ,spline). Observe que a funo polyval
estima a imagem de atravs do polinmio p, no entanto a funo interp1 utiliza a funo spline
linear ou a spline cbica.
Exemplo:


66
Um veiculo de fabricao nacional, aps vrios testes, apresentou os resultados abaixo,
quando se analisou o consumo de combustvel de acordo com a velocidade mdia imposta ao
veiculo. Os teste foram realizados em rodovias em operao normal de trafego, numa distancia
de 72 Km.
Velocidade Km/h Consumo Km/l
55 14,08
70 13,56
85 13,28
100 12,27
120 11,3
140 10,4

Verificar o consumo aproximado para o caso de ser desenvolvida as velocidades de: 80 Km/h.,
105 Km/h, 134 Km/h 151 Km/h
RESULTADOS:
Programas Bibliotecas Matlab
Velocidade Lagrange Newton Spline
Linear
Interp1 Interp1
Spline
Polyval
80 Km/h 13.466713 13.466713 13.373333 13.373333 13.442552 13.466713
105 Km/h 11.914708 11.914708 12.027500 12.027500 11.963185 11.914708
134 Km/h 11.013867 11.013867 10.670000 10.670000 10.725484 11.013867
151 Km/h 6.6132999 6.6132999 10.325000 10.325000 9.5522218 6.6132999
Os mtodos Lagrange, Newton e polyval nos garante resultados mais precisos conforme tabela acima.
Para resolver a velocidade 151 Km/h, deve ser realizada uma extrapolao, pois o mesmo no se
encontra nos valores tabelados, portanto os valores obtidos no so confiveis.

CONCLUSES FINAIS
Observando o exemplo verificamos os resultados para a estimativa de calculado atravs da
implementao dos polinmios interpoladores (1.1), (1.2) so satisfatrios e idnticos.
Quando comparamos os programas com os resultados obtidos atravs dos comandos de biblioteca do
software MATLAB, conclumos que:

as funes spline linear e interp1 nos fornece uma aproximao no satisfatria em quase todos os
resultados



67
os resultados obtidos atravs dos interpoladores de Lagrange, Newton e polyval so idnticos,
garantindo-mos assim, boas aproximaes

os resultados obtido da funo Interp1 spline so aproximados dos mtodos de lagrange, Newton e
polyval.


16. REFERNCIAS


[1] MATLAB for Windows Users Guide, The Math Works Inc., 1991.

[2] Dongarra J .J ., Moler C.B., Bunch, J .R, Stewart, G.W., LINPACK User's Guide, Society for
Industrial and Applied Mathematics, Philadelphia, 1979.

[3] Smith, B.T., Boyle, J .M., Dongarra, J .J ., Garbow, B.S., Ikebe, Y., Klema, V.C., Moler,
C.B., Matriz Eigensystem Routines - EISPACK Guide, Lecture Notes in Computer Science, volume
6, second edition, Springer-Verlag, 1976.

[4] Garbow, B.S., Boyle, J .M., Dongarra, J .J ., Moler, C.B., Matriz Eigensystem Roulines
EISPACK Gide Extension, Lecture Notes in Computer Science,
volume 51, Springer-Verlag, 1977.

[5] Golub, G.H., Van Loan, C.F., Matriz Computations, J ohns Hopkins University Press, 1983.

[6] Ruggiero, M.A.G., Lopes, V.L.R., Clculo Numricos - Aspectos Tericos e
Computacionais, Ed. MacGraw-HiII, So Paulo, 1988.

[7] Kreith, F., Princpios da Transmisso de Calor, Ed. Edgard Blcher Ltda., So Paulo,1977.

[8] Curso de MATLAB for Windows, Departamento de Engenharia Mecnica, UNESP, Campus de
Ilha Solteira.

% LISTA DE EXERCCIOS - COMANDOS BSICOS DO MATLAB

% EXECUTE OS SEGUINTES COMANDOS E INTERPRETE OS RESULTADOS

a =2500/20
a =2500/20;
b =[1 2 3 4 5 6 7 8 9]
c =[1 2 3 ; 4 5 6 ; 7 8 9]
c =[c ; [10 11 12]
c(2,2) =0
l =length(b)
[m,n] =size(b)
[m,n] =size(c)
who
whos
clear
who
b =l +2 +3 +4 +...
5 +6 - 7


68
x =1 : 2 : 9
x =(0.8 : 0.2 : 1.4);
y =sin(x)
help sin
dir
a =2^3
a =4/3
format long
a =4/3
format short
clear
a=[1 2 3 ; 4 5 6 ; 7 8 9];
b =a
c =a +b
c =a - b
a(l,:) =[-1 -2 -3]
c =a(:,2)
c =a(2:3, 2:3)
x =[- 1 0 2];
y =[-2 -1 1];
x*y
c =x +2
a =[1 0 2; 0 3 4 ; 5 6 0];
size(a)
b =inv(a);
c =b*a
c =b/a
c =b\a
clear a b x y
whos

% A instruo seguinte abre o arquivo notas.dry e grava todas as instrues
% digitadas na seqncia
diary notas.dry
x =[1 -2 3]
y =[4 3 2]
z =x.*y
z =x.^y
y.^2
diary off % Encerra a gravao da instruo diary em notas.dry
dir
type notas.dry
clear
help diary
help sqrt

% Trabalhando com nmeros complexos
i =sqrt(-1)
a =[1 2;3 4] +i*[5 6;7 8]
realz =real(z)
imagz =imag(z)
modz =abs(z)
fasez =angle (z)


69

% Multiplicao de polinmios
% x3 =(x^2 +3x +2).(x^2 - 2x +1)

x3 =conv([1 2 3],[1 -2 1]) % Como ele faz isto?

% Determinao das razes de um polinmio
roots([1 3 2])
roots([1 -2 1])
roots(x3)

% Utilitrios para matrizes
a =eye(4)
a =rand(5)
help rand
b =[2 0 0;0 3 0;0 0 -1];

d =det(b)
l =eig(b)
help det
help eig
clear

% RECURSOS DE GRAVAO (ARMAZENAGEM) DE DADOS

help save
help load
a =[1 2 3 4 5 6 7 8];
b =a*2;
c =a - 1;
save arquivo 1 a b c
dir
clear
whos
load arquivo 1
whos
% Em que arquivo esto gravados os vetores a, b e c?
clear

% RECURSOS GRFICOS

y =[0 2 5 4 1 0];
plot(y)
help pi
t =0:.4:4*pi
y =sin(t)
z =cos(t);
plot(t, y, ., t, z -.)
title(Funes)
xlabel(t)
ylabel(Seno e Cosseno)
text(3, 0.5, Seno)
% Aps o prximo comando, selecione a posio que deseja colocar o texto Cosseno com


70
% o mouse
gtext(Cosseno)





% AJUSTE DE CURVAS DE DADOS EXPERIMENTAIS

t =(-1:.1:1);
x =t.^2;
xr =x+0.2(rand(size(x))-.5);
figure(1); plot(t, xr, g*)
p =polyfit(t, xr, 2)
xa =po1yval(p, t);
figure(l); plot(t, xr, g*, t, xa)
% Aps aprxima instruo, clique em dois pontos do grfico, e os valores
% das coordenadas sero retornados em [x,y]
[x, y] =ginput(2)

% PROGRAMANDO COM O MATLAB

% Abra um arquivo a partir do Matlab (File, New, M-File)
% e voc estar trabalhando no Bloco de Notas (Notepad) do Windows.
% Digite os seguintes comandos e grave o arquivo com o nome
% testel.m, no diretrio de usurios (alunos).

n =3 ;
m =3;
for i =1: m
for j=1 : n
a(i, j) =i +j;
end;
end
disp(Matriz A)
disp(a)
%final do programa testel.m

% CRIANDO UMA SUBROTINA

% Abra outro arquivo, salvando-o com nome de teste2.m
% Digite os seguintes comandos neste arquivo

v =1:1:10;
m =media(v);
s =sprintf(\n A mdia : %4.2f, m);
disp(s);
% final do programa teste2.m

Agora crie o seguinte arquivo, com o nome de media.m

function x =media(u)


71
% function x =media(u) calcula a mdia do vetor u, colocando o resultado em x

x =sum(u)/length(u);
% final da subrotina media.m

% Na linha de comando do Matlab, digite:

teste2
echo on
teste2
echo off

% CRIANDO UM PROGRAMA EXEMPLO DE GRFICO 3D

% Abra outro arquivo, salvando-o com nome de teste3.m
% Digite os seguintes comandos neste arquivo

clear
n =30;
m =30;
for i =1:m
for j =1:n
a(i,j) =sqrt(i+j);
end
end
b =[a+0.5 a-0.5;
(a.^2)/5 ((a-0.1).^2)/2];
mesh(b)

%EXERCCIOS COM O MATLAB

Exerccio 1 - Faa um programa que desenhe unia pirmide 3D. Utilize o mesh().

Exerccio 2 - Copie o grfico de uma senide para um arquivo texto do WORD. Siga os
seguintes passos: 1 aps ter gerado o grfico, faa print
-dmeta (no MATLAB); 2 Pressione ALT-TAB at entrar no WORD ou ento abra o
'WORD; 3 Posicione o cursor no local do texto onde o grfico deva entrar; 4 Digite Ctrl-V; 5
Ajuste a escala vertical do grfico com o editor de grficos do WORD.

Exerccio 3 - Repita o exerccio 2 com -dbitmap no lugar de -dmeta e compare o tamanho (em
Kb) dos dois arquivos texto.

Exerccio 4 - Resolva o circuito dado na figura abaixo (encontre i
1
e i
2
) utilizando a inverso de
matrizes do MATLAB. Faa um programa para isto. Adote R
1
=5, R
2
=10, R
3
=5, R
4
=
l5, R
5
=20, V
1
=10,0 V, V
2
=20,0 V.



72
Resp.: i
1
=0,01026 A e i
2
=0,4615 A.

Exerccio 5 - Supondo que a fonte V
2
esteja em curto, ou seja, V
2
=0,0 V, quais os valores de i
1
e
i
2
?

Resp.: i
1
=0,4103 A e i
2
=-0,1538 A.


Exerccio 6 - Gere um vetor com N elementos aleatrios. Escreva uma funo que tenha como
entrada o vetor, e retome o ndice e o valor do maior elemento do vetor, utilizando o comando if.

Exerccio 7 - Escreva um programa (utilizando o comando while) que aceite entradas numricas
pelo teclado. Os valores devem ser nmeros entre 0 e 5, e caso o usurio digite algum valor fora
deste intervalo, o programa encerrado.

Exerccio 8 - Em uma sala esto 8 pessoas, reunidas em uma mesa circular. Cada uma escolhe
um nmero aleatoriamente e pega o seu nmero e soma com os nmeros das pessoas ao lado, a sua
esquerda e direita. Passa-se as 8 somas para voc, que estava fora da reunio. Como voc
descobre o nmero que cada pessoa escolheu ? Utilize o MATLAB.

Você também pode gostar