Você está na página 1de 39

MATLAB

Dicas iniciais de utilizao


M.Sc. Programa de Engenharia Qumica/COPPE/UFRJ J aneiro de
2003
Andra Oliveira Souza da Costa
costa@peq.coppe.ufrj.br

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
2

CONTEDO

1. TRABALHANDO COM VARIVEIS....................................................................................................... 4
1.1. UTILIZANDO STRINGS.......................................................................................................................... 5
2. UTILIZANDO FUNES MATEMTICAS ELEMENTARES ........................................................... 6
3. TRABALHANDO COM VETORES E MATRIZES................................................................................ 6
3.1. CONSTRUINDO VETORES........................................................................................................................... 8
3.2. ORIENTANDO VETORES............................................................................................................................. 8
3.3. CONSTRUINDO MATRIZES....................................................................................................................... 10
3.4. MANIPULANDO VETORES E MATRIZES.................................................................................................... 10
3.5. COMPARANDO VETORES E MATRIZES ..................................................................................................... 12
3.6. REALIZANDO OPERAES MATRICIAIS ................................................................................................... 13
3.7. UTILIZANDO MATRIZES ESPECIAIS.......................................................................................................... 14
3.8. ORDENANDO MATRIZES.......................................................................................................................... 14
3.9. UTILIZANDO MATRIZES MULTIDIMENSIONAIS......................................................................................... 15
3.10. UTILIZANDO LISTAS.............................................................................................................................. 16
3.11. UTILIZANDO ESTRUTURAS.................................................................................................................... 16
3.11. UTILIZANDO MATRIZES ESPARSAS........................................................................................................ 17
4. ANALISANDO DADOS ............................................................................................................................ 18
5. TRABALHANDO COM POLINMIOS................................................................................................. 20
6. CONFECCIONANDO GRFICOS......................................................................................................... 21
6.1. GRFICOS BIDIMENSIONAIS.................................................................................................................... 21
6.2. GRFICOS TRIDIMENSIONAIS.................................................................................................................. 25
7. TRABALHANDO COM TEMPO............................................................................................................ 26
8. OBTENDO MODELOS EMPRICOS..................................................................................................... 27
8.1. REGRESSO LINEAR................................................................................................................................ 27
9. INICIANDO UM PROGRAMA............................................................................................................... 29
10. UTILIZANDO COMANDOS DE FLUXO E OPERADORES LGICOS......................................... 30
10.1. UTILIZANDO A FUNO FOR.................................................................................................................. 30
10.2. UTILIZANDO A FUNO WHI LE.............................................................................................................. 31
10.3. UTILIZANDO A FUNO I F- ELSE- END................................................................................................. 32
11. RESOLVENDO UM SISTEMA DE EQUAES ALGBRICAS..................................................... 33
12. RESOLVENDO UM SISTEMA DE EQUAES DIFERENCIAIS.................................................. 34
13. COMO SABER MAIS SOBRE O MATLAB?....................................................................................... 36
EXERCCIOS................................................................................................................................................. 37

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
3


O objetivo desta apostila apresentar ao usurio iniciante do MATLAB 6 noes
bsicas de utilizao deste programa. Assim, realizada uma rpida descrio do
software, onde so apresentadas as principais caractersticas e potencialidades do
programa. Posteriormente, separados em itens, so descritos alguns comandos
importantes para a utilizao do MATLAB. Noes de programao em MATLAB tambm
so apresentadas nesta apostila, bem como os comandos empregados na resoluo de
sistemas de equaes no lineares e de equaes diferenciais ordinrias. Sugestes para
consultas futuras e alguns exerccios de fixao so apresentadas ao final da apostila.


MATLAB uma abreviao para MATrix LABoratory. Trata-se de um ambiente de
alto nvel que possui ferramentas avanadas de anlise e visualizao de dados. Mais do
que um aplicativo, o MATLAB tambm possui caractersticas de linguagem de
programao.
A programao em ambiente MATLAB dispensa tarefas como declarao de
variveis, alocao de memria, utilizao de ponteiros, necessrias durante a utilizao
de linguagens de programao como C ou Fortran.
As funes matemticas j existentes no MATLAB so otimizadas, programadas
em linguagem MATLAB e esto agrupadas de acordo com a rea de interesse em
toolboxes. Assim, o usurio tem acesso aos arquivos das funes matemticas o que
possibilita a realizao de alteraes nas rotinas j existentes. Todavia, vale ressaltar que
estas alteraes so perigosas e s devem ser realizadas como ltima alternativa.
Antes de abordar a programao em ambiente MATLAB, faz-se necessria uma
anlise da execuo de comandos de linha )diretamente digitados na rea de trabalho
(workspace)). Inicia-se esta anlise discutindo como se trabalha com variveis em
ambiente MATLAB.





MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
4


1. Trabalhando com variveis


No MATLAB os nomes das variveis devem ser palavras nicas, sem a incluso
de espaos e no devem conter acentos. As regras bsicas para nomes de variveis so
apresentadas na Tabela 1.1.

Tabela1.1: Regras bsicas para nomes de variveis no MATLAB.
As variveis so sensveis a letras maisculas e
minsculas
I t ens, i t ens e I TENS
So entendidas como diferentes variveis.
As variveis podem possuir at 31 caracteres.
Os caracteres alm do 31
o
so ignorados.
Oquevoceachadest enomedevar i avel
Pode ser usado como nome de varivel.
O nome da varivel deve comear com uma
letra, seguida de qualquer nmero, letra ou
sublinhado.
O_que_voce_acha_dest e_nome e X51
podem ser utilizados como nome de variveis.

Existem algumas variveis especiais que o MATLAB utiliza que so apresentadas
na Tabela 1.2. Se o usurio redefine estas variveis, o MATLAB passa a atribuir a nova
funo s mesmas.

Tabela 1.2: Variveis especiais utilizadas pelo MATLAB.
Varivel Significado
ans Varivel padro usada para resultados.
pi Razo entre o permetro da circunferncia e seu dimetro.
eps Preciso relativa da mquina.
i nf Infinito
NaN nan No numrico
i j
i =j = 1
nar gi n Nmero de argumentos de entrada de uma funo.
nar gout Nmero de argumentos de sada de uma funo.
r eal mi n Menor nmero real positivo utilizvel pela mquina.
r eal max Maior nmero real positivo utilizvel pela mquina.

Caso o usurio necessite apagar alguma varivel da memria do MATLAB, isto
pode ser realizado utilizando-se o comando cl ear . Por exemplo:





a=10;
a
a =
10
cl ear a
a
??? Undef i ned f unct i on or var i abl e ' a' .
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
5

Se a necessidade do usurio for de apagar todas as variveis que esto sendo
utilizadas deve-se utilizar o comando cl ear al l . Se por outro lado, o usurio deseja a
listagem de todas as variveis que esto sendo utilizadas, basta utilizar o comando who.
Por exemplo:




>> a=10; b=a;
>> who
Your var i abl es ar e:
a b
>>

Todo o texto depois do sinal de percentagem (%) considerado comentrio. Alm
disso, pode-se colocar mais de um comando em uma linha, separando-os por vrgula ou
ponto e vrgula. A vrgula diz ao MATLAB para mostrar o resultado aps executar o
comando. J o ponto e vrgula dispensa a visualizao. Por exemplo:

a=10; b=20, %i st o umcoment ar i o
b =
20
a
a =

10

Quando se deseja continuar o comando na prxima linha, o sinal utilizado pelo
MATLAB representado por 3 pontos (. . . ). Isso s funcionar se os pontos estiver entre
nomes de variveis e operaes. Este comando no funciona para comentrios. Ou seja:




O usurio pode interromper a execuo do MATLAB, a qualquer momento,
pressionando o Crtl-c. Para limpar o workspace o usurio deve utilizar o comando cl c.
>> a=10; b=20;
>> c=a+. . .
b
c =
30
>>

