Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila Matlab EQ
Apostila Matlab EQ
- 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
=
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.