1.1. Utilizando strings

O MATLAB entende como strings o conjunto de caracteres (vetor de caracteres)
colocados entre aspas simples. Assim, para acessar uma parte da varivel necessrio
listar a localizao dos caracteres. Ou seja:
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
6







>> s=' est a var i avel e uma st r i ng'
s =
est a var i avel e uma st r i ng
>>
>> s( 6: 13) , %r et i r ando a pal avr a var i avel da st r i ng s
ans =
var i avel
>>

2. Utilizando funes matemticas elementares

A Tabela 2.1 apresenta uma listagem das principais funes matemticas que o
MATLAB possui. Vale ressaltar que o MATLAB trabalha apenas com radianos (2t
radianos =360
o
).

Tabela 2.1: Principais funes matemticas utilizadas pelo MATLAB.
Funo Significado
acos( x) Arco coseno.
acosh( x) Arco coseno hiperblico.
asi n( x) Arco seno.
asi nh( x) Arco seno hiperblico.
at an( x) Arco tangente.
at anh( x) Arco tangente hiperblico.
cos( x) Coseno
cosh( x) Coseno hiperblico.
exp( x) Exponencial: e
x
gcd( x, y) Mximo divisor comum entre os inteiros x e y.
l og( x) Logaritmo natural.
l og10( x) Logaritmo na base 10.
r em( x, y) Resto da diviso de x por y.
r ound( x) Arredondamento para o nmero inteiro mais prximo.
si gn( x) Funo sinal. Retorna o sinal do argumento x.
si n( x) Seno
si nh( x) Seno hiperblico.
sqr t ( x) Raiz quadrada.
t an( x) Tangente
t anh( x) Tangente hiperblica.
3. Trabalhando com vetores e matrizes

O MATLAB foi desenvolvido especialmente para trabalhar com representaes
matriciais. Desta forma, o usurio deve dar preferncia para este tipo de representao
quanto estiver utilizando o MATLAB, j que isto significa a realizao de clculos com
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
7

maior eficincia.
O MATLAB manipula vetores de uma maneira simples e intuitiva. Considere que
se deseja calcular a funo y =sen(x) em 0 s x s t. O primeiro passo criar um vetor com
todos os valores de x para os quais se deseja calcular y. Uma vez definido o vetor,
calcula-se os valores correspondentes de y. Ou seja:











x=[ 0 0. 1*pi 0. 2*pi 0. 3*pi 0. 4*pi 0. 5*pi 0. 6*pi 0. 7*pi 0. 8*pi 0. 9*pi pi ]
x =
Col umns 1 t hr ough 7
0 0. 3142 0. 6283 0. 9425 1. 2566 1. 5708 1. 8850
Col umns 8 t hr ough 11
2. 1991 2. 5133 2. 8274 3. 1416
y=si n( x)
y =
Col umns 1 t hr ough 7
0 0. 3090 0. 5878 0. 8090 0. 9511 1. 0000 0. 9511
Col umns 8 t hr ough 11
0. 8090 0. 5878 0. 3090 0. 0000

Para se resgatar um determinado elemento do vetor, basta indicar entre
parnteses a localizao do mesmo. Ou seja:






x=[ 0 0. 1*pi 0. 2*pi 0. 3*pi 0. 4*pi 0. 5*pi 0. 6*pi 0. 7*pi 0. 8*pi 0. 9*pi pi ] ;
x( 1)
ans =
0
x( 11)
ans =
3. 1416

Para ter acesso a blocos de componentes ao mesmo tempo, o MATLAB utiliza a
notao de dois pontos. Ou seja:
- componentes de x, do primeiro ao quinto elemento:
x( 1: 5)
ans =

0 0. 3142 0. 6283 0. 9425 1. 2566

- componentes de x, iniciando do stimo e indo at o final:



x( 7: end)
ans =
1. 8850 2. 1991 2. 5133 2. 8274 3. 1416


- componentes de x, iniciando do terceiro, contanto regressivamente de um em um e
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
8

parando no primeiro:
x( 3: - 1: 1)
ans =
0. 6283 0. 3142 0

3.1. Construindo vetores



Existem formas para construo de vetores que dispensam a tarefa de digitar
termo a termo. So elas:
- cria um vetor que comea em zero e vai at o valor t, incrementado 0,1*t:





- cria um vetor que comea em zero e vai at o valor t com 11 elementos utilizando a
funo l i nspace. Os argumentos desta funo so:
l i nspace( pr i mei r o_val or , ul t i mo_val or , numer o_de_val or es) .
x=( 0: 0. 1: 1) *pi
x =
Col umns 1 t hr ough 7
0 0. 3142 0. 6283 0. 9425 1. 2566 1. 5708
1. 8850
Col umns 8 t hr ough 11
2. 1991 2. 5133 2. 8274 3. 1416







- cria um vetor em escala logartmica que comea em 10
0
e vai at o valor 10
2
com 11
elementos utilizando a funo l ogspace. Os argumentos desta funo so:
l ogspace( pr i mei r o_expoent e, ul t i mo_expoent e, numer o_de_val or es) .
l i nspace( 0, pi , 11)
ans =
Col umns 1 t hr ough 7
0 0. 3142 0. 6283 0. 9425 1. 2566 1. 5708
1. 8850
Col umns 8 t hr ough 11
2. 1991 2. 5133 2. 8274 3. 1416





3.2. Orientando vetores
l ogspace( 0, 2, 11)
ans =
Col umns 1 t hr ough 7
1. 0000 1. 5849 2. 5119 3. 9811 6. 3096 10. 0000
15. 8489
Col umns 8 t hr ough 11
25. 1189 39. 8107 63. 0957 100. 0000


At agora foram construdos apenas vetores linhas. Todavia, muitas vezes se faz
necessria a utilizao de vetores colunas.
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
9

A maneira mais direta de construo de um vetor coluna especificando elemento
por elemento e separando os valores com ponto e vrgula:




Uma alternativa a esta proposta transpor um vetor linha, j especificado,
transformando-o em um vetor coluna:
a=[ 1; 2; 3]
a =
1
2
3


a=1: 3
a =
1 2 3
b=a'
b =

1
2
3

Alm da forma de transposio vista anteriormente ( ), o MATLAB tem o recurso
de transposio pontuada ( . ). Este comando interpretado como a transposio sem a
operao de conjugao complexa. Isto porque quando um vetor complexo, o operador
de transposio ( ) nos d a transposio do complexo conjugado, isto , o sinal da parte
imaginria mudado como parte da operao de transposio. J o operador de
transposio pontuada ( . ) transpe o vetor mas no o conjuga. Vale ressaltar que para
vetores reais estes operadores so equivalentes. Ou seja:
>> a=( - 4) ^. 5; b=[ a a a]
b =

0. 00 + 2. 00i 0. 00 + 2. 00i 0. 00 + 2. 00i
>> b=[ a a a] '
b =
0. 00 - 2. 00i
0. 00 - 2. 00i

0. 00 - 2. 00i
>> b=[ a a a] . '
b =
0. 00 + 2. 00i
0. 00 + 2. 00i

0. 00 + 2. 00i
>>



MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
10

3.3. Construindo matrizes

Para a construo de matrizes no MATLAB utilizam-se ponto e vrgula para
separar os elementos de uma linha da outra:
g=[ 1 2 3 4; 5 6 7 8]
g =

1 2 3 4
5 6 7 8


3.4. Manipulando vetores e matrizes

Considerando-se vetores ou matrizes, a adio, a subtrao, a multiplicao e a
diviso por um escalar simplesmente aplica a operao a todos os elementos do vetor.
Ou seja:
g=[ 1 2 3 4; 5 6 7 8] ;
2*g- 1

ans =
1 3 5 7
9 11 13 15
g/ 2+1
ans =


1. 5000 2. 0000 2. 5000 3. 0000
3. 5000 4. 0000 4. 5000 5. 0000

J as operaes entre vetores e/ou matrizes no so to simples. Quando dois


vetores ou matrizes possuem a mesma dimenso, a adio e a subtrao so realizadas
elemento a elemento pelo MATLAB. Ou seja:








g=[ 1 2 3 4; 5 6 7 8] ;
h=[ 1 1 1 1; 2 2 2 2] ;
g+h
ans =
2 3 4 5
7 8 9 10
g- h
ans =
0 1 2 3
3 4 5 6

Quando se deseja multiplicar duas matrizes, elemento por elemento, deve-se
utilizar o smbolo de multiplicao escalar pontuada (. *) . O ponto que precede o
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
11

asterisco, smbolo padro de multiplicao, diz ao MATLAB para fazer a multiplicao
elemento por elemento. A multiplicao sem o ponto significa multiplicao matricial. Ou
seja:
g=[ 1 2; 5 6] ;

h=[ 1 1; 2 2] ;
g. *h
ans =
1 2
10 12

g*h
ans =
5 5
17 17


Para a diviso de matrizes, elemento por elemento, deve-se utilizar o smbolo de
diviso escalar pontuada . / . Novamente o ponto que precede o smbolo padro de
diviso diz ao MATLAB para fazer a diviso elemento por elemento. A diviso sem o
ponto significa diviso matricial. Ou seja:

g=[ 1 2; 5 6] ;
h=[ 1 8; 2 4] ;
g. / h

ans =
1. 0000 0. 2500
2. 5000 1. 5000
g/ h
ans =


0 0. 5000
- 0. 6667 2. 8333


possvel elevar cada elemento de uma matriz a uma dada potncia. Para isto
aplica-se o operador . ^n, onde n potncia que se deseja aplicar a cada elemento da
matriz. Ou seja:

g=[ 1 2; 5 6] ;
g. ^2
ans =

1 4
25 36


A Tabela 3.4.1 fornece ainda a listagem de alguns comandos teis de
manipulao matricial.

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
12

Tabela 3.4.1: Comandos teis de manipulao matricial utilizados pelo MATLAB.
Funo Significado Exemplo
Considere em todos os exemplos: ; r =1.
(

=
4 3
2 1
A
A( r , : ) Fornece a submatriz de A cujas linhas so definidas pelo
vetor r e que inclui todas as colunas.
A( r , : )
ans =
1 2
A( : , r ) Fornece a submatriz de A cujas colunas so definidas pelo
vetor r e que inclui todas as linhas.
A( : , r )
ans =
1
3
A( : ) Fornece todos os elementos de A em um vetor coluna,
percorrendo as colunas de A pela ordem crescente de
seus ndices
A( : )
ans =
1
3
2
4
3.5. Comparando vetores e matrizes

Os comandos mais utilizados para comparao entre vetores e matrizes so
listados na Tabela 3.5.1.

Tabela 3.5.1: Comandos teis de comparao entre vetores e matrizes.
Funo Significado Exemplo
Considere em todos os exemplos: ; ;
(

=
4 3
2 1
A
(

=
2 5
6 1
B
(

=
4 3
2 1
C
i sequal ( A, B)
Varivel lgica: verdadeira se A e B so idnticos. i sequal ( A, B)
ans =
0
i sequal ( A, C)
ans =
1

i smember ( A, B)
Varivel lgica: verdadeira quando os elementos
de A so tambm elementos de B.
i smember ( A, B)
ans =
1 1
0 0
i smember ( A, C)
ans =
1 1
1 1




MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
13

3.6. Realizando operaes matriciais

A Tabela 3.6.1 fornece as principais funes matriciais existentes no MATLAB.

Tabela 3.6.1: Principais funes matriciais existentes no MATLAB.
Funo Significado Exemplo
Considere em todos os exemplos:
(

=
4 3
2 1
A
det ( A)
Calcula o determinante da matriz
A.
det ( A)
ans =
- 2
d=ei g( A)
[ V, D] =ei g( A)
Determina os autovalores e
autovetores de A.
d=ei g( A)
d =
- 0. 3723
5. 3723
[ V, D] =ei g( A)
V =
- 0. 8246 - 0. 4160
0. 5658 - 0. 9094
D =
- 0. 3723 0
0 5. 3723

i nv( A)
Calcula a matriz inversa da matriz
A.
i nv( A)
ans =
- 2. 0000 1. 0000
1. 5000 - 0. 5000

pol y( A)
Calcula a equao caracterstica
de A.
pol y( A)
ans =
1. 0000 - 5. 0000 - 2. 0000

r ank( A)
Determina o nmero de linhas e
colunas linearmente
independentes de A.
r ank( A)
ans =
2

svd( A)
Calcula a decomposio em
valores singulares.
svd( A)
ans =
5. 4650
0. 3660







MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
14

3.7. Utilizando matrizes especiais

A Tabela 3.7.1 fornece algumas matrizes especiais existentes no MATLAB.

Tabela 3.7.1: Matrizes especiais existentes no MATLAB.
Funo Significado Exemplo
eye Matriz identidade. eye( 3)
ans =
1 0 0
0 1 0
0 0 1

ones Matriz onde todos os elementos
so iguais a 1.
ones( 2)
ans =

1 1
1 1

r and Matriz com elementos aleatrios
distribudos entre 0 e 1.
r and( 2)
ans =
0. 9501 0. 6068
0. 2311 0. 4860

r andn Matriz com elementos aleatrios
distribudos que seguem a
distribuio normal e tm mdia
zero e varincia igual a 1.
r and( 3)
ans =
0. 8913 0. 0185 0. 6154
0. 7621 0. 8214 0. 7919
0. 4565 0. 4447 0. 9218

zer os Matriz onde todos os elementos
so iguais a 0.
zer os( 2)
ans =
0 0
0 0


3.8. Ordenando matrizes

A ordenao dos elementos de um vetor ou de uma matriz podem ser realizados
utilizando o comando sor t . A utilizao deste comando possibilita ainda o
armazenamento da localizao original dos dados. Assim:





MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
15





















3.9. Utilizando matrizes multidimensionais

Para a utilizao de matrizes multidimensionais so necessrios 3 ndices ao invs
dos 2 adotados durante a utilizao de matrizes bidimensionais. A Figura 3.8.1 mostra a
forma visual de interpretar matrizes multidimensionais.






Figura 3.8.1: Forma visual de interpretar matrizes multidimensionais.

29 14 33 87 6 89

58 2 85 96

3 79 99
89 74 15 79 56 52
78 15 69 47 20 14

85 96 58 23 87 66

89 74 15 79 25 52
20 54 58 28 58 09

85 96 58 23 87 10

89 74 15 79 25 75
>> a=r and( 1, 3)
a =
0. 04389532534714 0. 02718512299667 0. 31268504808015
>> sor t ( a)
ans =
0. 02718512299667 0. 04389532534714 0. 31268504808015

>> a=r and( 4, 3)
a =
0. 01286257467300 0. 03533832396916 0. 01635493355000
0. 38396728849430 0. 61239548137302 0. 19007458907973
0. 68311596780460 0. 60854036122399 0. 58691847188467
0. 09284246174092 0. 01575981791975 0. 05758108987829

>> [ a_or denado_l , or d] =sor t ( a( 1, : ) ) , %or dena a l i nha 1 de " a"
a_or denado_l =
0. 01286257467300 0. 01635493355000 0. 03533832396916
or d =
1 3 2

>> [ a_or denado_c, or d] =sor t ( a( : , 2) ) , %or dena a col una 2 de " a"
a_or denado_c =
0. 01575981791975
0. 03533832396916
0. 60854036122399
0. 61239548137302
or d =

4
1
3
2
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
16

As matrizes multidimensionais podem ser construdas e manipuladas utilizando os
mesmos comandos apresentados para as matrizes bidimensionais. Desta forma:








>> M = r and( 2, 4, 3)
M( : , : , 1) =
0. 49655244970310 0. 82162916073534 0. 81797434083925 0. 34197061827022
0. 89976917516961 0. 64491038419384 0. 66022755644160 0. 28972589585624
M( : , : , 2) =
0. 34119356941488 0. 72711321692968 0. 83849604493808 0. 37041355663212
0. 53407901762660 0. 30929015979096 0. 56807246100778 0. 70273991324038
M( : , : , 3) =
0. 54657115182911 0. 69456724042555 0. 79482108020093 0. 52259034908071
0. 44488020467291 0. 62131013079541 0. 95684344844488 0. 88014220741133
>> M( 1, 1, 1)
ans =
0. 49655244970310
3.10. Utilizando listas

As listas (ou disposio em clulas, cell arrays) so formas especiais de
representar de matrizes. Neste tipo de representao, cada elemento da matriz pode
conter matrizes com diferentes dimenses. O exemplo abaixo ilustra a criao de uma
lista.



Para a manipulao dos elementos de uma lista tambm so utilizadas chaves e
parnteses como exemplificado abaixo.
>> a=1: 3; b=r and( 2, 2) ; c=1; d={a c};
>> l i st a={a b c d}
l i st a =
[ 1x3 doubl e] [ 2x2 doubl e] [ 1] {1x2 cel l }
>>

>> a=1: 3; b=r and( 2, 2) ; c=1; d={a c};
>> l i st a={a b c d};
>> l i st a{1}
ans =
1 2 3

>> l i st a{1}( 1, 2)
ans =
2
>>
3.11. Utilizando estruturas

As estruturas so matrizes especiais utilizadas pelo MATLAB para armazenar
dados de naturezas diferentes. As estruturas diferem das listas por possurem nomes que
identificam a localizao dos dados. O exemplo abaixo evidencia a utilizao de
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
17

estruturas.

>> r esul t ado. al unos=' mar i a' ;
>> r esul t ado. not as=[ 9 8. 5] ;
>> r esul t ado
r esul t ado =
al unos: ' mar i a'

not as: [ 9 8. 50000000000000]
>> r esul t ado( 2) . al unos=' j oao' ;
>> r esul t ado( 2) . not as=[ 10 7] ;
>> r esul t ado
r esul t ado =

1x2 st r uct ar r ay wi t h f i el ds:
al unos
not as
>> r esul t ado. al unos
ans =

mar i a
ans =
j oao
>>
Uma outra forma de gerar estruturas utilizando o comando st r uct .

>> r esul t ado=st r uct ( ' al unos' , ' mar i a' , ' not as' , [ 9 8. 5] ) ;
>> r esul t ado
r esul t ado =
al unos: ' mar i a'
not as: [ 9 8. 50000000000000]

>> r esul t ado. not as
ans =
9. 00000000000000 8. 50000000000000
>>

3.12. Utilizando matrizes esparsas

As matrizes esparsas so aquelas onde apenas alguns de seus elementos
possuem valores diferentes de zero. Neste caso, o armazenamento de toda a matriz
representa um desperdcio de espao de armazenagem e de poder computacional em
operaes aritmticas com zeros. No MATLAB possvel considerar a esparticidade de
uma matriz utilizando os comandos spar se e f ul l .
O comando spar se armazena os elementos no nulos da matriz original,
desconsiderando os elementos iguais a zero. J o comando f ul l rescreve a matriz
esparsa original. Ou seja:


MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
18



>> cl ear al l

>> X=[ 1 0 5 6 0 0 0; 0 0 0 0 1 0 0]
X =
1 0 5 6 0 0 0
0 0 0 0 1 0 0
>> S = spar se( X)

S =
( 1, 1) 1
( 1, 3) 5
( 1, 4) 6
( 2, 5) 1


>> whos
Name Si ze Byt es Cl ass
S 2x7 80 spar se ar r ay
X 2x7 112 doubl e ar r ay

Gr and t ot al i s 18 el ement s usi ng 192 byt es

>> X2=f ul l ( S)
X2 =
1 0 5 6 0 0 0

0 0 0 0 1 0 0

>> whos
Name Si ze Byt es Cl ass
S 2x7 80 spar se ar r ay

X 2x7 112 doubl e ar r ay
X2 2x7 112 doubl e ar r ay

Gr and t ot al i s 32 el ement s usi ng 304 byt es
>>


4. Analisando dados

A anlise de dados no MATLAB feita utilizando-se matrizes orientadas por
coluna. As diversas variveis so armazenadas em diferentes colunas e cada linha
representa uma observao diferente de cada varivel. As principais funes de anlise
de dados so apresentadas na Tabela 3.11.1





MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
19


Tabela 3.11.1: Principais funes de anlise de dados.
Funo Significado Exemplo
Considere em todos os exemplos:
(
(
(

=
9 8 7
6 5 4
3 2 1
A
cor r coef ( A) Coeficientes de correlao >> cor r coef ( A)
ans =
1 1 1
1 1 1
1 1 1

cumpr od( A) Produto acumulativo das colunas de
A.
cumpr od( A)
ans =
1 2 3
4 10 18
28 80 162

cumsum( A) Soma acumulativa ao longo das
colunas de A.
cumsum( A)
ans =
1 2 3
5 7 9
12 15 18

max( A) Mximo ao longo das colunas de A. max( A)
ans =
7 8 9

mean( A) Mdia ao longo das colunas de A. mean( A)
ans =

4 5 6

mi n( A) Mnimo ao longo das colunas de A. mi n( A)
ans =
1 2 3

pr od( A) Produto ao longo das colunas de A. pr od( A)
ans =
28 80 162

st d( A) Calcula o desvio padro ao longo
das colunas de A.
st d( A)
ans =
3 3 3

sum( A) Soma os elementos ao longo das
colunas de A.
sum( A)
ans =

12 15 18



MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
20

5. Trabalhando com polinmios

No MATLAB, um polinmio representado por um vetor linha contendo seus
coeficientes em ordem decrescente. Por exemplo, o polinmio x
4
12.x
3
+25.x +116
representado da seguinte forma:

p=[ 1 - 12 0 25 116]
p =
1 - 12 0 25 116



Vale ressaltar que os termos com coeficientes iguais a zero devem ser includos.
Atravs do uso do comando r oot s possvel encontrar as razes de um dado
polinmio. Ou seja:






p=[ 1 - 12 0 25 116] ;
r =r oot s( p)
r =
11. 7473
2. 7028
- 1. 2251 + 1. 4672i
- 1. 2251 - 1. 4672i


Dadas as razes do polinmio, tambm possvel construir o polinmio associado.
Para isto, utilizado o comando pol y:




pp=pol y( r )
pp =
1. 0000 - 12. 0000 0 25. 0000 116. 0000

A multiplicao de polinmios realizada pelo comando conv. Desta forma,
considerando o produto de dois polinmios f
1
(x) =x
3
+2.x
2
+3.x +4 e f
2
(x) =x
3
+4.x
2
+
9.x +16 temos:




f 1=[ 1 2 3 4] ; f 2=[ 1 4 9 16] ;
f 3=conv( f 1, f 2)
f 3 =
1 6 20 50 75 84 64


MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
21

O resultado desta operao o polinmio f
3
(x) =x
6
+6.x
5
+20.x
4
+50.x
3
+75.x
2
+
84.x +64.
A funo deconv utilizada para dividir um polinmio por outro. Considerando-
se as funes f
3
(x) e f
2
(x) anteriores temos:





[ q, r ] =deconv( f 3, f 2)
q =
1 2 3 4
r =
0 0 0 0 0 0 0


Como resultado, o comando retorna o polinmio resultante q, que neste caso a
funo f
1
(x), e o resto da diviso r.
O MATLAB possui a funo pol yder que utilizada na obteno de derivadas
de polinmios. Ou seja:




f 1=[ 1 2 3 4] ;
d=pol yder ( f 1)
d =
3 4 3


possvel que seja necessrio utilizar razes entre polinmios (funes de
transferncia por exemplo). Nestes casos, o MATLAB considera a existncia de 2
polinmios distintos.

6. Confeccionando grficos

6.1. Grficos bidimensionais

Uma das funes que o MATLAB possui para elaborao de grficos a funo
f pl ot . Este comando calcula a funo a ser representada e certifica-se de que suas
propriedades estejam bem representadas. Como entrada, o f pl ot precisa saber a
funo a representada (como varivel string) e o domnio do grfico. Ou seja:

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
22



f =' 2*exp( - x) . *si n( x) ' ;
f pl ot ( f , [ 0 8] )
Outra funo utilizada para confeccionar grficos bidimensionais, onde f =f(x), a
funo ezpl ot . Esta funo tambm tem como argumentos de entrada uma funo
string e um intervalo de variao. Se f =f(x,y), o comando ezpl ot representa a funo
considerando f(x,y)=0.



>> ezpl ot ( ' x^3 + y^3 - 5*x*y + 1/ 5' , [ - 3, 3] )
O comando mais comum utilizado para elaborao de grficos bidimensionais no
MATLAB o comando pl ot . Esse comando cria grficos de vetores de dados em eixos
adequados e conecta os pontos a linhas retas. Por exemplo:



possvel utilizar o comando pl ot para traar mais de um grfico no mesmo
sistema de eixos. Ou seja:
x=l i nspace( 0, 2*pi , 30) ;
y=si n( x) ;
pl ot ( x, y)





x=l i nspace( 0, 2*pi , 30) ;
y=si n( x) ;
z=cos( x) ;
pl ot ( x, y, x, z)

Durante a confeco de um grfico no MATLAB , o usurio pode escolher a cor e o
estilo das linhas bem como o marcador utilizado. A Tabela 6.1 mostra os cdigos
utilizados e o exemplo abixo evidencia a utilizao dos mesmos.




x=l i nspace( 0, 2*pi , 30) ;
y=si n( x) ;
z=cos( x) ;
pl ot ( x, y, ' b: p' , x, z, ' m+- - ' )

O usurio pode ainda modificar a cor de fundo do grfico utilizando o comando
col or def . Neste caso, sugere-se ao usurio consultar o help na rea de trabalho do
MATLAB ( hel p col or def ).
O comando gr i d on adiciona linhas de grade ao grfico nas posies dos
eixos que h marcadores. O comando gr i d of f remove as linhas de grade. Vale
ressaltar que o MATLAB comea sempre com gr i d of f Para grficos bidimensionais.
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
23

Tabela 6.1: Cdigos para marcadores, cores e tipos de linha na confeco de
grficos no MATLAB.
Cores de linhas Marcadores Tipo de linha
smbolo cor Smbolo Marcador Smbolo Tipo de linha
b azul . ponto - linha contnua
g verde O crculo : linha pontilhada
r vermelho x x - . traos e pontos
c ciano + + - - linha tracejada
m magenta * estrela
y amarelo s quadrado
k preto d losango
w branco < tringulo para a esquerda
> tringulo para a direita
p pentagrama
h hexagrama

Para atribuir nomes aos eixos, pode ser utilizado os comandos comando xl abel
e yl abel . O comando t i t l e adiciona um ttulo ao grfico. Ou seja:







x=l i nspace( 0, 2*pi , 30) ;
y=si n( x) ;
pl ot ( x, y, ' r - . >' )
gr i d on
xl abel ( ' x' )
yl abel ( ' seno( x) ' )
t i t l e( ' gr f i co' )
gr i d of f

Para criar legendas no grfico, o usurio pode utilizar os comandos l egend ou
gt ext . Ou seja:







x=l i nspace( 0, 2*pi , 30) ;
y=si n( x) ;
z=cos( x) ;
pl ot ( x, y, x, z)
l egend( ' seno( x) ' , ' coseno( x) ' )
l egend of f %r et i r a a l egenda
gt ext ( ' seno( x) ' )
gt ext ( ' coseno( x) ' )

possvel criar uma janela com mais de um sistema de eixos. Para isto, utilizado
o comando subpl ot ( m, n, p) . Este comando subdivide a janela de grficos em uma
matriz com mpor n regies. A varivel p indica a localizao do grfico. Ou seja:

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
24












x=l i nspace( 0, 2*pi , 30) ;
y=si n( x) ;
z=cos( x) ;
a=2*si n( x) . *cos( x) ;
b=si n( x) . / ( cos( x) +eps) ;
subpl ot ( 2, 2, 1)
pl ot ( x, y)
axi s( [ 0 2*pi - 1 1] ) %def i ne os val or es: m ni mos e mxi mos par a x e y
t i t l e( ' seno( x) ' )
subpl ot ( 2, 2, 2)
pl ot ( x, z) , axi s( [ 0 2*pi - 1 1] ) , t i t l e( ' coseno( x) ' )
subpl ot ( 2, 2, 3)
pl ot ( x, a) , axi s( [ 0 2*pi - 1 1] ) , t i t l e( ' 2. seno( x) . coseno( x) ' )
subpl ot ( 2, 2, 4)
pl ot ( x, b) , axi s( [ 0 2*pi - 20 20] ) , t i t l e( ' seno( x) / coseno( x) ' )

Alm dos grficos j elaborados, outros recursos grficos bidimensionais so
disponveis no MATLAB. So eles:
- grfico tipo torta:

a=[ . 05 . 15 . 5 . 05 . 05 . 2] ; pi e( a)
pi e( a, a==max( a) ) %t r aa o gr f i co separ ando a mai or f at i a


- grficos com escalas diferentes:

x=- 2*pi : pi / 10: 2*pi ;
y=si n( x) ; z=2*cos( x) ;
subpl ot ( 2, 1, 1) , pl ot ( x, y, x, z) , t i t l e( ' escal as i guai s' ) ,

subpl ot ( 2, 1, 2) , pl ot yy( x, y, x, z) , t i t l e( ' escal as di f er ent es' ) ,

- grficos de barras:





x=- 2. 9: 0. 2: 2. 9;
y=exp( - x. *x) ;
subpl ot ( 2, 2, 1) , bar ( x, y) ,
subpl ot ( 2, 2, 2) , bar 3( x, y) ,
subpl ot ( 2, 2, 3) , st ai r s( x, y) ,
subpl ot ( 2, 2, 4) , bar h( x, y) ,

- grfico com barras de erros:

x=l i nspace( 0, 2, 21) ;
y=er f ( x) ; %y a f uno er r o de x
e=r and( si ze( x) ) / 10; %cont m val or es de er r os al eat r i os

er r or bar ( x, y, e)


- grficos com pontos selecionados manualmente:
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
25


x=l i nspace( - 2*pi , 2*pi , 60) ;
y=si n( x) . ^2. / ( x+eps) ;
pl ot ( x, y)
[ a, b] =gi nput ( 5) %t oma 5 pont os
hol d on %Par a escr ever por ci ma do gr f i co ant er i or

pl ot ( a, b, ' mo' )
hol d of f %Li ber a o gr f i co ant er i or par a ser el i mi nado



6.2. Grficos tridimensionais

O comando pl ot para grficos bidimensionais estendido para os
tridimensionais com o comando pl ot 3. Este comando cria grficos de linhas
tridimensionais.



t =l i nspace( 0, 10*pi , 1000) ;
pl ot 3( si n( t ) , cos( t ) , t )

O comando meshgr i d utilizado para gerar matrizes x e y, contendo linhas e
colunas repetidas. Esse par de matrizes , x e y, pode ser ento usado para calcular
funes de duas variveis usando os recursos do MATLAB de matemtica vetorial.
Uma vez estabelecidos os valores dos pontos a serem representados em um
grfico tridimensional, o comando mesh pode ser utilizado para gerar um grfico de rede
e o comando sur f pode ser utilizado para gerar uma superfcie. J os comandos
cont our e cont our 3 geram as curvas de nvel. Uma forma similar do comando
cont our o comando pcol or onde so utilizadas cores distintas para delimitar
regies de alturas diferentes. Ou seja:





>> x=- 3: 0. 1: 3; y=x; [ X, Y] =meshgr i d( x, y) ; Z=X. ^3 + Y. ^3 - 5*X. *Y + 1/ 5;
>> mesh( X, Y, Z)
>> sur f ( X, Y, Z)
>> cont our ( X, Y, Z, 40)
>> cont our 3( X, Y, Z, 40)
>> pcol or ( X, Y, Z)
>>
possvel para o usurio trocar as cores padro utilizadas pelo MATLAB na
confeco de grficos. Para isto, utiliza-se dos mapas de cores que so matrizes com trs
colunas. Cada linha define uma cor particular, usando os nmeros 0 a 1.


O MATLAB possui mapas de cores predefinidos apresentados na Tabela 6.2.1.
>> x=- 3: 0. 1: 3; y=x; [ X, Y] =meshgr i d( x, y) ; Z=X. ^3 + Y. ^3 - 5*X. *Y + 1/ 5;
>> sur f ( X, Y, Z) , col or map( [ 1 1 1] ) %br anco
>> sur f ( X, Y, Z) , col or map( [ . 5 . 5 . 5] ) %ci nza
>>
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
26

O usurio pode ainda escolher um dos mapas de cores j existente no MATLAB
(Tabela 6.2.1).
Tabela 6.2.1: Mapas de cores utilizadas pelo MATLAB.
Funo Descrio do mapa de cores
Hsv Escalar com cores saturadas.
Hot Preto-vermelho-amarelo-branco
Gr ay Escalar linear de tons de cinza.
Bone Escala de tons de cinza levemente azulados.
Copper Escala linear de tons acobreados.
Pi nk Tons pastis de rosa.
Whi t e Mapa de cores totalmente branco.
Fl ag Vermelho, branco, azul e preto alternados.
J et
Uma variante do mapa hsv
Pr i sm Mapa de cores denominado prisma.
Cool Tons de ciano e magenta.
l i nes
Mapa de cores que usa as mesmas cores do comando pl ot .
col or cube Mapa de cores denominado cubo colorido.
summer Tons de amarelo e verde.
aut umn Tons de vermelho e amarelo.
wi nt er Tons de azul e verde.
spr i ng Tons de magenta e amarelo.

>> x=- 3: 0. 1: 3; y=x; [ X, Y] =meshgr i d( x, y) ; Z=X. ^3 + Y. ^3 - 5*X. *Y + 1/ 5;
>> sur f ( X, Y, Z) , col or map( [ summer ] )
>> sur f ( X, Y, Z) , col or map( [ hot ] )
>>

Para acrescentar uma legenda no grfico tridimensional, o usurio deve utilizar o
comando col or bar .

>> x=- 3: 0. 1: 3; y=x; [ X, Y] =meshgr i d( x, y) ; Z=X. ^3 + Y. ^3 - 5*X. *Y + 1/ 5;
>> sur f ( X, Y, Z) , col or map( [ wi nt er ] ) , col or bar
>>

7. Trabalhando com tempo

O MATLAB possui vrias funes para manipular datas e horas. A funo cl ock
, por exemplo, fornece a data e a hora atuais em um vetor.
>> T=cl ock
T =
1. 0e+003 *
2. 003 0. 001 0. 009 0. 010 0. 031 0. 057

>>

Os elementos que retornam no vetor T ao se aplicar o comando cl ock so: ano,
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
27

ms, dia do ms, hora, minutos e segundos. J a funo dat e fornece a data atual
como um texto no formado dia-ms-ano. Ou seja:

>> dat e
ans =
09- J an- 2003

Os comandos t i c e t oc podem ser utilizados para cronometrar uma
operao. Ou seja:

>> t i c; pl ot ( r and( 5) ) ; t oc
el apsed_t i me =
0. 11000000000000

A funo cput i me fornece o tempo, em segundos, da Unidade Central de
Processamento (CPU) usado pelo MATLAB desde o incio da sesso corrente. Ou seja:

>> t o=cput i me; pl ot ( r and( 5) ) ; cput i me- t o
ans =
0. 11000000000058

8. Obtendo modelos empricos

O MATLAB possui funes que possibilitam a obteno de diferentes modelos
empricos tais como: modelos ARX, ARMAX, redes neuronais e ainda modelos obtidos
via regresso linear e no linear. Nesta apostila, a utilizao da regresso linear
exemplificada.
8.1. Regresso linear

O comando utilizado pelo MATLAB para a realizao de regresso linear
denominado r egr ess. Para utilizar este comando o usurio deve fornecer a matriz com
as variveis independes e um vetor com a varivel dependente. Cada linha da matriz ou
do vetor deve corresponder a uma observao. Caso o modelo linear possua uma
constante, a matriz com as variveis independentes deve possuir uma ltima coluna com
valores iguais a 1. O exemplo abaixo exemplifica a utilizao deste comando:



MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
28





















>> cl ear al l
>> x=[ ( 100: 200) ' +r andn( 101, 1) ( 300: 400) ' +r andn( 101, 1) ones( 101, 1) ] ;
>> %mat r i z comvar i avei s i ndependent es
>> P1=2; P2=1; P3=100; y=P1*x( : , 1) +P2*x( : , 2) +P3; y=y+r andn( 101, 1) ;
>> %vet or comvar i avei s dependent es
>> [ P, Pi n, R, Ri n, st at ] =r egr ess( y, x, 0. 05) ;
>> P %par amet r os do model o
P =
1. 93344230551157
1. 06793100944515
86. 20341131968449
>> Pi n %i nt er val o de conf i ana par a os par amet r os
Pi n =
1. 0e+002 *
0. 01813296312069 0. 02053588298954
0. 00947622221814 0. 01188239797076
0. 62069772941691 1. 10337049697678
>> st at
st at =
1. 0e+005 *
0. 00000999899004 4. 85119348155784 0
>>
Os intervalos de confiana para os parmetros do modelo foram calculados
considerando um nvel de confiana igual a 95%. Isto porque usamos o valor 0,05 como
terceiro argumento de entrada para a funo r egr ess.
O 5
o
argumento de sada, neste caso denominado st at , fornece
respectivamente: o valor de R
2
, o resultado do teste de hiptese F (testa-se se todos os
coeficientes do modelo obtido so iguais a zero) e o p-valor associado a este teste.
Durante a realizao do teste F assume-se a existncia de uma constante no modelo.
Neste caso, o modelo obtido consegue descrever cerca de 99,9899% da
variabilidade experimental e podemos considerar, com grande segurana, que todos os
coeficientes do modelo no so iguais a zero.
Os erros verificados entre os valores preditos pelo modelo e os reais, bem como o
intervalo de confiana para estes valores so fornecidos atravs do 3
o
e do 4
o
argumento
de sada da funo r egr ess. Neste caso: R e Ri n. Uma melhor visualizao desta
informao pode ser obtida atravs do comando r copl ot como exemplificado abaixo.
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
29

>> r copl ot ( R, Ri n)
Neste caso, todos os resduos que no atingirem o valor zero so considerados
outliers.
O MATLAB tambm possui funes destinadas realizao de regresses no
lineares. Neste caso, a soma dos quadrados dos resduos, verificados entre os valores
reais e preditos pelo modelo, minimizada utilizando um mtodo de otimizao Quasi
Newton (Levenberg-Marquardt). Para maiores detalhes sugere-se a consulta ao comando
nl i nf i t . (hel p nl i nf i t ).

9. Iniciando um programa

Todos os comandos descritos anteriormente podem ser utilizados durante a
elaborao de um programa em MATLAB.
Antes de comear a programar, voc deve escolher qual o diretrio de trabalho.
A programao em MATLAB realizada atravs da elaborao de arquivos tipo
m. Sendo assim, uma vez escolhido o diretrio de trabalho, voc deve abrir um arquivo
m seguindo o seguinte caminho: File New M-file. Neste arquivo deve ser escrito o
programa.
Uma vez escrita a rotina a ser executada, deve-se salvar o arquivo. Para rodar a
rotina, deve-se digitar o nome do arquivo tipo m no workspace do MATLAB.
O MATLAB possui diversas funes que so particularmente apropriadas para o
uso em arquivos tipo m. Estas funes so apresentadas na Tabela 9.1.

Tabela 9.1: Principais funes utilizadas em arquivos tipo m.
Varivel Significado
Di sp( t ext o ) Mostra o texto escrito entre as aspas.
i nput Solicita ao usurio que fornea algum dado de entrada.
pause Suspende a execuo at que o usurio pressione alguma tecla.
Pause( n) Suspende a execuo por n segundos.
Exemplo:
1. Abra um arquivo novo tipo m;



MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
30


2. Digite:
%Pr i mei r o pr ogr ama
cl ear al l %l i mpa t oda a memr i a
di sp( ' Rodando pr ogr ama . . . ' ) ;

n=i nput ( ' Qual o val or f i nal de x desej ado?' ) ;
x=0: n;

y=x. ^2;
pl ot ( x, y) ;
pause( 2)
xl abel ( ' x' ) ; yl abel ( ' y' ) ;

3. Salve o programa com o nome prog1;
4. V rea de trabalho do MATLAB e digite prog1.

A(s) primeira(s) linha(s) comentada(s) existente(s) no arquivo .m (so)
exibida(s) caso o usurio utilize o comando help + nome do arquivo. Ou seja:

>> hel p pr og1
Pr i mei r o pr ogr ama
>>



10. Utilizando comandos de fluxo e operadores lgicos

10.1. Utilizando a funo for

Os loops f or possibilitam que uma srie de comandos seja repetida por um
nmero de vezes fixo e predefinido. Vale ressaltar que o comando f or no pode ser
encerrado atribuindo-se valores ao contador (no exemplo n) dentro do loop.
Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:



3. Salve o programa com o nome prog2;
cl ear al l
f or n=1: 10
x( n) =n/ 2;
n=10; %ao f i nal do pr i mei r o cl cul o de x n = val or maxi mo
end
x
4. V rea de trabalho do MATLAB e digite prog2.
5. A resposta obtida ser:
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
31






pr og2
x =
Col umns 1 t hr ough 7
0. 5000 1. 0000 1. 5000 2. 0000 2. 5000 3. 0000 3. 5000
Col umns 8 t hr ough 10
4. 0000 4. 5000 5. 0000

Naturalmente, possvel a utilizao de mais de uma estrutura f or .
Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
cl ear al l
f or n=1: 5
f or m=5: - 1: 1

A( n, m) =n^2+m^2;
end
di sp( n)
end
A

3. Salve o programa com o nome prog3;
4. V rea de trabalho do MATLAB e digite prog3.
5. A resposta obtida ser:
pr og3
1
2
3
4

5
A =
2 5 10 17 26
5 8 13 20 29
10 13 18 25 34

17 20 25 32 41
26 29 34 41 50


10.2. Utilizando a funo while

Os loops whi l e executam um grupo de comandos um nmero indefinido de
vezes.



MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
32

Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
cl ear al l
n=1;
whi l e n<10
x( n) =1;
n=n+1;

end
x
3. Salve o programa com o nome prog4;
4. V rea de trabalho do MATLAB e digite prog4.
5. A resposta obtida ser:




pr og4
x =
1 1 1 1 1 1 1 1 1

10.3. Utilizando a funo if-else-end

Quando aes devem ser executados condicionalmente, com base em um teste
relacional, so utilizados comandos i f - el se- end. Como no comando f or , possvel
utilizar vrios comandos i f - el se- end simultaneamente.
Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
cl ear al l
macas=10; cust o=macas*10;
i f macas>5

cust o=0. 8*cust o; %descont o de 20%
end
cust o


3. Salve o programa com o nome prog5;
4. V rea de trabalho do MATLAB e digite prog5.
5. A resposta obtida ser:
pr og5
cust o =
200

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
33


Exemplo:
1. Abra um arquivo novo tipo m;
2. Digite:
cl ear al l
m=5
i f m==10;
di sp( ' m i gual a 10' ) ;
el sei f m<10;

di sp( ' m menor que 10' ) ;
el se m~=10;
di sp( ' m di f er ent e de 10' ) ;
end
3. Salve o programa com o nome prog6;
4. V rea de trabalho do MATLAB e digite prog6.
5. A resposta obtida ser:
>> pr og6
m=
5
m menor que 10
>>




Observao importante: Como j mencionado anteriormente, o MATLAB
um programa desenvolvido para trabalhar com matrizes. Sendo assim, quando se deseja
um loop onde o objetivo calcular uma expresso diversas vezes, mais eficiente
trabalhar utilizando notao matricial.


11. Resolvendo um sistema de equaes algbricas

No MATLAB a funo utilizada para resolver sistemas de equaes algbricas no
lineares denominada f sol ve e se localiza no toolbox de otimizao. Para maiores
detalhes a respeito desta funo, sugere-se consultar o help digitando help fsolve na
pgina principal do MATLAB.
O mtodo padro, utilizado para resoluo do sistema pelo comando fsolve, o
Gauss-Newton com um mtodo misto (quadrtico e cbico) de busca em linha. Caso o
usurio prefira, pode ser utilizado o mtodo de Levenberg-Marquardt em alternativa ao
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
34

Gauss-Newton.
Exemplo:
Considere o sistema de equaes algbricas no lineares apresentado pela
equao 1.11:
0 e x 2 x
0 e x x 2
2
x
2 1
1
x
2 1
= +
=

(11.1)
Para resolver este sistema no MATLAB, realize as seguintes tarefas:
1. abra um novo arquivo m e escreva:
f unct i on F=f un1( x)
F( 1) =2*x( 1) - x( 2) - exp( - x( 1) ) ;
F( 2) =- x( 1) +2*x( 2) - exp( - x( 2) ) ;

2. salve o arquivo como fun1;
3. abra um segundo arquivo m e escreva:




cl ear al l
x0=[ - 5 - 5] ; %est i mat i vas i ni ci ai s par a x( 1) e x( 2)
opt i ons( 1) =1; %par a most r ar det al hes sobr e o cl cul o que ser r eal i zado
x=f sol ve( ' f un1' , x0, opt i ons) %chamada da r ot i na que r esol ve o si st ema
4. salve este segundo arquivo como teste1;
5. v rea de trabalho do MATLAB e digite teste1. O programa retornar o seguinte
resultado:
t est e1
f - COUNT RESI D STEP- SI ZE GRAD/ SD
3 47071. 2 1 - 9. 41e+004
8 966. 828 1 - 1. 81e+003
15 1. 99465 3. 85 5. 6

20 0. 000632051 0. 895 - 0. 0867
25 1. 39647e- 015 0. 998 - 1. 89e- 009
Opt i mi zat i on Ter mi nat ed Successf ul l y

x =

0. 5671 0. 5671


12. Resolvendo um sistema de equaes diferenciais

O MATLAB possui diversas funes destinadas resoluo de sistemas de
equaes diferenciais ordinrias. Nesta apostila utilizaremos a funo ode23. Para
maiores detalhes a respeito destas funes, sugere-se consultar o help digitando help
MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
35

ode23 na rea de trabalho do MATLAB.
O mtodo padro utilizado para resoluo do sistema de equaes diferenciais
pelo comando ode23 o Runge Kutta.
Exemplo:
Considere o sistema de equaes diferenciais apresentado por Simmons (1988) e
descrito pela equao 12.1:
y 2 x 3
dt
dy
y 2 x
dt
dx
+ =
+ =
(12.1)
Assuma as condies iniciais apresentadas pela equao (12.2):
3 y 2 x : 0 t = = = (12.2)
Para resolver este sistema no MATLAB, realize as seguintes tarefas:
1. abra um novo arquivo m e escreva:
f unct i on [ dy] =f un2( t , y)
dy( 1) =y( 1) +2*y( 2) ;
dy( 2) =3*y( 1) +2*y( 2) ;

dy=[ dy( 1) ; dy( 2) ] ;
2. salve o arquivo como fun2;
3. abra um segundo arquivo m e escreva:






cl ear al l
yo=[ 2 3] ; %condi o i ni ci al
t span=[ 0 1] ; %i nt er val o no qual ser r eal i zada a i nt egr ao [ de 0 1]
[ t , y] =ode23( ' f un2' , t span, yo) ;
pl ot ( t , y) ;
xl abel ( ' t empo' ) ;
yl abel ( ' var i vei s x e y' ) ;
l egend( [ ' x( t ) ' ; ' y( t ) ' ] )

4. salve este segundo arquivo como teste2;
5. v rea de trabalho do MATLAB e digite teste2. O programa retornar como
resultado um grfico apresentando a evoluo das funes x(t) e y(t) de 0 a 1.

De acordo com Simmons (1988) o sistema apresentado pela equao 2 possui a
soluo analtica descrita pela equao 12.3. Esta soluo confere com a soluo
numrica apresentada pelo programa.

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
36

t 4
t 4
e 3 y
e 2 x

=
=
(12.3)

SIMMONS, G. F., Clculo com Geometria Analtica, Vol. 2, 1
a
ed. So Paulo,McGraw-Hill, 1988

13. Como saber mais sobre o MATLAB?

O MATLAB possui uma biblioteca com vrios arquivos tipo pdf. Cada um destes
arquivos diz respeito a um toolbox do MATLAB. A seguir apresentada uma listagem com
a indicao de qual arquivo deve ser consultado pelo usurio, se o mesmo necessitar
aprofundar seus conhecimentos sobre os tpicos apresentados nesta apostila. Alm
disso, buscou-se adicionar alguns assuntos de interesse para engenheiros qumicos que
no so tratados neste material. Parte da literatura citada foi utilizada para a confeco
desta apostila.

Tabela 13.1: Arquivos pdf recomendados.
Assunto Arquivo pdf
Comandos bsicos de utilizao, descrio do
programa
getstart.pdf The Language of Technical Computing,
Getting Started with MATLAB,
136 pginas, 6
a
verso, 2000

Tratamento estatstico de dados (regresso
linear, ANOVA, regresso no linear, matriz de
correlao, planejamento fatorial, PCA)


stats_tb.pdf
Statistics Toolbox,
560 pginas, 3
a
verso, 2000
Controle de processos usingcontrol.pdf Control System Toolbox,
591 pginas, 1
a
verso, 2000

Controle preditivo de processos mpc.pdf Model Predictive Control Toolbox,
250 pginas, 1
a
verso, 1998

Resoluo de sistemas de equaes
diferenciais parciais
pde.pdf Partial Differential Equation Toolbox,
284 pginas, 1997

Redes neuronais nnet.pdf Neural Networks Toolbox,
846 pginas, 4
a
veso, 2000

Identificao de processos (modelos ARX,
ARMAX,)
ident.pdf System Identification Toolbox,
368 pginas,5
a
verso, 2000

Otimizao optim_tb.pdf Optimization Toolbox,
330 pginas, 2
a
verso, 2000

Utilizao simultnea do Excel e do MATLAB exlink.pdf Excel Link ,
74 pginas, verso 1.1.2, 1999

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
37

Exerccios

Srie A
1) Considere os resultados experimentais apresentados na Tabela A:

Tabela A: Resultados experimentais.
Experimento Concentraes: Ca e Cb
1 0,5 0,8
2 0,4 0,75

1.1) armazene os dados da Tabela A em uma matriz bidimensional;
1.2) armazene os dados da Tabela A em uma matriz multidimensional.

2) Crie uma matriz de dimenso 4x4 e a chame de A. (Sugesto: crie uma matriz com
nmeros aleatrios.)
1.1) apague a 2
a
linha de A;
1.2) apague a 3
a
coluna de A.

Srie B
Represente graficamente as seguintes funes:

1. z =-x
2
+2.y
2
onde 10<x <10, 10<y <10
2. z =-x
2
+2.y
2
+5.x.sen(y) onde 10<x <10, 10<y <10


Srie C
Considere o seguinte problema:

Uma indstria produtora de alumnio deseja conhecer a influncia das variveis
razo Al
2
O
3
/NaOH e temperatura de reao sobre o teor de Na
2
O presente na alumina.
Utilizando os dados operacionais disponveis na Tabela C proponha um modelo linear que
descreva o processo.


MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
38

Tabela C: Dados operacionais.
Teor de Na
2
O (p/p) Al
2
O
3
/NaOH Temperatura de reao (
o
C)
0,43 0,647 77,1
0,39 0,638 78,3
0,44 0,651 76,0
0,42 0,648 77,9
0,43 0,640 74,1
0,42 0,643 74,6
0,41 0,643 76,0
0,46 0,651 73,3
0,42 0,650 78,6
0,40 0,639 78,7

Este problema originalmente apresentado por: WERKEMA, M. C. C., AGUIAR, S., Anlise de
Regresso: Como entender o relacionamento entre as variveis de um processo, 1
a
ed. Belo
Horizonte, Fundao Christiano Ottoni, 1996. Nesta apostila utilizada uma verso simplificada do
problema original.

Srie D
Considere o reator bioqumico descrito na Figura D, onde x
1
representa a
biomassa presente no reator e x
2
o substrato. O reator possui um volume constante (V
r
)
uma vez que as vazes de alimentao e de sada so iguais (F). A corrente de
alimentao possui concentrao de substrato igual a x
2i
e uma concentrao de
biomassa igual a zero.

F, x
2i







Figura D: Representao esquemtica do reator bioqumico.

Bequette (1998) prope o modelo descrito pela equao (D.1) para o processo,
F, x
1
, x
2

x
1
, x
2

V
r

MATLAB PEQ/COPPE/UFRJ - J aneiro de 2003
costa@peq.coppe.ufrj.br
39

r
1
2 i 2
2
1
1
V
F
D
Y
x
) x x ( D
dt
dx
x ) D (
dt
dx
=

=
=
(D.1)
onde Y a relao constante entre as taxas de gerao de biomassa e o consumo de
substrato e o coeficiente de taxa de crescimento descrito pela equao (D.2).
2
2 1 2 m
2 max
x k x k
x
+ +

= (D.2)
Descreva o comportamento das concentraes de biomassa e de substrato
considerando um tempo de integrao de 30 horas (0<t<30), as condies iniciais
descritas pela equao (D.3) e os valores para os parmetros descritos na Tabela D.
1 x 1 x : 0 t
2 1
= = =

Tabela D: Valores para os parmetros do modelo (Bequette, 1998)
Parmetro Valor

max

0,53 h
-1
k
m

0,12 g/L
k
1

0,4545 L/g
Y
0,4
x
2i

4 g/L
D
0,3 h
-1


BEQUETTE, B. W., Process Dynamics: Modeling, Analysis and Simulation, 1
a
ed. USA, Prentice-
Hall PTR, 1998.

Você também pode gostar