Você está na página 1de 46

LCEE

Laboratrio de Computao da Engenharia Eltrica - UFES


MANUAL ! MA"LA#
Cur$o de MA"LA#
Projeto REENGE - DEL
Elaborao% &edao' Leonardo (ereira #a$to$
&e)i$o' (ro*+ Cel$o Munaro
ata' maro de ,--.
E$ta apo$tila *oi elaborada dentro do pro/eto &EEN0E%EL1 cu/o ob/eti)o melhorar a$ condi2e$ de en$ino do cur$o
de Engenharia Eltrica )ia $uporte computacional ade3uado+
ndice:
PARTE I:
,+ 4n*orma2e$ 4niciai$
,+ 4n$talao
5+ iretrio
5+ 4niciando
,+ Linha de Comando
5+ Matri6e$ Simple$
7+ Elemento$ da Matri6
8+ Linha$ de Comando e 9ari:)ei$ do MA"LA#
;+ !btendo 4n*orma2e$ do E$pao de "rabalho
<+ ! Comando =elp
.+ Finali6ando e Sal)ando o E$pao de "rabalho
>+ N?mero$ e E@pre$$2e$ Aritmtica$
-+ N?mero$ Comple@o$ e Matri6e$
,A+ Formato$ de SaBda
,,+ Fun2e$
7+ !pera2e$ com Matri6e$
8+ !pera2e$ com 9etore$
,+ !pera2e$ &elacionai$
5+ !pera2e$ Lgica$
7+ Fun2e$ Matem:tica$
;+ Manipulao de 9etore$ e Matri6e$
,+ 0erando 9etore$
5+ Matri6e$ E$peciai$
7+ Manipulao de Matri6e$
<+ 4ntroduo ao$ 0r:*ico$
,+ Fun2e$ Elementare$ de (lotagem
5+ Criando um 0r:*ico
7+ E$tilo$ de Linha1 Marcadore$ e Cor
8+ Adicionando Linha$ a um 0r:*ico E@i$tente
;+ ado$ 4magin:rio$ e Comple@o$
<+ (lotando Matri6e$
.+ Copiando 0r:*ico$
PARTE II: Informaes Avanadas
,+ An:li$e de ado$
5+ Fun2e$ de Matri6
,+ Fatorao "riangular
5+ Fatorao !rtogonal
7+ ecompo$io do$ Auto)alore$
7+ (olinCmio$ e (roce$$amento de Sinai$
,+ &epre$entao (olinomial
5+ (roce$$amento de Sinai$
7+ Filtro de ado$
8+ Fun2e$ de Funo
,+ 4ntegrao Numrica
5+ E3ua2e$ No-Lineare$ e Fun2e$ de !timi6ao
7+ Fun2e$ de E3ua2e$ i*erenciai$
;+ Flu@o de Controle
,+ Loop F!&
5+ Loop D=4LE
7+ Comando$ 4F e #&EAE
<+ Ar3ui)o$-M' Script$ e Fun2e$
,+ Ar3ui)o$ Script
5+ Ar3ui)o$ Funo
7+ 9ari:)ei$ 0lobai$
8+ String$ de "e@to
;+ A Funo e)al
.+ Ar3ui)o$ de i$co
,+ 4mportando e E@portando ado$
,+ 4mportando ado$
5+ E@portando ado$ do MA"LA#
>+ ! ebugger do MA"LA#
-+ Ar3ui)o$ E%S
,+ Abrindo e Fechando Ar3ui)o$
5+ Leitura de Ar3ui)o$ com ado$ em #in:rio
7+ E$cre)endo em Ar3ui)o$ com ado$ em #in:rio
8+ E$cre)endo Ar3ui)o$ de "e@to Formatado$ e String$
;+ Lendo Ar3ui)o$ de "e@to Formatado$ e String$
PARTE III: Grficos Avanados
,+ 0r:*ico$ A)anado$
,+ 0r:*ico$ 5-
,+ 4mportando ado$
5+ Fun2e$ E$peciai$ para 0r:*ico$ 5-
7+ (olBgono$ (reenchido$
8+ (lotando Fun2e$ Matem:tica$
5+ 0r:*ico$ 7-
,+ 0r:*ico$ de Linha$
5+ Me$hgrid
7+ 0r:*ico$ de Contorno
8+ 0r:*ico$ de ($eudocore$
;+ 0r:*ico$ de Super*Bcie$ e Me$h
<+ Matri6e$ de Core$
.+ Super*Bcie$ (aramtrica$
>+ 9aria2e$ de $ur* e me$h
7+ Fun2e$ 0r:*ica$ de (rop$ito 0eral
,+ (onto de 9i$ta
5+ Controlando o$ Ei@o$ com a *uno a@i$
7+ "ornando 9i$B)el Linha$ e Super*Bcie$ E$condida$
8+ Subgr:*ico$
;+ Figura
8+ Mapa$ de Core$ e Controle de Core$
,+ Mo$trando Mapa$ de Core$
5+ Alterando o$ Mapa$ de Core$
;+ Manu$eamento de 0r:*ico$
,+ !b/eto$ 0r:*ico$
5+ =andle de !b/eto$
7+ Fun2e$ de Criao de !b/eto$
8+ (ropriedade$ do$ !b/eto$
;+ E$peci*icando e Alterando a$ (ropriedade$ do$ !b/eto$
<+ Utili6ando a$ Fun2e$ $et e get >5
PARTE I
Informaes Bsicas
Esta primeira parte traz os captulos de 1 a 6, e contm as informaes necessrias para se comear a trabalhar com
MATA!"
Ap#s esta parte o leitor de$e estar apto a declarar $ari$eis no prompt, se%a do tipo $etor ou matriz, realizar operaes
com estas $ari$eis, utilizar o comando &elp e plotar 'rficos"
http'%%FFF+tecmundo+com+br%*i$ica%8;-75-da-*iccao-para-a-realidade-como-a-le)itacao-pode-$er-u$ada-na-tecnologia+htm
a!"t#$o %
Informaes Iniciais
E$te capBtulo po$$ui in*orma2e$ para a in$talao do MA"LA# )er$o 8+5A no $eu computador+
1.1 Instalao
A in$talao do MA"LA# no computador *eita da $eguinte *orma'
4n$ira o di$co , e chame o ar3ui)o $etup+e@e+ ! programa de in$talao o in*ormar: $obre o e$pao di$ponB)el no di$co rBgido e o
e$pao nece$$:rio para a in$talao do programaG ca$o o e$pao di$ponB)el $e/a $u*iciente para a in$talao1 $er: perguntado um nome
para o diretrio onde o programa $er: in$talado Ho nome padro do diretrio MA"LA#I+J medida 3ue a in$talao *or $endo
reali6ada1 o programa de in$talao pedir: o pr@imo di$co Hat o di$co ;I+ No *inal da in$talao1 perguntado $e de$e/a-$e in$talar
alguma toolbo@+ &e$ponda no+ A me$ma re$po$ta de)e $er dada com re$peito ao$ compiladore$+
Kuando a in$talao terminar1 in$ira o di$co < e copie o diretrio control para o caminho c:/matlab/toolbox/matlab/+ e$ta *orma1
a toolbo@ de controle *icar: di$ponB)el no caminho c:/matlab/toolbox/matlab/control/ E@i$te um ar3ui)o no diretrio principal 3ue
de*ine o$ caminho$ 3ue o MA"LA# $egue Hem 3uai$ $ubdiretrio$ o MA"LA# procura o$ ar3ui)o$ ou *un2e$ nece$$:ria$IG e$te
ar3ui)o uma e$pcie de autoexec.bat do MA"LA#+ E$te ar3ui)o o matlabrc+mG ele pode $er modi*icado em 3ual3uer editor de
te@to de modo a de*inir o caminho para o diretrio da toolbo@ de controle+
!$ caminho$ $o de*inido$ na $eguinte parte do ar3ui)o
matlabpathHL+++
MC'NMA"LA#Ntoolbo@NlocalO1+++
MGC'NMA"LA#Ntoolbo@NmatlabNcontrolO1+++ (linha adicionada)
MGC'NMA"LA#Ntoolbo@NmatlabNdata*unO1+++
MGC'NMA"LA#Ntoolbo@NmatlabNelmatO1+++
PIG onde a linha 3ue de)e $er adicionada e$t: indicada acima+
&'s+' ! MA"LA# utili6a1 geralmente1 o #loco de Nota$ do DindoF$ para 3ue $e po$$a criar ou alterar ar3ui)o$ +m+ (or i$$o1
3uando a in$talao do MA"LA# terminar1 de)e-$e *a6er o $eguinte'
- No DindoF$ 7+@
No gerenciador de ar3ui)o$1 cli3ue uma )e6 $obre 3ual3uer ar3ui)o com e@ten$o +m e1 no menu Arquivo1 e$colha Associar+ No
item Arquivos com extenso colo3ue m He@ten$o do$ ar3ui)o$ 3ue o MA"LA# utili6aI+ No item Associar com e$colha o #loco de
Nota$+ Cli3ue em OK e pronto+
- No DindoF$ -;
No E@plorer1 cli3ue no menu Exibir e e$colha Opes+ E$colha em tipo$ de ar3ui)o o Bcone Novo tipo+ !nde e$ti)er Descrio
do tipo e$cre)a MA"LA#G onde e$ti)er e$crito Extenso associada e$cre)a m+ Em $eguida e$colha Novo e preencha da $eguinte
*orma'
Aes: Abrir
Aplicativo utiliado para executar a ao: c'NFindoF$Nnotepad+e@e
Cli3ue em OK at 3ue toda$ a$ /anela$ $e/am *echada$+
1.2 Diretrio
! diretrio MA"LA# compo$to de ):rio$ $ubdiretrio$+ !$ doi$ 3ue po$$uem maior importQncia a nB)el de conhecimento do
aluno $o o$ de$crito$ abai@o'
%bin
iretrio em 3ue $e encontra o ar3ui)o matlab+e@e1 ar3ui)o de e@ecuo do
MA"LA#+
%toolbo@%matlab
iretrio onde e$to locali6ado$ o$ $ubdiretrio$ de toolbo@e$ H%matlab1
%control1 etc+I+
Captulo 2
Iniciando
Ne$te capBtulo apre$entado o e$pao de trabalho do MA"LA#+ R mo$trado como $e lidar com matri6e$ e como utili6ar o
comando =elp para obter in*orma2e$ de utili6ao da$ *un2e$+
2.1 Linha de Comando
(ara editar comando$ digitado$ erroneamente ou para chamar linha$ de comando$ anteriore$1 pode-$e *a6er u$o da$ $eta$+ (or
e@emplo1 $e *oi digitado errado a *uno s(rt no comando
>> log(sqt(atan(2*(3+4))))
MA"LA# re$ponde com uma men$agem de erro do tipo
??? Undefned function or variable sqt+
Ao in)$ de $e digitar a linha de comando no)amente1 tecla-$e + ! ?ltimo comando 3ue *oi entrado mo$trado+ (ode-$e teclar
para mo)er o cur$or e in$erir o r+
!$ comando$ 3ue MA"LA# e@ecutou durante uma $e$$o $o arma6enado$ at um certo limite+ (ode $er utili6ada uma chamada
r:pida ao in)$ da digitao do$ comando$ pre)iamente digitado$1 atra)$ da e$peci*icao do$ primeiro$ caractere$ $eguido$ pela
tecla + No e@emplo abai@o1 a$ letra$ plo $o u$ada$ para encontrar uma linha de comando 3ue inicie com o comando plot e@ecutado
anteriormente
>> plo
A tabela abai@o li$ta a$ tecla$ 3ue podem $er u$ada$ para edio na linha de comando$'
tr$-P Chama uma linha de comando anterior+
tr$-N Chama uma linha de comando po$terior+
tr$-( Mo)e o cur$or um caractere S e$3uerda+
tr$-) Mo)e o cur$or um caractere S direita+
De$ete Mo)e o cur$or S e$3uerda1 apagando um caractere+
tr$-L Mo)e o cur$or uma pala)ra S e$3uerda+
tr$-R Mo)e o cur$or uma pala)ra S direita+
tr$-A Mo)e o cur$or para o comeo da linha+
tr$-E Mo)e o cur$or para o *inal da linha+
tr$-* Cancela a linha+
tr$-D Apaga o caractere 3ue e$t: $obre o cur$or+
tr$-+ Apaga at o *inal da linha+
2.2 Matries !im"les
MA"LA# trabalha e$$encialmente com um tipo de ob/eto1 uma matri6 retangular numrica Hreal ou comple@aI+ Em alguma$
$itua2e$1 denomina2e$ e$pecB*ica$ $o atribuBda$ a matri6e$ , por ,1 3ue $o o$ e$calare$1 e a matri6e$ com $omente uma linha ou
coluna1 3ue $o o$ )etore$+ !pera2e$ e comando$ no MA"LA# $o aplicado$ de maneira natural1 utili6ando o conceito de matri61
como $o indicado$ no papel+
(ode-$e entrar com matri6e$ no MA"LA# de di)er$a$ maneira$'
Entrar com uma lista e)plcita de elementos"
*erar matrizes utilizando funes e linhas de comando do MATA!"
+riar matrizes em ar(ui$os,M"
+hamar matrizes de um ar(ui$o de dados e)terno"
A maneira mai$ *:cil de $e declarar matri6e$ *a6endo a e@plicitao da li$ta de elemento$ na linha de comando1 $eguindo a$
con)en2e$ abai@o'
-eparar os elementos da lista de elementos atra$s de espaos ou $r'ulas"
+olocar os elementos entre colchetes, . /"
0sar 123 ponto,e,$r'ula para indicar o fim de uma linha"
(or e@emplo1 entrando com a linha de comando
>> A!" 2 3# 4 $ %# & ' ()
re$ulta em
>> A
" 2 3
4 $ %
& ' (
MA"LA# $al)a a matri6 A para 3ue po$$a $er utili6ada po$teriormente+ (ode-$e1 tambm1 entrar matri6e$ de ar3ui)o$ de
e@ten$o "m+ Se um ar3ui)o com o nome de matriz"m contm a$ trT$ linha$ de te@to
A ! " 2 3
4 $ %
& ' ( )
ento o comando
>> *atri+
atribui S matri6 A o$ dado$ corre$pondente$+
2.# $lementos da Matri
Elemento$ de matri6 podem $er 3uai$3uer e@pre$$2e$ 3ue o MA"LA# permiteG por e@emplo
>> , !-".3 sqrt(3) ("+2+3)*4/$)
re$ulta em
>> ,
-".3000 ".&32" 4.'000
Elemento$ indi)iduai$ de matri6e$ podem $er re*erenciado$ indi)idualmente com Bndice$ dentro de parTnte$e$1 H I+ Continuando o
e@emplo anterior
>> ,($) abs(,("))
>> ,
-".3000 ".&32" 4.'000 0 ".3000
(erceba 3ue o tamanho de ) aumenta automaticamente para acomodar o no)o elemento1 e o$ elemento$ inde*inido$ $o
a$$umido$ como $endo 6ero+
(ode-$e con$truir grande$ matri6e$ utili6ando matri6e$ menore$ como elemento$+ (or e@emplo1 para acre$centar uma no)a linha S
matri6 A'
>> r !"0 "" "2)#
>> A !A# r)
4$to re$ulta em
>> A
" 2 3
4 $ %
& ' (
"0 "" "2
Matri6e$ menore$ podem $er e@traBda$ de matri6e$ grande$ utili6ando o$ doi$ ponto$ H'I+ (or e@emplo
>> A A("1321)#
3ue *ornece a $eguinte matri6
>> A
" 2 3
4 $ %
& ' (
*a6 com 3ue retorne a$ trT$ primeira$ linha$ e toda$ a$ coluna$ da matri6 original A para a matri6 A+
2.% Linhas de Comando e &ari'eis do M()L(B
A$ linha$ de comando do MA"LA# *re3uentemente $o da *orma
$ari$el 4 e)press5o
ou $imple$mente
e)press5o
(odem $er compo$ta$ e@pre$$2e$ com operadore$ e outro$ caractere$ e$peciai$1 com *un2e$1 e com nome$ de )ari:)ei$+ A
e@ecuo da e@pre$$o produ6 uma matri6+ A matri6 mo$trada na tela e a$$ume o nome da )ari:)el de*inida na linha de comando
para 3ue po$$a $er utili6ada em uma outra $ituao+ Se *or omitido o nome da )ari:)el e o $inal 41 MA"LA# cria automaticamente
uma )ari:)el com o nome ans+ (or e@emplo1 digitando a e@pre$$o
>> "(00/'"
>> ans
23.4$%'
Uma linha de comando normalmente termina com a tecla Enter+ Entretanto1 $e o ?ltimo caractere *or um ponto-e-)Brgula HGI1 a
)ari:)el 3ue produ6ida no mo$trada na tela+ Se a e@pre$$o complicada de tal *orma 3ue no cabe em uma linha1 utili6a-$e o$
trT$ ponto$ H+++I $eguido$ pela tecla Enter para indicar 3ue a linha de comando continua na pr@ima linha+ (ode-$e *ormar nome de
*un2e$ e )ari:)ei$ com uma letra $eguida por um n?mero 3ual3uer de letra$ e dBgito$+ No entanto1 MA"LA# guarda $omente o$ -
primeiro$ caractere$ de um nome+
MA"LA# entende de *orma di*erente letra$ mai?$cula$ e min?$cula$+ A e a no $o a me$ma )ari:)el+ !$ nome$ da$ *un2e$
de)em $er digitado$ em letra$ min?$cula$+
2.* +,tendo Informaes do $s"ao de )ra,alho
!$ e@emplo$ pre)iamente e@ecutado$ criaram )ari:)ei$ 3ue $o arma6enada$ do e$pao de trabalho do MA"LA#+ (ara li$tar a$
)ari:)ei$ arma6enada$ u$e o comando
>> 34o
(ara )eri*icar uma li$tagem mai$ completa$ $obre a$ )ari:)ei$ arma6enada$ de)e-$e utili6ar o comando 6hos1 o 3ual tra6
in*orma2e$ $obre o nome1 a dimen$o da matri6 corre$pondente1 o n?mero de elemento$ de$$a matri61 entre outro$+
2.- + Comando .el"
! comando help pro)T in*ormao para a grande parte do$ tpico$ do MA"LA#+ ! comando
>> 4elp
$em nenhum argumento mo$tra uma li$ta de diretrio$ 3ue contTm ar3ui)o$ relacionado$ com MA"LA#+ Cada linha mo$trada li$ta
o nome de um diretrio $eguido por uma de$crio do conte?do do me$mo+ Algun$ diretrio$ $o a$$ociado$ com o$ comando$
b:$ico$ do MA"LA#+ !utro$ contTm toolbo@e$1 tai$ como control e si!nalG e$$e$ po$$uem *un2e$ adicionai$ do MA"LA# cobrindo
:rea$ de aplica2e$ mai$ e$peciali6ada$+
(ara uma li$ta de *un2e$ relacionada$ a um determinado diretrio1 digita-$e help $eguido pelo nome do me$mo+ Aparece uma
li$ta de comando$1 *un2e$ e $Bmbolo$ e$pecB*ico$ do MA"LA#+ ! comando help $eguido por e$te$ comando$ ou *un2e$ *ornece
in*orma2e$ $obre como utili6:-lo$ em uma linha de comando+
Com o comando
>> 4elp topico
topico de)e $er um diretrio ou o nome de uma *uno ou comando do MA"LA#+ Se *or digitado
>> 4elp inverse
MA"LA# pro)a)elmente ir: re$ponder
inverse not found.
4$to ocorre por3ue in$erse no o nome de uma *uno do MA"LA#1 a meno$ 3ue tenha $ido adicionada a uma toolbo@ pe$$oal+
2./ 0inaliando e !al'ando o $s"ao de )ra,alho
(ara *inali6ar o MA"LA# digite (uit ou e)it+ "erminando uma $e$$o do MA"LA#1 )ocT apaga a$ )ari:)ei$ do e$pao de
trabalho+ Ante$ de terminar1 pode-$e $al)ar a$ )ari:)ei$ digitando
>> save
E$te comando $al)a toda$ a$ )ari:)ei$ em um ar3ui)o em di$co chamado matlab"mat+ Na pr@ima )e6 3ue MA"LA#
chamado1 pode-$e e@ecutar o comando load para re$taurar o e$pao de trabalho com a$ )ari:)ei$ de matlab"mat+
(odem $er utili6ado$ o$ comando$ sa$e e load em ar3ui)o$ com outro$ nome$1 ou $al)ar $omente alguma$ )ari:)ei$+ !
comando sa$e temp $al)a a$ )ari:)ei$ em um ar3ui)o de nome temp"mat+ ! comando
>> save te*p 5
$al)a $omente a )ari:)el 71 en3uanto 3ue
>> save te*p 5 6 7
$al)a a$ )ari:)ei$ 71 8 e 9+
2.1 23meros e $4"resses (ritm5ticas
MA"LA# utili6a a notao decimal con)encional1 com ponto decimal e $inal negati)o opcionai$1 para n?mero$+ (ode-$e incluir
um *ator de e$cala em potTncia de de6 ou uma indicao de n?mero comple@o como $u*i@o+ Algun$ e@emplo$ de n?mero$ ):lido$
$o
3 -(( 0.000" (.%3(&23' ".%02"08-20 %.022$2e23 2i -3."4""$(i 3e$i
(odem $er con$truBda$ e@pre$$2e$ com o$ operadore$ de aritmtica u$uai$ e a$ regra$ de precedTncia'
U adio
- $ubtrao
V multiplicao
% di)i$o por n?mero S direita
N di)i$o por n?mero S e$3uerda
W potTncia
MA"LA# po$$ui tambm *un2e$ matem:tica$ elementare$ encontrada$ em calculadora$ cientB*ica$+ E$ta$ *un2e$ incluem abs,
s(rt, lo' e sin+ 9ocT pode *acilmente adicionar mai$ *un2e$ atra)$ do$ ar3ui)o$-M+ Alguma$ *un2e$ $imple$mente retornam
)alore$ e$peciai$ comumente utili6ado$1 como a *uno pi 3ue retorna o )alor da con$tante + A *uno :nf indica re$ultado in*initoG
uma di)i$o por 6ero gera como re$po$ta :nf+ A )ari:)el ;a; HNot a NumberI po$$ui di*erente$ propriedade$ com relao S )ari:)el
:nf+ Uma di)i$o <=< ou :nf=:nf produ6 ;a; como re$po$ta+
2.6 23meros Com"le4os e Matries
MA"LA# permite n?mero$ comple@o$1 indicado$ pela *uno e$pecial i ou %1 em toda$ a$ opera2e$ ou *un2e$+ A$$im1 temo$'
>> z 4 ? @ ABi
Uma outra *orma
>> 6 4 rBe)p1iBtheta3
Kuando *orem entrado$ n?mero$ comple@o$ como elemento$ de matri6 com o$ colchete$1 de)e $er e)itado 3ual3uer e$pao em
branco+ Uma e@pre$$o como 1 @ CBi1 com e$pao$ em )olta do $inal @1 repre$enta doi$ n?mero$+ 4$to tambm ):lido para n?mero$
reai$G uma e$pao ante$ do e@ponencial1 como em 1"D? e,A1 cau$a um erro+
! nome de uma *uno do MA"LA# tambm pode $er u$ada como o nome de uma )ari:)el+ Kuando utili6ado como uma
)ari:)el1 a *uno original $e torna indi$ponB)el no e$pao de trabalho at 3ue a )ari:)el $e/a apagada+
2.17 0ormatos de !a8da
MA"LA# mo$tra o re$ultado de uma linha de comando na tela1 e atribui e$te re$ultado a uma )ari:)el e$pecB*ica1 ou a ans $e a
)ari:)el no dada+ 9ocT pode utili6ar o comando format para controlar o *ormato numrico mo$trado+
Se todo$ o$ elemento$ de uma matri6 *orem inteiro$ e@ato$1 a matri6 mo$trada em um *ormato $em ponto$ decimai$+ Se ao
meno$ um elemento de uma matri6 no um inteiro e@ato1 ):rio$ *ormato$ de $aBda $o po$$B)ei$+ ! *ormato padro1 chamado de
s"ort #ormat1 mo$tra apro@imadamente cinco dBgito$ decimai$ $igni*icati)o$+ !$ outro$ *ormato$ mo$tram mai$ dBgito$ $igni*icati)o$
ou utili6am notao decimal+ Como um e@emplo1 $uponha
>> , !4/3 ".234$e-%)
!$ *ormato$ e a$ $aBda$ re$ultante$ para e$te )etor $o'
format short 1"???? <"<<<<
format short e 1"????e@<< 1"D?ACe,<6
format lon' 1"?????????????? <"<<<<<1D?AC6<<<
format lon' e 1"???????????????e@<< 1"D?AC<<<<<<<<<<<e,<6
format banE 1"?? <"<<
! comando help format mo$tra mai$ algun$ tipo$ po$$B)ei$ de *ormato+
2.11 09nes
0rande parte do poder do MA"LA# : atribuBdo ao e@ten$i)o con/unto de *un2e$+ Alguma$ da$ *un2e$ $o intrBn$eca$ ao
MA"LA#+ !utra$ *un2e$ e$to di$ponB)ei$ na biblioteca de ar3ui)o$-M di$tribuBdo$ com MA"LA# Ha toolbo@ do MA"LA#I+
Ainda e@i$tem outra$ 3ue $o adicionada$ por u$u:rio$ indi)iduai$ ou grupo$ de u$u:rio$1 para aplica2e$ mai$ e$peciali6ada$+ E$ta
uma importante caracterB$tica do MA"LA#G todo 9s9rio "ode criar f9nes :9e at9am da mesma forma :9e 9ma f9no
intr8nseca do M()L(B.
a!"t#$o ,
+"eraes com Matries
A$ *un2e$ elementare$ de matri6e$ e a $inta@e da$ opera2e$ entre matri6e$ $o o a$$unto de$te capBtulo+
A linha de comando ! 4 AF indica 3ue a )ari:)el ! recebe a tran$po$ta da matri6 A+
(ara matri6e$ comple@a$1 teremo$ 3ue a linha de comando acima *ornece a tran$po$ta comple@a con/ugada+ A$$im1 para obtermo$
$omente a tran$po$ta de uma matri6 comple@a de)emo$ *a6er ! 4 con% 1AF3"
A adio e $ubtrao de matri6e$ pode $er *eita entre matri6e$ de me$ma dimen$o ou entre um e$calar e uma matri6+ Na
primeira1 cada elemento de uma matri6 $omado ou $ubtraBdo do corre$pondente na outra matri6+ Na $egunda *orma1 o e$calar
adicionado ou $ubtraBdo de todo$ o$ elemento$ do outro operando+
A operao de multiplicao de*inida 3uando o n?mero de coluna$ da primeira matri6 *or igual ao n?mero de linha$ da $egunda
matri6+ ependendo da$ dimen$2e$ en)ol)ida$1 o re$ultado pode $er uma matri61 um )etor ou1 at me$mo1 um e$calar+ ! produto de
um e$calar por uma matri6 re$ulta em todo$ o$ elemento$ da matri6 multiplicado$ pelo e$calar+
Se A uma matri6 3uadrada no-$ingular1 ento AG! e !=A corre$ponde *ormalmente a multiplicao S e$3uerda e S direita de !
pela in)er$a de AG ou $e/a1 in$1A3B! e !Bin$1A31 ma$ o re$ultado obtido diretamente $em o c:lculo da in)er$a+ Em geral
7 4 AG! uma $oluo para AB7 4 !
7 4 !=A uma $oluo para 7BA 4 !
A di)i$o S e$3uerda1 AG!1 de*inida $empre 3ue # ti)er o me$mo n?mero de linha$ 3ue A+ ependendo $e A *or 3uadrada ou
no1 de)e-$e u$ar algum mtodo de *atorao+
A di)i$o normal de um e$calar pelo outro *eita *a6endo-$e )=H+
A e@pre$$o AIp ele)a A a p-$ima potTncia e de*inida $e A uma matri6 3uadrada e p um e$calar+
MA"LA# trata e@pre$$2e$ como e)p1A3 e s(rt1A3 como opera2e$ de )etore$1 de*inida$ em cada elemento de A+ A$ *un2e$
elementare$ de matri6e$ incluem
polH , polinJmio caracterstico
det , determinante
trace , trao da matriz
e)p , e)ponencial de cada elemento da matriz
lo' , lo'aritmo de cada elemento da matriz
s(rt , raiz (uadrada de cada elemento da matriz
MA"LA# tambm calcula *un2e$ tran$cendentai$1 tai$ como e@ponencial e logaritmo da matri6+ E$ta$ *un2e$ e$peciai$ $o
de*inida$ $omente para matri6e$ 3uadrada$+ Uma *uno matem:tica tran$cendental interpretada como uma *uno da matri6 $e um
m acre$centado ao nome da *uno+ A$ trT$ *un2e$ abai@o $o di$tribuBda$ /untamente com o MA"LA#
e)pm , matriz e)ponencial
lo'm , matriz lo'artmica
s(rtm , matriz raiz (uadrada
a!"t#$o -
+"eraes com &etores
Ne$te capBtulo $o mo$trada$ a$ opera2e$ lgica$ e relacionai$ e a$ *un2e$ matem:tica$ para )etore$+
! termo opera2e$ )etoriai$ re*ere-$e a opera2e$ aritmtica$ de elemento-por-elemento1 ao in)$ da$ opera2e$ algbrica$
lineare$ u$uai$ de matri6e$ denotada$ pelo$ $Bmbolo$ B G = I e K+ Um ponto H+I precedendo um operador indica uma operao de
elemento-por-elemento+
(ara adio e $ubtrao1 opera2e$ )etoriai$ e opera2e$ matriciai$ $o idTntica$+
! $Bmbolo "B $igni*ica multiplicao de elemento-por-elemento+ Se A e ! po$$uem a me$ma dimen$o1 ento A"B! re$ulta em
uma matri6 cu/o o$ elemento$ $o $imple$mente o$ produto$ do$ elemento$ indi)iduai$ de A e !+
A potTncia de elemento-por-elemento $imboli6ada por "I1 e *a6 com 3ue cada elemento de uma matri6 $e/a ele)ado ao elemento
corre$pondente da outra matri6+
%.1 +"eraes ;elacionais
Sei$ operadore$ relacionai$ e$to di$ponB)ei$ para a comparao de dua$ matri6e$ de dimen$2e$ idTntica$+
L menor 3ue
L4 menor ou igual 3ue
> maior 3ue
>4 maior ou igual 3ue
44 igual
M4 di*erente
MA"LA# compara o$ elemento$ corre$pondente$ de cada matri6+G o re$ultado uma matri6 de ,$ e A$1 com , repre$entando
)erdadeiro e A repre$entando *al$o+
%.2 +"eraes L<icas
!$ operadore$ N1 O e M corre$pondem ao$ operadore$ lgico$ XeY1 XouY e XnoY+
+ 4 A N ! uma matri6 cu/o o$ elemento$ $o ,$ onde amba$ a$ matri6e$ A e ! $o elemento$ no-nulo$1 e A$ onde uma da$
matri6e$ ou amba$ $o elemento$ nulo$+
+ 4 A O ! uma matri6 cu/o o$ elemento$ $o ,$ onde tanto A ou ! po$$uem elemento$ no-nulo$1 e A$ onde amba$ po$$$uem
elemento$ nulo$+
! 4 MA uma matri6 cu/o o$ elemento$ $o ,$ onde a matri6 A um elemento nulo1 e A$ 3uando A um elemento no-nulo+
"oda$ a$ opera2e$ acima $o ):lida$ apena$ para 3uando A e ! po$$uem me$ma dimen$o1 ou 3uando uma da$ dua$ matri6e$
um e$calar+
A$ *un2e$ lgica$ e relacionai$ do MA"LA# $o'
anH , condies l#'icas
all , condies l#'icas
find , encontra os ndices da matriz de $alores
l#'icos
e)ist , $erifica a e)istPncia de $ari$eis
isnan , detecta se al'um elemento da matriz
;a;
isinf , detecta se al'um elemento da matriz
infinito
finite , $erifica os $alores finitos da matriz
isemptH , detecta matrizes $azias
isstr , detecta $ari$eis strin'
is'lobal , detecta $ari$eis 'lobais
issparse , detecta matrizes esparsas
%.# 09nes Matemticas
A *un2e$ trigonomtrica$ incluBda$ no MA"LA# $o
sin , seno
cos , cosseno
tan , tan'ente
asin , arco,seno
acos , arco,cosseno
atan , arco,tan'ente
atanD , arco,tan'ente para os (uatro
(uadrantes
sinh , seno hiperb#lico
cosh , cosseno hiperb#lico
tanh , tan'ente hiperb#lica
asinh , arco,seno hiperb#lico
acosh , arco,cosseno hiperb#lico
atanh , arco,tan'ente hiperb#lico
MA"LA# inclui como *un2e$ elementare$
abs , $alor absoluto ou m#dulo de um nQmero
comple)o
an'le , Rn'ulo de fase
s(rt , raiz (uadrada
real , parte real
ima' , parte ima'inria
con% , comple)o con%u'ado
round , arredondamento para o inteiro mais
pr#)imo
fi) , arredondamento para o inteiro mais
pr#)imo de zero
floor , arredondamento para o inteiro mais
pr#)imo de ,
ceil , arredondamento para o inteiro mais
pr#)imo de @
si'n , fun5o sinal
rem , remanescente ou m#dulo
'cd , m)imo di$isor comum
lcm , mnimo mQltiplo comum
e)p , e)ponencial de base e
lo' , lo'aritmo natural
lo'1< , lo'aritmo de base 1<
a!"t#$o .
/ani!#$a0o de 1etores e /atri2es
Ne$te capBtulo $o mo$trado$ comando$ 3ue geram )etore$ e *un2e$ 3ue geram matri6e$+
*.1 =erando &etores
!$ doi$ ponto$ H'I repre$entam um caractere importante no MA"LA#+ A linha de comando
>> , "1$
gera um )etor linha contendo o$ n?mero$ de , a ; com incremento de uma unidade+ e$ta *orma produ6ido o )etor
,
" 2 3 4 $
(ode-$e utili6ar incremento$ di*erente$ da unidade como em
>> 9 01 pi/41 pi
3ue re$ulta em um )etor linha comeando em 6ero e terminando em H7+,8,<I com incremento de %8 HA+.>;8I+ E$ta notao do
doi$ ponto$ po$$ibilita a *:cil gerao de tabela$+ (ara $e obter um )etor coluna ba$ta tran$por o )etor linha gerado+
!utra$ *un2e$ para gerao de )etor incluem o lo'space1 o 3ual gera )etore$ e$paado$ logaritmicamente1 e o linspace1 3ue
permite 3ue )ocT e$peci*i3ue o n?mero de ponto$ ao in)$ do incremento+
>> : linspace (-pi2pi24)
:
-32"4"% -".04&2 ".04&2 3."4"%
*.2 Matries $s"eciais
MA"LA# apre$enta alguma$ *un2e$ ?tei$ para gerar matri6e$'
zeros , zeros
ones , constante
rand , elementos randJmicos uniformemente
distribudos
randn , elementos randJmicos normalmente
distribudos
eHe , identidade
linspace , $etores espaados linearmente
lo'space , $etores espaados
lo'aritmicamente
mesh'rid , utilizada com funes de duas
$ari$eis
*.# Mani"9lao de Matries
rotS< , rota5o
fliplr , in$erte a matriz da es(uerda para a
direita
flipud , in$erte a matriz de cima para bai)o
dia' , e)trai ou cria dia'onal
tril , triRn'ulo inferior
triu , triRn'ulo superior
reshape , altera o formato
K , transposi5o
T , rearran%amento 'eral
a!"t#$o 3
Introd9o aos =rficos
E$te capBtulo mo$tra como )i$uali6ar dado$ em gr:*ico$ 5-+ A$ *un2e$ elementare$ de plotagem comentada$ no inBcio $o
de$crita$ no capBtulo ,<+
-.1 09nes $lementares de >lota<em
A li$ta a $eguir relaciona a$ *un2e$ 3ue produ6em gr:*ico$ $imple$+ E$ta$ *un2e$ $e di*erem apena$ na maneira como
apre$entam a$ e$cala$ do$ ei@o$ do$ gr:*ico$+ Cada uma aceita a entrada na *orma de )etore$ ou matri6e$ e1 automaticamente1
de*inem a$ e$cala$ do$ ei@o$ de modo 3ue o$ dado$ de entrada *i3uem bem acomodado$+
plot , cria um 'rfico de $etores ou de colunas de matrizes
lo'lo' , cria um 'rfico utilizando escalas lo'artmicas para ambos os ei)os
semilo') , cria um 'rfico utilizando escala lo'artmica no ei)o ) e escala linear no ei)o H
semilo'H , cria um 'rfico utilizando escala lo'artmica no ei)o H e escala linear no ei)o )
(ode-$e adicionar tBtulo1 nome ao$ ei@o$1 linha$ de grade e te@to$ a 3ual3uer gr:*ico utili6ando
title , adiciona um ttulo ao 'rfico
)label , define um nome para a $ari$el do ei)o )
Hlabel , define um nome para a $ari$el do ei)o H
te)t , adiciona um te)to em lu'ar especfico
'te)t , adiciona um te)to ao 'rfico utilizando o mouse
'rid , ati$a as linhas de 'rade
-.2 Criando 9m =rfico
Se H um )etor1 o comando plot1H3 produ6 um gr:*ico linear do$ elemento$ de H )er$u$ o Bndice do$ elemento$ de H+ Se $o
e$peci*icado$ doi$ )etore$ como argumento$1 o comando plot1),H3 produ6 um gr:*ico de H )er$u$ )+
(ode-$e1 tambm1 e$peci*icar ):rio$ grupo$ de dado$ e de*inir o e$tilo de linha e a cor 3ue $ero u$ado$ em cada grupo em uma
?nica chamada ao comando plot'
>> t 01pi/"0012*pi#
>> , sin(t)#
>> 9" sin(t+.2$)#
>> 92 sin(t+.$)#
>> plot(,29"2;r-<2,2922;g=<)
plot produ6 um gr:*ico de H1 )er$u$ ) e HD )er$u$ ) no me$mo ei@o+ ! primeiro grupo de dado$ HH1I plotado com uma linha
)ermelha $lida e o $egundo grupo HHDI plotado com uma linha trace/ada )erde+
A linha de comando abai@o adiciona um tBtulo ao gr:*ico e nome ao$ ei@o$'
>> title(<>4ase ?4ift;)
>> ,label(<,sin(t);)
>> 9label(<9sin(t+);)

-.# $stilos de Linha? Marcadores e Cor
Como *oi citado1 pode $er pa$$ada uma $tring de caractere$ como um argumento para a *uno plot de modo a e$peci*icar ):rio$
e$tilo$ de linha$1 $Bmbolo$ de traado e core$+ Na linha de comando1
>> plot(5262?)
- uma $tring en)ol)ida por a$pa$ e con$truBda com o$ caractere$ mo$trado$ na tabela abai@o'
4"m'o$o or 4"m'o$o Esti$o de Lin5a
H amarelo " ponto
m ma'enta o crculo
c ciano ) )
r $ermelho @ sinal positi$o
' $erde B asterisco
b azul , s#lida
6 branco T pontilhada
E preto ," trao e ponto
,, trace%ada
(or e@emplo1 plot17,8,FbBF3 plota um a$teri$co a6ul em cada ponto de dado+
Se no *or e$peci*icada uma cor1 a *uno plot automaticamente utili6a a$ core$ na ordem em 3ue $e apre$entam na tabela acima+
e$ta *orma1 para uma linha $omente1 o gr:*ico traado em amarelo+
-.% (dicionando Linhas a 9m =rfico $4istente
(odem $er adicionada$ linha$ a um gr:*ico /: e@i$tente utili6ando o comando hold+ Kuando hold ati)ado1 MA"LA# no remo)e a$
linha$ /: e@i$tente$G ao in)$ di$to1 adiciona no)a$ linha$ ao$ ei@o$ e@i$tente$+ (ode $er 3ue o$ ei@o$ $e/am rede*inido$ $e o$ no)o$
dado$ $e encontrarem *ora da e$cala do antigo ei@o+ (or e@emplo1 a linha de comando abai@o traa a$ trT$ cur)a$ em uma me$ma
*igura'
>> plot(,)
>> 4old on
>> plot(9"2;=<)
>> plot(922;-.;)
>> 4old o@
-.* Dados Ima<inrios e Com"le4os
Kuando o$ argumento$ a $erem plotado$ $o comple@o$1 a parte imagin:ria ignorada e@ceto 3uando o comando plot dado
$imple$mente com um argumento comple@o+ (ara e$te ca$o e$pecial1 o comando um atalho para um gr:*ico da parte real em *uno
da parte imagin:ria+ (ortanto
>> plot(7)
onde 9 um )etor ou uma matri6 comple@a1 e3ui)alente a
>> plot(real(7)2i*ag(7))
-.- >lotando Matries
Um ar3ui)o-M 3ue po$$ui uma *uno para gerar uma matri6 de dado$ o peaEs+ !$ dado$ $o ba$eado$ em uma *uno de
dua$ )ari:)ei$1 tendo trT$ ponto$ de m:@imo e mBnimo'
! ar3ui)o-M cria uma matri6 3ue po$$ui o$ )alore$ da *uno para ) e H na *ai@a de -7 a 7+ !$ )alore$ de ) )ariam ao longo da$
coluna$ e o$ de H ao longo da$ linha$+ 9ocT pode e$peci*icar o tamanho da matri6 3uadrada 3ue retornada pa$$ando como
argumento S *uno peaEs+ (or e@emplo1
>> A pea:s(20)
cria uma matri6 de dado$ de dimen$o 5A por 5A+ Se )ocT omitir o argumento de entrada1 o )alor utili6ado o padro1 3ue 8-+
A *uno plot pode ter um ?nico argumento 3ue pode $er uma matri6'
>> plot(6)
4$to *a6 com 3ue $e/a traada uma linha no gr:*ico para cada coluna de 8+ ! ei@o ) a$$umido como $endo o Bndice do )etor
linha1 1Tm1 onde m o n?mero de linha$ de 8+ (or e@emplo1 a linha de comando
>> plot(pea:s)
produ6 um gr:*ico com 8- linha$+
A *uno plot tambm aceita doi$ )etore$ ou matri6e$ como argumento$+ (or e@emplo1
>> plot(pea:s2rot(0(pea:s;))
produ6 um gr:*ico da *uno peaEs em *uno da tran$po$ta de$locada de -AZdegG da me$ma *uno peaEs+
Em geral1 $e plot utili6ada com doi$ argumento$1 e $e 7 ou 8 po$$uem mai$ de uma linha ou coluna1 ento'
- Se 8 uma matri61 e ) um )etor1 plot1),83 plota $uce$$i)amente a$ linha$ ou coluna$ de 81 utili6ando di*erente$ core$ ou
tipo$ de linha para cada1 em *uno do )etor )+ A orientao de linha$ ou coluna$ $elecionada de *orma a po$$uir o me$mo
n?mero de elemento$ de )+ Se 8 3uadrada1 $ua$ coluna$ 3ue $o u$ada$+
- Se 7 uma matri6 e H um )etor1 plot17,H3 plota cada linha ou coluna de 7 em *uno do )etor H+
- Se ambo$ 7 e 8 $o matri6e$ de me$ma dimen$o1 plot17,83 plota a$ coluna$ de 7 em *uno da$ coluna$ de 8+ "ambm
pode $er utili6ada a *uno plot com ):rio$ pare$ de matri6e$ no argumento+
>> plot(5"26"2522622...)
Cada par 7,8 plotado1 gerando m?ltipla$ linha$+ !$ di*erente$ pare$ podem $er de dimen$2e$ di*erente$+
-./ Co"iando =rficos
!$ gr:*ico$ criado$ no MA"LA# no podem $er $al)o$ como *eito com o e$pao de trabalho+ (ode-$e1 entretanto1 copi:-lo$
como ar3ui)o bitmap H#M(I para a :rea de tran$*erTncia e depoi$ col:-lo no Dord ou no (aintbru$h1 por e@emplo+ (ara tanto1
e$colha1 na *igura1 o menu Edit e cli3ue em $op%G a *igura *oi copiada para a :rea de tran$*erTncia+ #a$ta1 agora1 entrar no Dord ou
no (aintbru$h e e$colher a opo $olar do menu Editar+
PARTE II
Informaes Avanadas
A se'unda parte traz os captulos de U a 1C, e contm t#picos mais a$anados"
Vara a$anar nesta parte o leitor de$e ter compreendido a primeira parte"
Ws t#picos mais importantes e (ue o usurio de$e ter o controle ao final desta parte dizem respeito a representa5o
polinomial, a utiliza5o das opes de flu)o de controle e a cria5o de ar(ui$os,M, se%am nas formas script ou fun5o"
a!"t#$o 6
(nlise de Dados
E$te capBtulo apre$enta um grupo de *un2e$ 3ue po$$uem a capacidade de an:li$e de dado$+
Um grupo de *un2e$ 3ue po$$ui a capacidade de an:li$e de dado$ mo$trado abai@o'
ma) , $alor m)imo
min , $alor mnimo
mean , $alor mdio
std , des$io mdio
sort , ordenar
sum , soma dos elementos
prod , produto dos elementos
cumsum , soma acumulati$a dos elementos
cumprod , produto acumulati$o dos elementos
hist , histo'rama
Kuando o$ argumento$ *orem )etore$1 no ir: importar $e o )etor orientado por linha ou por coluna+ Se o argumento *or uma
matri61 a$ *un2e$ operaro orientada$ por coluna+ e$ta *orma1 $e )ocT aplicar a *uno ma) a uma matri61 o re$ultado um )etor
linha contendo o )alor m:@imo de cada coluna+
a!"t#$o 7
09nes de Matri
Ne$te capBtulo $o de$crita$ alguma$ *un2e$ e$peciai$ para aplica2e$ em matri6e$1 tai$ como *atorao e decompo$io+
1.1 0atorao )rian<9lar
! mtodo de *atorao mai$ b:$ico e@pre$$a uma matri6 3ual3uer como o produto de dua$ matri6e$ e$$encialmente triangulare$1
$endo uma dela$ a permutao de uma matri6 triangular in*erior e a outra uma matri6 triangular $uperior+ E$ta *atorao
*re3uentemente chamada de 01 ou1 em alguma$ )e6e$1 de X+
A linha de comando de$crita como
>> !B2U) lu(A)
onde a permutao da matri6 triangular in*erior e 0 a matri6 triangular $uperior+
1.2 0atorao +rto<onal
A *atorao YX utili6ada tanto para matri6e$ 3uadrada$ como retangulare$+ E$ta *atorao e@pre$$a a matri6 como o produto de
uma matri6 ortonormal e uma matri6 triangular $uperior+
A linha de comando para e$ta *atorao de$crita como
>> !C2D) qr(A)
onde Y a matri6 ortonormal e X a matri6 triangular $uperior+
1.# Decom"osio dos (9to'alores
Se A uma matri6 n-por-n1 o$ n n?mero$ 3ue $ati$*a6em Ax = x $o o$ auto)alore$ de A+ Ele$ $o encontrado$ utili6ando
>> eig(A)
3ue retorna o$ auto)alore$ em uma )etor coluna+ Se A real e $imtrica1 o$ auto)alore$ $o reai$+ Ma$ $e A no $imtrica1 o$
auto)alore$ *re3uentemente $o n?mero$ comple@o$+ (ara $e obter o$ auto)alore$ e o$ auto)etore$ de uma )e6 ba$ta utili6ar a
$eguinte linha de comando'
>> !52E) eig(A)
onde o$ elemento$ da diagonal de Z $o o$ auto)alore$ e a$ coluna$ de 7 $o o$ auto)etore$ corre$pondente$ tai$ 3ue A7 4 7Z+
a!"t#$o 8
Po$in9mios e Processamento de 4inais
A repre$entao polinomial e o tratamento doi$ polinCmio$ $o tratado$ ne$te capBtulo+
6.1 ;e"resentao >olinomial
MA"LA# repre$enta polinCmio$ como )etore$ linha contendo o$ coe*iciente$ na ordem decre$cente de potTncia+ (or e@emplo1 a
e3uao caracterB$tica da matri6
A
" 2 3
4 $ %
& ' 0
computada atra)$ de
>> p pol9(A)
p
" -% -&2 -2&
E$ta a repre$entao do MA"LA# para o polinCmio s
,
: 3s
;
: 6;s -;6+
A$ raB6e$ de$ta e3uao $o dada$ por
>> r roots(p)
r
"2."22(
-$.&34$
-0.3''4
A$ raB6e$ da e3uao caracterB$tica $o o$ auto)alore$ da matri6 A+ (ode-$e obter o polinCmio original atra)$ da$ raB6e$
encontrada$ acima
>> p2 pol9F
p2
" -% -&2 -2&
Con$idere o$ polinCmio$ a<s= > s
;
? ;s ? , e '<s= > -s
;
? .s ? 3+ ! produto do$ polinCmio$ *eito atra)$ da con)oluo do$
coe*iciente$
>> a !" 2 3)# b !4 $ %)#
>> c conv(a2b)
c
4 "3 2' 2& "'
Uma li$ta completa da$ *un2e$ polinomiai$ inclui
polH , polinJmio caracterstico
roots , razes do polinJmio
polH$al , a$alia o polinJmio com o ar'umento substituindo a $ari$el
polH$alm , a$alia o polinJmio com o ar'umento sendo uma matriz
con$ , multiplica5o
decon$ , di$is5o
residue , e)pans5o em fraes parciais
polHder , deri$ada do polinJmio
polHfit , a%uste do polinJmio
6.2 >rocessamento de !inais
9etore$ $o utili6ado$ para guardar $inai$ amo$trado$ ou $e3uTncia$ em proce$$amento de $inai$+ (ara $i$tema$ de ):ria$
entrada$1 cada linha de uma matri6 corre$ponde a um ponto de amo$tra onde a$ coluna$ repre$entam o$ di)er$o$ canai$+ MA"LA#
po$$ui alguma$ *un2e$ de proce$$amento de $inai$'
abs , m#dulo de um nQmero comple)o
an'le , Rn'ulo de fase de um nQmero comple)o
con$ , con$olu5o
decon$ , descon$olu5o
fft , transformada de [ourier
ifft , transformada de [ourier in$ersa
fftshift - troca o$ 3uadrante$ da matri6
Vara ar'umentos bidimensionais, como matrizes, usam,se as funes modificadasT
fftD , fft bidimensional
ifftD , ifft bidimensional
con$D , con$olu5o bidimensional
6.# 0iltro de Dados
A *uno
>> 9 flter(b2 a2 ,)
*iltra o$ dado$ contido$ no )etor ) com o *iltro de$crito pelo$ )etore$ a e b1 criando o$ dado$ *iltrado$ H+ A e$trutura do *iltro pode $er
de$crita pela e3uao di*erencial
@<n= > '<%=A<n= ? '<;=A<n : %= ? BBB ? '<n'=A<n : n' ? %= : a<;=@<n : %= : BBB : a<na=@<n : na ? %=
ou de modo e3ui)alente1 pela tran$*ormada 9
C<2= > D<2= > '<%= ? '<;=2
: %
?BBB?'<n'=2
: <na : %=
E<2= % ? a<;=2
: %
?BBB?a<na=2
: <na : %=
A *uno fre(z retorna a re$po$ta comple@a em *re3uTncia de *iltro$ digitai$+
a!"t#$o %F
09nes de 09no
Ne$te capBtulo $o tratada$ a$ *un2e$ do MA"LA# 3ue no trabalham com matri6e$ numrica$1 ma$ com *un2e$ matem:tica$+
A$ #unes de #uno $o de$crita$ como $endo'
4ntegrao numrica
- E3ua2e$ no-lineare$
- Soluo de e3ua2e$ di*erenciai$
MA"LA# repre$enta *un2e$ matem:tica$ atra)$ de ar3ui)o$ de *uno-M+ (or e@emplo1 a *uno
f<A= > % ? % - 3
<A : FB,=
;
? FBF%= <A : FB8=
;
? FBF-
pode $er encontrada no MA"LA#1 poi$ *oi criada atra)$ de um ar3ui)o-M chamado humps"m+
17.1 Inte<rao 29m5rica
A :rea $ob uma *uno #&x' pode $er determinada *a6endo-$e a integrao numrica de #&x'. (ara integrar a *uno de*inida por
humps"m de A a ,
>> q quad(<4u*ps;202")
q
2(.'$'3
(ode-$e notar 3ue o primeiro argumento da *uno (uad o nome de uma *uno entre a$pa$+ 4$to por3ue (uad chamada
uma *uno de *uno - uma *uno 3ue opera em outra *uno+
Uma gr:*ico da *uno obtido atra)$ de
>> , -"1.0"12#
>> plot(,24u*ps(,))
17.2 $:9aes 2o@Lineares e 09nes de +timiao
A$ *un2e$ de *uno para e3ua2e$ no-lineare$ e otimi6ao incluem
fmin , mnimo de uma fun5o de uma $ari$el
fmins , mnimo de uma fun5o de $rias $ari$eis
fzero , zero de uma fun5o de uma $ari$el
Continuando o e@emplo de*inido por humps"m1 a locali6ao do mBnimo na regio de A+; a , computado com fmin'
>> ,* f*in(<4u*ps;2.$2")
,*
0.%3&0
! )alor de$te mBnimo
>> 9 4u*ps(,*)
9
"".2$2'
(elo gr:*ico1 pode-$e ob$er)ar 3ue a *uno humps apre$enta doi$ 6ero$+ A locali6ao do 6ero pr@imo a ) 4 <
>> ,+" f+ero(<4u*ps;20)
,+"
-0."3"%
! 6ero perto de ) 4 1 e$t: em
>> ,+2 f+ero(<4u*ps;2")
,+2
".2(($
17.# 09nes de $:9aes Diferenciais
A$ *un2e$ do MA"LA# para $oluo de e3ua2e$ di*erenciai$ ordin:ria$ $o
odeD? , mtodo de Xun'e,\utta para D
a
e ?
a
ordens
odeAC , mtodo de Xun'e,\utta,[ehlber' para A
a
e C
a
ordens
a!"t#$o %%
)$#Ao de ontro$e
!$ *lu@o$ de controle encontrado$ na maioria da$ linguagen$ de programao $o tratado$ ne$te capBtulo+
A$ linha$ de comando de *lu@o de controle permitem 3ue MA"LA# $e/a utili6ado como uma linguagem de programao
completa de alto-nB)el+
11.1 Loo" [WX
MA"LA# po$$ui $ua prpria )er$o do$ loop$ [WX e ZW encontrado$ em linguagen$ de programao+ 4$to permite 3ue um
grupo de linha$ de comando $e/a repetido por um n?mero *i@o e predeterminado de )e6e$+ (or e@emplo1
>> for i "1n2 ,(i) 02 end
atribui A ao$ n primeiro$ elemento$ de )+ Se n menor do 3ue ,1 a con$truo ainda ):lida1 ma$ MA"LA# no e@ecuta a linha de
comando interna+ Se ) no e@i$te ou po$$ui meno$ de n elemento$1 ento o e$pao adicional alocado automaticamente+
Uma importante ob$er)ao 3ue $e de)e $empre *inali6ar um loop *or com um end+ Se *or digitado
>> for i "1n2 ,(i) 0
o $i$tema e$pera 3ue $e/am entrada$ o re$tante da$ linha$ de comando no corpo do loop+ Nada acontece at 3ue $e/a digitado end+
A *orma geral do loop for
for $ 4 e)press5o
linhas de comando
end
(ode-$e utili6ar mai$ de um loop dentro de um loop1 ma$ no $e pode e$3uecer 3ue cada for de)e ter $eu prprio end+ (ode-$e1
tambm1 *a6er com 3ue o loop decre$a1 de acordo com a e@pre$$o de$crita+ (or e@emplo1
>> for G n-"1-"1"
A(12 G) t.*A(12 G+")#
end
11.2 Loo" ]&:E
MA"LA# po$$ui $ua prpria )er$o do loop 6hile1 o 3ual permite 3ue uma linha de comando1 ou um grupo de linha$ de
comando1 $e/a repetida um n?mero inde*inido de )e6e$1 atra)$ do controle de uma condio lgica+
A *orma geral de um loop 6hile '
>> 6hile e)press5o
linhas de comando
end
A$ linha$ de comando $o e@ecutada$ repetidamente en3uanto o$ elemento$ da e@pre$$o no a$$umam )alor 6ero+ A matri6 da
e@pre$$o 3ua$e $empre uma e@pre$$o relacional , por ,1 ento n?mero$ no-nulo$ corre$pondem a uma e@pre$$o )erdadeira+
Kuando a matri6 da e@pre$$o no um e$calar1 pode-$e redu6i-la atra)$ da$ *un2e$ anH e all+
11.# Comandos :[ e !XEA\
! e@emplo abai@o ilu$tra a utili6ao do$ comando$ 6hile e if+ Ele tambm mo$tra a *uno input e o comando breaE+ E$te e@emplo
trabalha com 3ual3uer n?mero inteiro po$iti)o+ Se ele par1 *a6-$e a di)i$o por 5G $e ele Bmpar1 *a6-$e a multiplicao por 7 e $oma
com ,+ E$te proce$$o repetido at 3ue o re$ultado $e/a ,+
n 4 input1KEnter n, ne'ati$e (uits" K32
if n AC4 <, breaE, end
6hile n > 1
if rem1n,D3 44 <
n 4 n=D
else
n 4 ?Bn@1
end
end
end
a!"t#$o %;
(r:9i'os@MA !cri"ts e 09nes
Um do$ a$$unto$ mai$ importante$1 a criao de ar3ui)o$-M de$crita ne$te capBtulo+ MA"LA# u$ualmente acionado por um
comandoG 3uando $e entra com uma $imple$ linha de comando1 MA"LA# a proce$$a imediatamente e mo$tra o re$ultado+ MA"LA#
tambm pode e@ecutar uma $e3uTncia de comando$ 3ue e$t: arma6enada em um ar3ui)o+
Ar3ui)o$ de di$co 3ue po$$uem linha$ de comando para MA"LA# $o chamado$ ar3ui)o$-M em )irtude de $ua e@ten$o $er do
tipo "m+ (or e@emplo1 o ar3ui)o bessel"m contm linha$ de comando do MA"LA# para a)aliar *un2e$ #e$$el+ Um ar3ui)o-M
con$i$te de uma $e3uTncia normal de linha$ de comando do MA"LA#1 a 3ual pode *a6er uma chamada a outro$ ar3ui)o$-M+ Um
ar3ui)o-M pode chamar a $i me$mo de modo recur$i)o+ (ode-$e criar e$te$ ar3ui)o$ com um editor de te@to$ como o Notepad ou o
Dord+
oi$ tipo$ de ar3ui)o$-M podem $er u$ado$' $cript$ e *un2e$+ Script$1 ou ar3ui)o$ $cript1 reali6am longa$ $e3uTncia$ de
comando$+ Fun2e$1 ou ar3ui)o$ *uno1 permitem adicionar no)a$ *un2e$ S *un2e$ /: e@i$tente$+ A maior parte do poder do
MA"LA# $e de)e ao *ato de $e poder criar no)a$ *un2e$ 3ue re$ol)am problema$ e$pecB*ico$+
12.1 (r:9i'os !cri"t
Kuando um $cript chamado1 MA"LA# $imple$mente e@ecuta o$ comando$ encontrado$ no ar3ui)o+ A$ linha$ de comando de
um ar3ui)o $cript operam globalmente com o$ dado$ 3ue e$to no e$pao de trabalho+ Script$ $o ?tei$ na reali6ao de an:li$e1
$oluo de problema$1 ou no pro/eto de longa$ $e3uTncia$ de comando1 o 3ue $e torna can$ati)o para $er *eito interati)amente+ Como
um e@emplo1 $uponha um ar3ui)o chamado fibno"m 3ue po$$ui o$ comando$'
f 4 .1 1/2 i 4 12
6hile f1i3 @ f1i@13 L 1<<<
f1i@D3 4 f1i3 @ f1i@132
i 4 i @ 12
end
plot1f3
igitando a linha de comando fibno *a6 com 3ue MA"LA# e@ecute o$ comando$1 calculando o$ ,< primeiro$ n?mero$ da $rie
de Fibonacci1 e crie um gr:*ico+ Ap$ a e@ecuo do ar3ui)o e$tar completa1 a$ )ari:)ei$ * e i *icam mantida$ no e$pao de trabalho+
!$ demo$ *ornecido$ pelo MA"LA# $o bon$ e@emplo$ de como $e utili6ar $cript$ para reali6ar tare*a$ mai$ complicada$+ (ara
u$:-lo$1 ba$ta digitar demo$ no prompt do MA"LA#+
12.2 (r:9i'os 09no
Um ar3ui)o-M 3ue contm a pala)ra function no Bnicio da primeira linha um ar3ui)o *uno+ Uma *uno di*ere de um $cript
pelo$ argumento$ 3ue de)em $er pa$$ado$ e pela$ )ari:)ei$ 3ue $o de*inida$ e manipulada$1 3ue $o locai$ S *uno e no podem $er
operada$ globalmente no e$pao de trabalho+ ! ar3ui)o mean"m um e@emplo de um ar3ui)o *uno 3ue po$$ui a$ linha$ de
comando'
function H 4 mean1)3
^ MEA; A$era'e or mean $alue
^ [or $ectors, Mean1)3 returns the mean $alue
^ [or matrices, MEA;1)3 is a ro6 $ector
^ containin' the mean $alue of each column"
.m,n/ 4 size1)32
if m 44 1
m 4 n2
end
H 4 sum1)3=m2
A e@i$tTncia de$te ar3ui)o de*ine uma no)a *uno chamada mean+ A no)a *uno mean u$ada como 3ual3uer outra *uno do
MA"LA#+ (or e@emplo1 $e z um )etor de inteiro$ de , a --1
>> + "1((#
o )alor mdio de$te encontrado atra)$ do comando
>> *ean(+)
3ue re$ulta em
ans
$0
A$ in*orma2e$ abai@o $o para o ar3ui)o mean"m1 ma$ o princBpio ):lido para todo$ o$ ar3ui)o$ *uno'
A primeira linha declara o nome da fun5o e os ar'umentos de entrada e sada" -em esta linha, o ar(ui$o um
ar(ui$o script, e n5o um ar(ui$o fun5o"
W smbolo ^ indica (ue o restante da linha um comentrio e de$e ser i'norado"
As primeiras linhas descre$em o ar(ui$o,M e s5o mostradas (uando $ocP di'ita help mean"
As $ari$eis m, n e H s5o locais a mean e n5o aparecem no espao de trabalho ap#s mean ter terminado" 1Wu,
se elas e)istem, permanecem inalteradas"3
;5o necessrio definir os inteiros de 1 a SS em uma $ari$el de nome )" ;o e)emplo, a fun5o mean foi
usada com uma $ari$el z" W $etor z (ue contm os inteiros de 1 a SS foi passado ou copiado para mean onde
ele se tornou uma $ari$el local de nome )"
(ode-$e criar uma a/uda online para o$ ar3ui)o$-M entrando com um te@to de uma ou mai$ linha$ de coment:rio$1 comeando
pela $egunda linha do ar3ui)o+ (or e@emplo1 o ar3ui)o-M an'le"m contm
function p 4 an'le1h3
^A;*E Vhase an'le"
A;*E1&3 returns the phase an'les, in radians, of a matri) 6ith comple) elements"
-ee also A!-, 0;]XAV"
Kuando $e entra com help an'le1 a$ linha$ 51 7 e 8 $o mo$trada$+ #a$eado ni$to1 a primeira linha de coment:rio$ em 3ual3uer
ar3ui)o-M de)e conter o maior n?mero de in*orma2e$ po$$B)ei$+
12.# &ari'eis =lo,ais
Cada *uno do MA"LA# de*inida por um ar3ui)o-M po$$ui $ua$ prpria$ )ari:)ei$ locai$1 a$ 3uai$ no tem relao com a$ de
outra$ *un2e$ e com a$ do e$pao de trabalho+ Entretanto1 $e ):ria$ *un2e$ e tambm o plano de trabalho declararem uma )ari:)el
particular como global1 ento todo$ ele$ di)idem a me$ma )ari:)el+ Kual3uer atribuio a e$ta )ari:)el1 em 3ual3uer *uno1 *ica
di$ponB)el a toda$ a$ outra$ *un2e$ 3ue a declaram como global+
(ara *a6er com 3ue uma )ari:)el $e/a global1 ba$ta e$cre)er
'lobal 7 8 9
onde a$ )ari:)ei$ 71 8 e 9 iro trabalhar como $endo globai$+
12.% !trin<s de )e4to
String$ de te@to $o entrada$ no MA"LA# entre a$pa$ $imple$ H K I+ (or e@emplo1
>> s <Hello;
re$ulta em
s
Hello
! te@to arma6enado em um )etor1 $endo um caractere por elemento+ Ne$te ca$o1
>> si+e(s)
ans
" $
indica 3ue s po$$ui cinco elemento$+ !$ caractere$ $o arma6enado$ com $eu$ )alore$ ASC441 e a *uno abs mo$tra e$te$ )alore$'
>> abs(s)
ans
&2 "0" "0' "0' """
Utili6a-$e colchete$ para /untar )ari:)ei$ de te@to em $tring$ maiore$'
>> s !s2 < Iorld <)
s
Hello Iorld
( 09no eval
A *uno e$al trabalha com )ari:)ei$ do tipo te@to e implementa uma podero$a *acilidade de macro+ e$al1t3 *a6 com 3ue o te@to
contido em t $e/a a)aliado+ (or e@emplo1
t 4 K1=1i@%,13F2
for i 4 1Tn
for % 4 1Tn
a1i,%3 4 e$al1t32
end
end
cria uma matri6 a de dimen$o n por n1 onde cada elemento a)aliado pela *uno 3ue e$t: de$crita por t+
a!"t#$o %,
(r:9i'os de Disco
!$ comando$ relacionado$ com ar3ui)o$ 3ue permitem a importao e a e@portao de dado$ $o o$ a$$unto$ de$te capBtulo+ !$
comando$ do MA"LA# sa$e e load1 gra)am e e@ecutam o conte?do do e$pao de trabalho1 re$pecti)amente+ !utro$ comando$
relacionado$ com ar3ui)o$ de di$co permitem e@ecutar programa$ e@terno$ e torna po$$B)el a importao e a e@portao de dado$+
Algun$ de$$e$ comando$ $o dir1 tHpe1 delete e cd+ Ele$ atuam de *orma idTntica como atuam no MS-!S+
1#.1 Im"ortando e $4"ortando Dados
(ode-$e introdu6ir dado$ de outro$ programa$ no MA"LA# de ):ria$ maneira$+ a me$ma *orma1 tambm pode-$e e@portar
dado$ para outro$ programa$+ (ode acontecer1 ainda1 do programa manipular dado$ diretamente de ar3ui)o$-MA"1 o *ormato de
ar3ui)o 3ue MA"LA# utili6a+
1#.1.1 Im"ortando Dados
! melhor mtodo de importar dado$ depende da 3uantidade de dado$ e@i$tente1 $e ele$ /: e$to em uma *orma de leitura
con)eniente1 3ual e$ta *orma1 etc+ Abai@o e$to li$tada$ *orma$G de)e-$e $elecionar a mai$ apropriada+
Entrar os dados como uma lista e)plcita de elementos" -e pe(uena a (uantidade de dados, di'amos menos
de 1< elementos, fcil de di'it,los e)plicitamente utilizando colchetes" Este mtodo se torna incon$eniente no
caso de ter (ue se di'itar uma (uantidade 'rande de dados, pois n5o poss$el edit,los caso se cometa um
erro"
+riar os dados atra$s de um ar(ui$o,M" ;este caso, utiliza,se um editor de te)to para criar um ar(ui$o,M
script (ue entra com os dados como uma lista e)plcita de elementos" Este mtodo Qtil (uando os dados n5o
est5o em um formato apropriado de leitura e tPm (ue ser di'itados de (ual(uer maneira" Este mtodo apresenta
$anta'em com rela5o ao primeiro, pois permite (ue os erros (ue possam ter acontecido durante a entrada dos
dados, se%am corri'idos"
er dados de um ar(ui$o A-+::" Este ar(ui$o armazena dados no formato A-+::, com linhas de comprimento
fi)o terminadas com E;TEX e com espaos entre os nQmeros 1ar(ui$os A-+:: podem ser editados fazendo,se
uso de um editor de te)to normal3" Ws ar(ui$os podem ser lidos diretamente no MATA! atra$s do comando
load" W resultado colocado em uma $ari$el cu%o nome o nome do ar(ui$o"
er dados utilizando fopen, fread e outras funes de E=- de bai)o,n$el" Este mtodo Qtil (uando se (uer
acessar ar(ui$os de dados de outras aplicaes (ue possuem seus pr#prios formatos"
Zesen$ol$er um pro'rama em + para traduzir seus dados para o formato do ar(ui$o,MAT e depois ler este
ar(ui$o no MATA! atra$s do comando load"
1#.1.2 $4"ortando Dados do M()L(B
Algun$ mtodo$ para e@portao de dado$ e$to de$crito$ a $eguir'
Vara pe(uenas matrizes, utiliza,se o comando diarH para criar um ar(ui$o diarH, para onde as $ari$eis s5o
passadas" Vode,se utilizar um editor de te)to para manipular o ar(ui$o diarH ap#s ter sido criado" A sada de
diarH inclui os comandos do MATA! utilizados durante a sess5o"
-al$ar os dados no formato A-+:: utilizando o comando sa$e com a op5o ,ascii" Vor e)emplo,
[[ A \ randH817IG
[[ $a)e temp+dat A -a$cii
cria um ar3ui)o ASC44 chamado temp"dat+
*ra$ar os dados em um formato especial utilizando fopen, f6rite e outras funes de E=- de bai)o,n$el" Este
mtodo Qtil (uando se (uer 'ra$ar os dados em um formato de ar(ui$o re(uerido por uma aplica5o"
*ra$ar os dados em um ar(ui$o,MAT utilizando o comando sa$e, e escre$er um pro'rama em + para traduzir
este ar(ui$o,MAT para o formato (ue se dese%ar"
a!"t#$o %-
+ De,9<<er do M()L(B
E$te capBtulo de$cre)e comando 3ue au@iliam na de$coberta de erro$ 3ue ocorrem durante o tempo de e@ecuo+ Ape$ar da
linguagem 3ue MA"LA# utili6a $er meno$ comple@a 3ue a$ outra$ linguagen$ de programao1 ele po$$ui $ua prpria $inta@e1 e
tal)e6 $e/a nece$$:rio reparar algun$ erro$ 3ue )enham a acontecer+ MA"LA# encontra erro$ de $inta@e durante a compilao+ E$te$
erro$ u$ualmente $o *:cei$ de con$ertar+ MA"LA# tambm pode encontrar erro$ durante o tempo de e@ecuoG e$te$ erro$ tendem a
$er mai$ di*Bcei$ de $erem repararado$1 poi$ o e$pao de trabalho local S *uno perdido 3uando um erro *ora o retorno ao prompt
do MA"LA# e ao e$pao de trabalho principal+ Se utili6a-$e o ponto-e-)Brgula para 3ue o$ re$ultado$ imediato$ da$ linha$ de
comando no $e/am mo$trado$1 no $e $aber: onde ocorreu o erro+ (ara $e mo$trar o$ re$ultado$ intermedi:rio$1 pode-$e utili6ar
3ual3uer um do$ mtodo$ abai@o'
Xemo$er os ponto,e,$r'ulas de forma (ue se possa $isualizar os resultados imediatos"
Adicionar o comando EeHboard para (ue se possa e)aminar a situa5o do espao de trabalho no ponto onde
EeHboard foi inserido"
Xetirar a declara5o de function para (ue os ar(ui$os,M possam ser e)ecutados como script, tornando os
resultados intermedirios dispon$eis no espao de trabalho principal"
0tilizar o debu''er do MATA!"
!$ trT$ primeiro$ mtodo$ re3uerem a edio do ar3ui)o-M+ ! ?ltimo mtodo *oi introdu6ido a partir da )er$o 8+A do MA"LA#1
e o$ $eu$ comando$ $o
dbstop 4ntrodu6 uma interrupo
dbclear &emo)e a interrupo
dbcont Continua a e@ecuo
dbdo6n Muda o conte@to do e$pao de trabalho local
dbstatus Li$ta toda$ a$ interrup2e$
dbstep E@ecuta uma ou mai$ linha$
dbtHpe Li$ta o$ ar3ui)o$-M com o n?mero da$ linha$
dbup Muda o conte@to do e$pao de trabalho local
db(uit Finali6a o modo debug
a!"t#$o %.
ArG#ivos EH4
A$ *un2e$ de E%S de ar3ui)o do MA"LA# 3ue permitem a leitura e a e$crita em *ormato di*erente ao gerado$ pelo me$mo $o
de$crita$ ne$te capBtulo+
A$ *un2e$ de E%S HEntrada%SaBdaI de ar3ui)o do MA"LA# permitem a leitura de dado$ coletado$ em outro *ormato diretamente
pelo MA"LA#1 ou a e$crita de dado$ gerado$ pelo MA"LA# no *ormato re3uerido por outro programa ou di$po$iti)o+ A$ *un2e$
lTem e gra)am ar3ui)o$ de te@to *ormatado$ e ar3ui)o$ bin:rio$ de dado$+
1*.1 (,rindo e 0echando (r:9i'os
Ante$ de $e ler ou e$cre)er em um ar3ui)o1 de)e-$e abri-lo com o comando fopen1 e$peci*icando o ar3ui)o a $er aberto e a $tring
de permi$$o+ (or e@emplo1
>> fd fopen(<pen.dat;2;r;)
abre para leitura o ar3ui)o pen"dat+
A$ $tring$ de permi$$o di$ponB)ei$ $o'
OrO para leitura
M6O para gra)ao
MaO para atribuio
Mr@O tanto para leitura como para gra)ao
!utra$ $tring$ de permi$$o podem $er obtida$ com o comando help fopen+
A *uno fopen retorna um identi*icador de ar3ui)o1 3ue um inteiro po$iti)o atribuBdo ao ar3ui)o pelo $i$tema operacional+
E$te identi*icador de ar3ui)o ba$icamente um atalho para $e re*erenciar o ar3ui)o+ A$ *un2e$ de E%S de ar3ui)o do MA"LA#
utili6am o identi*icador como argumento para identi*icar o ar3ui)o aberto para leitura1 e$crita ou encerramento+ Se o ar3ui)o no
pode $er aberto1 fopen retorna -, como identi*icador+ R acon$elh:)el te$tar o identi*icador cada )e6 3ue um ar3ui)o aberto+ Um
$egundo )alor 3ue retornado pode *ornecer in*ormao adicional $obre erro$+ (or e@emplo1 $e MA"LA# no encontra o ar3ui)o
pen"dat1 o comando
>> !fd2 *essage) fopen(<pen.dat;2;r;)
atribui -, para fid1 e messa'e recebe uma $tring com a *orma abai@o
Jo suc4 fle or director9.
Uma )e6 aberto1 o ar3ui)o *ica di$ponB)el para leitura e gra)ao+ Kuando $e termina a leitura ou a gra)ao1 u$a-$e fclose para
*echar o ar3ui)o+ (or e@emplo1
>> status fclose(fd)
*echa o ar3ui)o a$$ociado com o identi*icador fid1 e
>> status fclose(<all;)
*echa todo$ o$ ar3ui)o$ aberto$+ Amba$ a$ *orma$ retornam A $e e$ta operao *or reali6ada com $uce$$o1 ou -, $e algo de errado
acontecer+
1*.2 Leit9ra de (r:9i'os com Dados em Binrio
A *uno fread lT ar3ui)o$ de dado$ bin:rio$+ Na $ua *orma mai$ $imple$1 ele lT um ar3ui)o inteiro em uma matri6+ (or
e@emplo1
>> fd fopen(<pen.dat;2;r;)#
>> A fread(fd)#
>> status fclose(fd)#
lT todo$ o$ dado$ do demo pennH como caractere1 e o$ e$cre)e em uma matri6 A+ oi$ argumento$ opcionai$ a fread *a6em o
controle do n?mero de )alore$ lido$ e a preci$o de cada )alor+
>> fd fopen(<pen.dat;2;r;)#
>> A fread(fd2"00)#
>> status fclose(fd)#
lT o$ ,AA primeiro$ )alore$ de dado$ em um )etor coluna A+ Sub$tituindo o n?mero ,AA pela$ dimen$2e$ de uma matri6 L,A1,AP1 *a6
com 3ue $e/am lido$ o$ me$mo$ ,AA elemento$1 arma6enando-o$ em uma matri6 ,A@,A+ E
>> A fread(fd2Knf)
lT at o *inal do ar3ui)o1 preenchendo a matri6 A como um )etor coluna+ !mitir o tamanho do argumento produ6 o me$mo e*eito+ !
argumento de preci$o numrica controla o n?mero de bit$ lido$ em cada )alor e a interpretao de$te$ bit$ como )alore$ caractere1
inteiro ou ponto *lutuante+ Alguma$ preci$2e$ comun$ incluem
KcharF e KucharF para caracteres com sinal e sem sinal 1tipicamente _ bits3
KshortF e Klon'F para inteiros curtos e lon'os 1tipicamente 16 e ?D bits, respecti$amente3
KfloatF e KdoubleF para $alores em ponto flutuante de precis5o simples e dupla 1tipicamente ?D e 6A bits,
respecti$amente3
Se fid $e re*erir a um ar3ui)o aberto contendo )alore$ em ponto *lutuante1 ento
>> A fread(fd2"02;Loat;)
lT ,A )alore$ em ponto *lutuante preenchendo um )etor coluna A+
1*.# $scre'endo em (r:9i'os com Dados em Binrio
A *uno f6rite e$cre)e o$ elemento$ de uma matri6 em um ar3ui)o com uma preci$o numrica e$pecB*ica1 retornando o n?mero
de )alore$ e$crito$+ (or e@emplo1
>> f3riteid fopen(<*agic$.bin;2;3;)#
>> count f3rite(f3riteid2*agic($)2;integer*4;)#
>> status fclose(f3riteid)#
cria um ar3ui)o bin:rio de ,AA b]te$ contendo o$ 5; elemento$ da matri6 3uadrada ;@;1 arma6enado$ em inteiro$ de 8 b]te$+ 4$to
atribui 5; S )ari:)el count+
1*.% $scre'endo (r:9i'os de )e4to 0ormatados e !trin<s
A *uno fprintf con)erte dado$ em $tring$ de caractere e o$ mo$tra na tela ou em um ar3ui)o+ ! *ormato de $aBda de*inido por
um e$peci*icador de con)er$o e por um te@to+ !$ e$peci*icadore$ de con)er$o controlam a $aBda do$ elemento$ de uma matri6+ !$
te@to$ $o copiado$ diretamente+ !$ e$peci*icadore$ $o precedido$ pelo caractere ^G con)er$2e$ comun$ incluem
^e para nota5o e)ponencial
^f para nota5o de ponto fi)o
^' (ue seleciona automaticamente o menor entre ^e e ^f
Campo$ opcionai$ no e$peci*icador de *ormato controlam o tamanho e a preci$o do campo+ (or e@emplo1
[[ @ \ A' +,' ,G
[[ ] \ L@G e@pH@IPG
[[ *id \ *openHMe@ptable+t@tO1OFOIG
[[ *print*H*id1OE@ponential FunctionNnNnOIG
[[ *print*H*id1O^<+5* ^,5+>*NnO1]IG
[[ $tatu$ \ *clo$eH*idIG
cria um ar3ui)o de te@to contendo uma pe3uena tabela para a *uno e@ponencial+ A primeira chamada a fprintf e$cre)e o tBtulo1
$eguido por doi$ comando$ EN"E&1 o 3ual de*inido por Gn+ A $egunda chamada e$cre)e a tabela propriamente dita+ A$ $tring$ de
controle de *ormato de*inem o *ormato de cada linha da tabela como'
, um $alor de ponto fi)o de seis caracteres com duas casas decimais
, dois espaos
, um $alor de ponto fi)o de doze caracteres com oito casas decimais
1*.* Lendo (r:9i'os de )e4to 0ormatados e !trin<s
A *uno de entrada de te@to do MA"LA#1 fscanf1 $imilar S *uno fprintf+ fscanf po$$ui como argumento o identi*icador para
o ar3ui)o de te@to aberto1 e uma $tring de controle do *ormato contendo caractere$ e e$peci*icadore$ de con)er$o1 ne$ta ordem+ !$
e$peci*icadore$ para fscanf $o precedido$ pelo caractere ^G con)er$2e$ comun$ incluem
^s para con$erter uma strin'
^d para con$erter um nQmero decimal
^f para con$erter um $alor em ponto flutuante
! e@emplo a $eguir *a6 a leitura do ar3ui)o com o$ dado$ e@ponenciai$ e$crito anteriormente'
>> fd fopen(<e,ptable.t,t;2;r;)#
>> title fscanf(fd2;Ms;)#
>> !table2count) fscanf(fd2; Md Mf <)#
>> status fclose(fd)#
A linha do tBtulo combina com o e$peci*icador ^s na primeira chamada S fscanf+ A $egunda chamada entra com a tabela de
)alore$1 combinando alternadamente um )alor decimal e um )alor em ponto *lutuante1 como lido em cada linha da tabela1 at 3ue o
*im do ar3ui)o $e/a atingido+ count retorna o n?mero de )alore$ combinado$+
Um argumento opcional controla o n?mero de elemento$ lido$ da matri6+ (or e@emplo1 $e fid *a6 re*erTncia a um ar3ui)o aberto
contendo o$ $tring$ de decimal ento
>> A fscanf(fd2;M$d;2"00)#
*a6 a leitura de ,AA )alore$ decimai$ para um )etor coluna A1 e
>> A fscanf(fd2;M$d;2!"02"0))#
*a6 a leitura de ,AA )alore$ decimai$ para uma matri6 A ,A@,A+
PARTE III
Grfcos Avanados
A Qltima parte traz o captulo 16 (ue contm a parte a$anada de 'rficos"
-5o descritas as funes especiais para 'rficos D,Z e a introdu5o e as funes especiais para 'rficos ?,Z" Ws
recursos de altera5o de cores e plota'em de mais de um 'rfico em uma mesma fi'ura tambm s5o mostrados" Vor
fim, s5o e)plicados os ob%etos de n$el inferior, essenciais ao entendimento da pro'rama5o no MATA!"
a!"t#$o %3
Grficos Avanados
! $i$tema gr:*ico do MA"LA# incorpora uma )ariedade de tcnica$ $o*i$ticada$ para apre$entao e )i$uali6ao de dado$+ E$te
$i$tema con$truBdo atra)$ de um con/unto de ob/eto$ gr:*ico$1 tai$ como linha$ e $uper*Bcie$1 cu/a pre$ena pode $er controlada
pelo a/u$te do$ )alore$ da$ propriedade$ de cada ob/eto+ Entretanto1 em )irtude do MA"LA# po$$ibilitar um rico a/u$te na$ *un2e$
gr:*ica$ 5- e 7-1 na maior parte do tempo no nece$$:rio ace$$ar e$te$ ob/eto$ gr:*ico$1 o$ 3uai$ $o con$iderado$ ob/eto$ de
bai@o nB)el+
1-.1 =rficos 2@D
1-.1.1 Im"ortando Dados
MA"LA# permite 3ue $e/am importado$ e plotado$ dado$ gerado$ *ora dele+ Suponhando um ar3ui)o1 6eather"dat1 contendo a
mdia de temperatura e precipitao do$ me$e$1 arma6enada$ em do6e linha$ de um te@to em ASC44'
?< A"<
?1 ?"U
?_ A"1
AS ?"U
CS ?"C
6_ D"S
UA D"U
UD ?"U
6C ?"A
CC ?"A
AC A"D
?A A"S
! comando1
>> load 3eat4er.dat
produ6 uma matri6 ,5 por 5+ A linha de comando
>> te*p 3eat4er(12")#
>> precip 3eat4er(122)#
arma6ena a$ coluna$ de temperatura e precipitao em )etore$ indi)iduai$+
(ode-$e plotar tanto a temperatura como a precipitao em *uno do mT$ corre$pondente1 em uma me$ma *igura1 *a6endo-$e u$o do$
comando$ plot e subplot'
>> subplot(22"")
>> plot(te*p)
>> subplot(22"22)
>> plot(precip)
Um gr:*ico $catter tambm um modo ?til de $e apre$entar o$ dado$+ A$ linha$ de comando a $eguir produ6em um gr:*ico $catter
mo$trando a relao entre a temperatura e a precipitao em cada mT$'
>> *ont4 !;Nan;# <Oeb;# <Aar;# <Apr;# ...
<Aa9;# <Nun;# <Nul;# <Aug;# ...
<?ep;# <Pct;# <Jov;# <Eec;)#
>> plot(te*p2precip2;o;)
>> a,is(!2' '0 2.$ $.2))
>> ,label(<te*p;)
>> 9label(<precip;)
>> title(<Qoston;)
A linha de comando a)is1 do e@emplo1 acima introdu6 e$pao e@tra ao gr:*ico atra)$ do a/u$te da e$cala do$ ei@o$ a )alore$ maiore$
3ue a *ai@a de dado$+ 4$to permite 3ue o te@to *i3ue dentro do gr:*ico+
1-.1.2 09nes $s"eciais "ara =rficos 2@D
MA"LA# inclui uma )ariedade de *un2e$ e$peciai$ para gr:*ico$1 nece$$:ria$ em muita$ aplica2e$+ A li$ta a $eguir de$cre)e
alguma$ dela$+
bar , cria um 'rfico do tipo barra
compass , cria um 'rfico de Rn'ulos e m#dulos de nQmeros comple)os onde a representa5o dos pontos
feita por setas com incio na ori'em
errorbar , cria um 'rfico com barras de erro
feather , cria um 'rfico de Rn'ulos e m#dulos de nQmeros comple)os onde a representa5o dos pontos feita
por setas com comeo em pontos i'ualmente espaados ao lon'o do ei)o horizontal
fplot , a$alia uma fun5o e plota os resultados
hist , cria um histo'rama
polar , cria um 'rfico em coordenadas polares dos Rn'ulos em fun5o dos raios
(ui$er , cria um 'rfico do 'radiente ou de outro campo do $etor
rose , cria um histo'rama de Rn'ulo
stairs , cria um 'rfico similar a um 'rfico de barra, mas sem as linhas internas
fill , desenha um pol'ono e o preenche com cores s#lidas ou interpoladas
1-.1.# >ol8<onos >reenchidos
A *uno fill de*ine uma :rea polinomial cu/o interior preenchido com uma cor e$peci*icada+ Se e$peci*icada uma cor para
cada ponto1 MA"LA# utili6a interpolao bilinear para determinar a cor da parte interna+ (or e@emplo1
>> t 01.0$12*pi#
>> , sin(t)#
>> fll(,2t2;b;)
produ6 um polBgono preenchido pela cor a6ul+
(ara criar uma :rea preenchida com uma interpolao de core$1 utili6a-$e o comando colormap da *orma de$crita abai@o'
>> color*ap(4ot)
>> fll(,2t2,)
A $ombra )aria do e$curo para o claro S medida 3ue o )alor de sin1t3 )aria de um mBnimo at um m:@imo Ho 3ue corre$ponde da
e$3uerda para a direita no gr:*icoI+
1-.1.% >lotando 09nes Matemticas
E@i$tem ):ria$ maneira$ di*erente$ de $e plotar o$ gr:*ico$ de *un2e$1 y = f(x'+ Uma apro@imao 3ue $imple$mente a)alia a
*uno em algun$ ponto$ no inter)alo de intere$$e de$crita pela$ linha$ de comando abai@o+ No ca$o1 a *uno o$cila in*initamente
no inter)alo +
>> , (01"/20001");#
>> plot(,2cos(tan(pi*,)))
E$$a$ linha$ de comando$ produ6em o gr:*ico da *uno na *ai@a de A a ,+
A *uno fplot uma apro@imao mai$ elegante1 )i$to 3ue ela amo$tra a *uno com um n?mero $u*iciente de ponto$ 3ue
*ornea uma repre$entao gr:*ica decente+ En3uanto 3ue a repre$entao anterior a)alia)a a *uno em inter)alo$ e$paado$
con$tantemente1 fplot concentra a $ua a)aliao $obre regi2e$ onde a ta@a de )ariao da *uno maior+ (ara a)aliar uma *uno1
de)e-$e criar um ar3ui)o *uno e pa$$ar o nome do ar3ui)o para fplot+ (or e@emplo1 o ar3ui)o *uno a $eguir de*ine uma *uno1
chamada fof)1 do e@emplo anterior'
function H 4 fof)1)3
H 4 cos1tan1piB)332
(a$$a-$e o nome de$ta *uno para fplot para 3ue $e/a a)aliada e plotada+ Em )irtude da *uno o$cilar in*initamente na *ai@a de
a)aliao1 o n?mero de intera2e$ u$ada$ para preencher a regio onde ocorrem a$ r:pida$ )aria2e$ redu6ido com relao ao a/u$te
padro para pre)enir de um tempo de computao e@ce$$i)amente longo+
>> fplot(<fof,;2 !0 ")2 2$2 202 "0)
Ne$te e@emplo1 fplot utili6a meno$ ponto$ para a)aliar a me$ma *uno1 ma$ agora amo$tra a *uno em inter)alo$ menore$ em
uma regio onde a ta@a de )ariao a maior1 gerando uma *igura mai$ preci$a na$ pro@imidade$ de @ \ A+;+
1-.2 =rficos #@D
MA"LA# po$$ui uma )ariedade de *un2e$ para e@ibir dado$ em 7-+ Alguma$ plotam linha$ em trT$ dimen$2e$1 en3uanto
outra$ de$enham $uper*Bcie$ e *igura$ utili6ando Xp$eudocore$Y para repre$entar uma 3uarta dimen$o+ A li$ta a $eguir mo$tra e$$a$
*un2e$'
plot? , plota linhas e pontos em ?,Z
contour, contour? , cria 'rficos de contorno
pcolor , desenha uma matriz retan'ular de clulas cu%as cores s5o determinadas pelos elementos da matriz
ima'e , mostra uma matriz como uma ima'em atra$s do mapeamento dos elementos da matriz pelo mapa de
cores ati$o
mesh, meshc, meshz , cria 'rficos ?,Z em perspecti$a dos elementos da matriz, mostrados como alturas
acima de um plano delimitado
surf, surfc, surfl , cria 'rficos ?,Z em perspecti$a dos elementos da matriz, mostrados como alturas acima de
um plano delimitado" W 'rfico formado pela 'era5o de uma superfcie colorida utilizando os pontos como
$rtices de um (uadriltero"
fill? , cria um pol'ono ?,Z a o preenche com cores s#lidas ou interpoladas
!b$+' Ser: utili6ado o termo X$uper*Bcie me$hY para indicar o$ gr:*ico$ criado$ atra)$ do comando me$h+
Alm da$ *un2e$ de in$ero de coment:rio$ e nota$ mo$trada$ para o$ gr:*ico$ 5-1 MA"LA# po$$ui a$ $eguinte$ *un2e$ para
o$ gr:*ico$ 7-'
zlabel , define um nome para a $ari$el do ei)o z
clabel , define identificaes para os contornos em 'rficos de contorno
MA"LA# permite a e$peci*icao do ponto de )i$uali6ao do gr:*ico+ Em geral1 a$ )i$ta$ $o de*inida$ por uma matri6 de
tran$*ormao 8 por 8 3ue o MA"LA# utili6a para tran$*ormar um gr:*ico 7- em uma tela 5-+ Entretanto1 a *uno abai@o permite
a e$peci*icao do ponto de )i$o de uma maneira $impli*icada'
$ie6 , a%usta o ponto de $is5o atual onde os parRmetros de entrada podem ser o azimute 1rota5o horizontal3 e
a ele$a5o $ertical, ambos em 'rau, ou as coordenadas cartesianas"
1-.2.1 =rficos de Linhas
! an:logo tridimen$ional da *uno plot a *uno plot?+ Se )1 H e z $o )etore$ de me$mo tamanho1
>> plot3(,292+)
gera uma linha no e$pao tridimen$ional 3ue pa$$a pelo$ ponto$ de coordenada$ dada$ pelo$ elemento$ do$ )etore$ )1 H e z1 e depoi$
produ6 uma pro/eo bidimen$ional de$ta linha na tela++ (or e@emplo
>> t 01pi/$01"0*pi#
>> plot3(sin(t)2cos(t)2t)#
produ6 um helicide+
Se 71 8 e 9 $o trT$ matri6e$ de me$ma dimen$o1
>> plot3(52627)
plota a$ linha$ obtida$ pela$ coluna$ de 71 8 e 9+ (ara e$peci*icar ):rio$ tipo$ de linha$1 $Bmbolo$ gr:*ico$ e core$1 u$a-$e a linha de
comando plot?17,8,9,s31 onde $ uma $tring de ,1 5 ou 7 caractere$ *ormada pelo$ caractere$ li$tado$ com a *uno plot+
>> plot3(,"29"2+"2s"2,22922+22s22,32932+3.s32...)
combina o$ gr:*ico$ de*inido$ por cada grupo de elemento$ 1), H, z, s31 onde )1 H e z $o )etore$ ou matri6e$ e s $o a$ $tring$+
1-.2.2 Mesh<rid
MA"LA# de*ine uma $uper*Bcie me$h pela$ coordenada$ 6 do$ ponto$1 $ituando-a acima de uma :rea retangular no plano ),H+
e$ta *orma1 um gr:*ico *ormado pela ligao do$ ponto$ ad/acente$ com linha$ reta$+ Super*Bcie$ me$h $o ?tei$ para )i$uali6ao
de matri6e$ 3ue $o muito grande$ para $erem mo$trada$ na *orma numrica1 e *un2e$ gr:*ica$ de dua$ )ari:)ei$+
! primeiro pa$$o para 3ue $e/a mo$trada uma *uno de dua$ )ari:)ei$1 z = f(x,y)1 gerar a$ matri6e$ 7 e 8 con$i$tindo de linha$
e coluna$ repetida$1 re$pecti)amente1 $obre o domBnio da *uno+ epoi$ utili6a-$e e$ta$ matri6e$ para a)aliar e plotar a *uno+
A *uno mesh'rid tran$*orma o domBnio e$peci*icado por doi$ )etore$1 ) e H1 em matri6e$1 7 e 8+ Utili6a-$e e$ta$ matri6e$ para
a)aliar *un2e$ de dua$ )ari:)ei$+ A$ linha$ de 7 $o cpia$ do )etor @ e a$ coluna$ de 8 $o cpia$ do )etor H+ (ara ilu$trar o u$o da
*uno mesh'rid1 con$idere a *uno sin`=r1 tambm chamada *uno sinc+ (ara a)aliar e$ta *uno entre -> e >1 tanto em @ como
em ]1 pa$$a-$e como argumento doi$ )etore$ para a *uno mesh'rid criando a$ matri6e$ nece$$:ria$'
>> , -'1.$1'#
>> 9 ,#
>> !526) *es4grid(,29)#
>> D sqrt(5.R2 + 6.R2) +eps#
>> 7 sinF./D#
>> *es4(7)
A matri6 X contm a di$tQncia do$ ponto$ ao centro da matri61 o 3ual a origem+ Adiconando eps e)ita a di)i$o por 6ero1 o 3ue
produ6 ;a;s no dado$+
1-.2.# =rficos de Contorno
MA"LA# po$$ui *un2e$ para gerar gr:*ico$ de contorno tanto para 5- como para 7-+ A$ *un2e$ contour e contour? geram
gr:*ico$ compo$to$ de linha$ obtida$ da matri6 entrada como argumento+ E@i$te a opo de $e e$peci*icar o n?mero de linha$ de
contorno1 a e$cala do$ ei@o$ e o )alor do$ dado$ com o$ 3uai$ $e de$enhar: a$ linha$ de contorno+ (or e@emplo1 a linha de comando
abai@o cria um gr:*ico de contorno contendo 5A linha$ de contorno e u$ando o ar3ui)o-M peaEs para gerar o$ dado$ de entrada+
>> contour(pea:s220)
!$ cBrculo$ de contorno agem da me$ma *orma 3ue a *uno plot com relao a e$tilo$ de linha1 marcadore$ e core$+ (ara criar
um gr:*ico de contorno 7- com o$ me$mo dado$1 utili6a-$e a *uno contour?'
>> contour3(pea:s220)
1-.2.% =rficos de >se9docores
A$ linha$ de comando1
>> + pea:s#
>> pcolor (+)
>> color*ap(4ot)
criam uma *igura com a matri6 peaEs de*inida por um mapa de core$+ ! nome pcolor $igni*ica pseudocolor+ (ara cada ponto1 z1i,%31
um )alor em e$cala do elemento da matri61 z1i,%31 u$ado como Bndice no mapa de core$ para determinar a cor a $er mo$trada na3uele
ponto+
! mapa de core$ uma matri6 com trT$ coluna$ 3ue e$peci*icam a inten$idade da$ trT$ componente$ de )Bdeo' )ermelho1 )erde e
a6ul+ Ne$te ca$o1 o mapa de core$ e$peci*icado mapeia o menor dado como preto e o maior dado como branco+ !$ )alore$ entre e$te$
doi$ )alore$ $o mapeado$ com $ombra$ de )ermelho1 laran/a e amarelo+ 4$to ?til poi$ a e$cala contBnua de core$ do preto ao branco
*a6 repre$entar o contorno da *uno peaEs+ !$ po$$B)ei$ mapa$ de core$ podem $er obtido$ atra)$ da linha de comando help
color+
1-.2.* =rficos de !9"erf8cies e Mesh
A$ *un2e$ mesh e surf mo$tram $uper*Bcie$ em trT$ dimen$2e$+ Se _ uma matri6 cu/o o$ elemento$ 91i,%3 de*inem a altura da
$uper*Bcie com relao a uma :rea delimitada 1i,%31 ento
>> *es4(7)
gera uma *igura da $uper*Bcie1 colorida e de*inida por linha$1 e a mo$tra em uma pro/eo em per$pecti)a+ a me$ma *orma
>> surf(7)
gera uma *igura da $uper*Bcie1 colorida e de*inida por *ace$1 e a mo$tra em uma pro/eo em per$pecti)a+ !rdinariamente1 a$ *ace$
$o 3uadril:tero$ com core$ con$tante$1 delineada$ por linha$ me$h preta$1 ma$ a *uno shadin' permite 3ue $e/am eliminada$ e$ta$
linha$+
Kuando mesh193 e surf193 $o u$ado$ com $imple$ matri6e$ como argumento$1 e$te argumento e$peci*ica tanto a altura 3uanto
a$ core$ da $uper*Bcie+ (ara a matri6 peaEs utili6ada anteriormente
>> *es4(pea:s)
produ6 uma $uper*Bcie me$h para a *uno peaEs
Matries de Cores
Utili6ando dua$ matri6e$ como argumento$1 a$ linha$ de comando1
>> *es4(72S)
ou
>> surf(72S)
e$peci*ica independentemente atra)$ do $egundo argumento1 a$ core$ a $erem mo$trada$ na $uper*Bcie+ Com pcolora, o$ )alore$ de
+ $o po$to$ em e$cala e u$ado$ como Bndice$ no mapa de core$ $elecionado+ No ca$o1 + chamada matri6 de core$+
Kuando a $uper*Bcie de dado$ contm ;a;s1 e$te$ elemento$ no $o plotado$+ 4$to cria um *alha na $uper*Bcie no lugar
corre$pondente+ e*inindo algun$ elemento$ na matri6 de core$ como ;a;s1 uma maneira ?til de tornar regi2e$ da $uper*Bcie
in)i$B)ei$+ (or e@emplo1 a linha de comando abai@o produ6 uma *alha na $uper*Bcie de*inida pela matri6 peaEs'
>> p pea:s#
>> p(30140220130) nan*p(30140220130)#
>> *es4(pea:s2p)
!9"erf8cies >aram5tricas
A$ *un2e$ mesh1 surf e pcolor podem ter doi$ )etore$ ou matri6e$ adicionai$ como argumento1 com a *uno de de$cre)er a
$uper*Bcie com o$ dado$ ) e H+ Se 9 uma matri6 m por n1 e ) e H $o )etore$ de dimen$2e$ n e m re$pecti)amente1 ento
>> *es4(,2 92 72 S)
de$cre)e uma $uper*Bcie me$h cu/o o$ )rtice$ po$$uem core$ +1i,%3 e e$to locali6ado$ no$ ponto$ 1)1%3, H1i3, 91i, %33 (erceba 3ue )
corre$ponde S coluna e H S linha da matri6 9++ e maneira mai$ geral1 $e 71 81 9 e + $o matri6e$ de me$ma$ dimen$2e$1 ento
>> *es4(52 62 72 S)
de$cre)e uma $uper*Bcie me$h cu/o o$ )rtice$ po$$uem core$ +1i,%3 e e$to locali6ado$ no ponto$ 171i,%3, 81i,%3, 91i,%33
A$ me$ma$ con$idera2e$ podem $er aplicada$ para a *uno surf17, 8, 9, +3, etc+
&ariaes de surf e mesh
MA"LA# po$$ui *un2e$ 3ue produ6em combina2e$ no$ gr:*ico$ ba$eado$ na$ *un2e$ surf e mesh+ (or e@emplo1 surfc
de$enha uma $uper*Bcie com contorno bidimen$ional no plano 6 \ A+ a me$ma *orma1 e@i$tem a$ *un2e$ surfl1 meshc e meshz+
1-.# 09nes =rficas de >ro"sito =eral
Sero de$crita$ abai@o *un2e$ para controle de aparTncia do$ gr:*ico$ criado$ com a$ *un2e$ de$crita$ anteriormente+
1-.#.1 >onto de &ista
MA"LA# permite 3ue $e/a e$peci*icado o Qngulo do 3ual )i$uali6a-$e um gr:*ico 7-+ A *uno $ie6 de*ine o Qngulo de )i$o
em coordenada$ e$*rica$ atra)$ da e$peci*icao do a6imute Hrotao hori6ontalI e da ele)ao )ertical do ponto de )i$ta1 com
relao a origem do$ ei@o$+ ! a6imute um Qngulo polar no plano x(%1 $endo po$iti)o 3uando a rotao *or no $entido hor:rio com
relao ao ponto de )i$ta+ A ele)ao )ertical o Qngulo acima HQngulo po$iti)oI ou abai@o HQngulo negati)oI do plano x(%+ (or
e@emplo1 a$ 3uatro linha$ de comando abai@o proporcionam 3uatro maneira$ di*erente$ de $e )i$uali6ar a *uno peaEs+
>> vie3(-3&.$230)
>> vie3(-&2'0)
>> vie3(-(020)
>> vie3(-&2-"0)
1-.#.2 Controlando os $i4os com a f9no a)is
A *uno a)is po$$ui ):ria$ op2e$ 3ue permitem 3ue $e/am per$onali6ado$ e$cala e orientao+ !rdinariamente1 MA"LA#
encontra o$ )alore$ de m:@imo e mBnimo da *uno a $er plotada e e$colhe uma :rea de plotagem apropriada+ (ode-$e rede*inir o$
limite$ pelo a/u$te do$ limite$ do ei@o$'
>> a,is(!,*in ,*a, 9*in 9*a,))
!u para um gr:*ico 7-'
>> a,is(!,*in ,*a, 9*in 9*a, +*in +*a,))
a)is1KautoF3 retorna a e$cala do ei@o para $eu )alor padro1 o modo autom:tico+ $ 4 a)is $al)a a e$cala do$ ei@o$ do gr:*ico 3ue e$t:
ati)o no )etor $+ (ara 3ue gr:*ico$ $ub$e3uente$ po$$uam o$ me$mo$ limite$1 ba$ta entrar com o comando a)is1$3"
a)is1a)is3 congela a e$cala no$ )alore$ 3ue e$to $endo u$ado$+
a)is1Ki%F3 de*ine MA"LA# no $eu modo de ei@o matri6+ A origem do $i$tema de coordenada$ $e encontra no canto $uperior e$3uerdo+
! ei@o i )ertical e numerado de cima para bai@o+ o ei@o % hori6ontal e numerado da e$3uerda para a direita+
a)is1K)HF3 de*ine MA"LA# com o$ ei@o$ carte$iano$+ A origem do $i$tema de coordenada$ $e encontra no canto in*erior e$3uerdo+ !
ei@o ) hori6ontal e numerado da e$3uerda para a direita+ ! ei@o H )ertical e numerado de bai@o para cima+
a)is1KonF3 e a)is1KoffF3 *a6em com 3ue o nome do ei@o e o$ marcadore$ apaream ou no1 re$pecti)amente1 /unto com o gr:*ico+
1-.#.# )ornando &is8'el Linhas e !9"erf8cies $scondidas
! comando hidden permite 3ue $e en@ergue atra)$ de uma $uper*Bcie de modo a $e poder )i$uali6ar po$$B)ei$ *igura$ 3ue
e$te/am atr:$ de$ta $uper*Bcie+ E$te comando $e *a6 ?til 3uando e$to $endo plotada$ ):ria$ *igura$ em um ?nico gr:*ico+
(or e@emplo1 a$ linha$ de comando a $eguir *a6em com 3ue o$ dado$ gerado$ por pcolor po$$am $er )i$uali6ado$ atra)$ do
gr:*ico de peaEs+
>> *es4(pea:s(20)+&)
>> 4old
>> pcolor(pea:s(20))
>> 4idden o@
1-.#.% !9,<rficos
(odem $er mo$trado$ ):rio$ gr:*ico$ em uma me$ma /anela ou imprimi-lo$ em uma me$ma *olha de papel com a *uno
subplot+
subplot1m,n,p3 di)ide a /anela em uma matri6 m por n de $ubregi2e$ e $eleciona a p-$ima $ubregio para o gr:*ico 3ue e$t: $endo
plotado no momento+
!$ gr:*ico$ $o numerado$ comeando pela primeira linha na parte $uperior da /anelaG em $eguida1 a $egunda linha1 e a$$im
$egue+ (or e@emplo1
>> t 01pi/"012*pi#
>> !52627) c9l9nder(4*cos(t))#
>> subplot(2222")
>> *es4(5)
>> subplot(22222)
>> *es4(6)
>> subpoot(22222)
>>*es4(6)
>> subplot(22223)
>> *es4(7)
>> subplot(22224)
>> *es4(52627)
plota dado$ em 3uatro di*erente$ $ubregi2e$ na /anela de gr:*ico$+
1-.#.* 0i<9ra
Chamando a *uno fi'ure $em argumento$ *a6 com 3ue $e/a aberto uma no)a /anela gr:*ica+
fi'ure1;3 *a6 com 3ue a ;-$ima *igura $e torne a *igura atualG o re$ultado do$ comando$ gr:*ico$ $ub$e3uente$ $o mo$trado$
ne$ta /anela+ Se a *igura ; no e@i$te1 MA"LA# cria uma u$ando o pr@imo n?mero di$ponB)el Hno nece$$ariamente ;I+
A *uno 'input permite 3ue $e/am utili6ado$ o mou$e ou a$ tecla$ de $eta para $elecionar ponto$ no gr:*ico+ 4$to *ornece a$
coordenada$ da po$io do ponteiro+
1-.% Ma"as de Cores e Controle de Cores
MA"LA# de*ine o mapa de core$ como $endo uma matri6 de trT$ coluna$+ Cada linha da matri6 de*ine uma cor particular atra)$
de trT$ )alore$ dado$ na e$cala de A a ,+ E$te$ )alore$ e$peci*icam a inten$idade da$ componente$ de )Bdeo a6ul1 )erde e )ermelho+
Alguma$ core$ e$to li$tada$ na tabela abai@o'
1erme$5o 1erde A2#$ or
A A A preto
, , , branco
, A A )ermelho
A , A )erde
A A , a6ul
, , A amarelo
, A , magenta
A , , ciano
+; +; +; cin6a
+; A A )ermelho e$curo
!$ mapa$ de core$ podem $er *ornecido$ por tabela$1 ou gerado$ em opera2e$ de matri6e$+ ! diretrio color do toolbo@ do
MA"LA# po$$ui ):ria$ *un2e$ 3ue geram mapa$ ?tei$1 incluindo hs$1 hot1 cool1 pinE1 copper e fla'+ Cada *uno po$$ui um
parQmetro opcional1 m1 o 3ual e$peci*ica o n?mero de linha$ no mapa re$ultante+ (or e@emplo
>> 4ot(*)
uma matri6 m por 71 cu/a a$ linha$ e$peci*icam a inten$idade da$ core$ padr2e$ de um mapa 3ue )aria de preto1 pa$$ando por
$ombra$ de )ermelho1 laran/a e amarelo1 at o branco+
Se o tamanho do mapa de core$ no e$peci*icado1 MA"LA# utili6a m \ <8 como )alor padro+ 4$to permite trT$ ou 3uatro
*igura$1 onde cada uma po$$ui $ua tabela de 5;< core$+
A linha de comando1
>> color*ap(A)
*a6 com 3ue a matri6 de mapa de core$ M $e/a u$ada pela *igura ati)a+ (or e@emplo1
>> color*ap(4ot)
torna ati)o o mapa de core$ hot de tamanho <8+ e$de 3ue a$ *un2e$ mesh1 surf1 pcolor e ima'e utili6am mapa$ de core$1 toda$ a$
outra$ *un2e$ 3ue $o deri)ada$ de$ta$ 3uatro tambm o *a6em+ A$ *un2e$ plot1 plot?1 contour e contour? no *a6em u$o do$
mapa$ de core$+
1-.%.1 Mostrando Ma"as de Cores
A$ *un2e$ pcolor $o ?tei$ para mo$trar mapa$ de core$+ (or e@emplo1 para )i$uali6ar um mapa de core$ em ton$ de cin6a tendo
oito entrada$1 utili6a-$e a$ $eguinte$ linha$ de comando'
>> color*ap(gra9('))
>> pcolor(!"1(#"1();)
1-.%.2 (lterando os Ma"as de Cores
! *ato de o$ mapa$ de core$ $erem matri6e$1 permite 3ue $e/am manipulado$ como 3ual3uer outra matri6+ A *uno bri'hten
utili6a e$ta )antagem para a/u$tar um dado mapa de core$ de *orma 3ue a inten$idade da$ core$ e$cura$ aumente ou diminua+
(ode-$e combinar mapa$ de core$ aritmeticamente1 embora o$ re$ultado$ $e/am ine$perado$ em alguma$ )e6e$+
1-.* Man9seamento de =rficos
A$ caracterB$tica$ gr:*ica$ apre$entada$ at a3ui *a6em parte da inter*ace de alto-nB)el do $i$tema gr:*ico do MA"LA#+
Entretanto1 e$te $i$tema tambm *ornece um a/u$te da$ *un2e$ de bai@o-nB)el 3ue permitem 3ue $e/am criada$ e manipulada$ linha$1
$uper*Bcie$ e outro$ ob/eto$ gr:*ico$ 3ue MA"LA# utili6a para produ6ir gr:*ico$ $o*i$ticado$+ E$te $i$tema denominado )andle
*rap"ics+
1-.*.1 +,Betos =rficos
MA"LA# de*ine o$ ob/eto$ gr:*ico$ como $endo o$ de$enho$ mai$ primiti)o$ de $eu $i$tema gr:*ico1 e o$ organi6a em uma
hierar3uia e$truturada em :r)ore+ E$te ob/eto$ incluem a tela rai6 Hroot $creenI1 *igura$ H*igure$I1 ei@o$ Ha@e$I1 linha$ Hline$I1 patche$
Hpatche$I1 $uper*Bcie$ H$ur*ace$I1 imagen$ Himage$I1 te@to Hte@tI1 e inter*ace de controle HuicontrolI e menu$ HuimenuI para o u$u:rio+
W ob%eto root a raiz da hierar(uia" Ele corresponde a tela do computador" E)iste somente um ob%eto raiz,
sendo todos os outros ob%etos seus descendentes"
Wb%etos figure correspondem bs %anelas indi$iduais na tela raiz" Vode e)istir (ual(uer nQmero de ob%etos fi'ura,
onde cada (ual descendente do ob%eto raiz" Ws demais ob%etos 'rficos s5o descendentes das %anelas de
fi'ura" Todos as funes de cria5o de ob%etos e todas as funes de alto,n$el criam uma fi'ura se ela n5o
e)iste" Vode,se tambm criar uma fi'ura utilizando,se a fun5o fi'ure"
Wb%etos axes definem uma re'i5o na %anela de fi'ura e orienta os seus descendentes nesta re'i5o" Ei)os s5o
descendentes de fi'uras e s5o superiores a linhas, superfcies, te)to, ima'ens e patches" Todos as funes de
cria5o de ob%etos e todas as funes de alto,n$el criam ob%etos ei)o se eles n5o e)istem" Vode,se criar ei)os
diretamente utilizando,se a fun5o a)es"
Wb%etos line s5o usados para criar a maioria dos 'rficos D,Z e al'uns ?,Z" Eles s5o descendentes dos ei)os e
suas posies s5o definidas pelo sistema de coordenadas estabelecido pelo seus superiores 1ei)os3" Wb%etos
linha s5o criados por plot, plot?, contour e contour?"
Wb%etos patch s5o definidos pelos pol'onos preenchidos" Eles s5o descendentes dos ei)os e suas posies
s5o definidas pelo sistema de coordenadas estabelecido pelo seus superiores 1ei)os3" Este ob%etos podem ser
preenchidos com cores s#lidas ou interpoladas" fill e fill? cria ob%etos patch"
Wb%etos surface s5o representaes ?,Z dos dados de uma matriz" Eles s5o compostos de (uadrilteros cu%o
os $rtices s5o especificados pelos dados definidos" -uperfcies podem ser preenchidas com cores s#lidas ou
interpoladas ou somente com uma rede de linhas li'ando os pontos" Eles s5o descendentes dos ei)os e suas
posies s5o definidas pelo sistema de coordenadas estabelecido pelo seus superiores 1ei)os3" pcolor e o 'rupo
de funes de mesh e surf criam os ob%etos superfcie"
Wb%etos image dado pelo resultado do mapeamento dos elementos de uma matriz com o mapa de cores se
encontra ati$o" :ma'ens, 'eralmente, possuem seu pr#prio mapa de cores (ue definem somente as cores
usadas na(uela ima'em" :ma'ens s5o D,Z e, portanto, n5o podem ser $istas por nenhum Rn'ulo diferente do
padr5o" Eles s5o descendentes dos ei)os e suas posies s5o definidas pelo sistema de coordenadas
estabelecido pelo seus superiores 1ei)os3" Wb%etos ima'em s5o criados atra$s da fun5o ima'e"
Wb%etos text s5o as strin's de caracteres" Eles s5o descendentes dos ei)os e suas posies s5o definidas pelo
sistema de coordenadas estabelecido pelo seus superiores 1ei)os3"
Wb%etos uicontrol s5o interfaces de controle (ue permitem ao usurio e)ecutar funes (uando selecionado
um ob%eto com o mouse" Eles s5o descendentes das fi'uras e, portanto, s5o independentes dos ei)os"
Wb%etos uimenu s5o interfaces de menu (ue permitem o usurio criar menus na parte superior da %anela de
fi'ura" Eles s5o descendentes das fi'uras e, portanto, independentes dos ei)os"
.andle de +,Betos
Cada ob/eto gr:*ico indi)idual po$$ui um ?nico identi*icador Hchamado handleI 3ue atribuBdo ao ob/eto 3uando ele criado+
Algun$ gr:*ico$ tai$ como contour plot1 $o compo$to$ de m?ltiplo$ ob/eto$1 cada 3ual com $eu prprio handle+ ! handle do ob/eto
rai6 $empre 6ero en3uanto 3ue o de uma *igura um inteiro+ ! handle de outro$ ob/eto$ $o n?mero$ decimai$ 3ue contm
in*orma2e$ utili6ada$ pelo MA"LA#+ MA"LA# de*ine a$ $eguinte$ *un2e$ para $impli*icar o ace$$o ao$ handle$ do$ ob/eto$'
'cf , informa o handle da fi'ura ati$a
'ca , informa o handle do sistema de ei)os ati$o
(ode-$e utili6ar e$ta$ *un2e$ como argumento$ de entrada de outra$ *un2e$ 3ue re3ueiram o$ handle$ de gr:*ico$ e ei@o$+
(ode-$e1 tambm1 remo)er 3ual3uer ob/eto utili6ando a *uno delete1 de$cre)endo como argumento o handle do ob/eto+ (or
e@emplo1 o$ ei@o$ atuai$ podem $er apagado$ atra)$ da linha de comando'
>> delete(gca)
"oda$ a$ *un2e$ do MA"LA# 3ue criam ob/eto$1 criam handle$ para e$te$ ob/eto$+ 4$to inclui *un2e$ de alto-nB)el1 tai$ como
surfc1 a 3ual cria tanto ob/eto linha como ob/eto $uper*Bcie+
09nes de Criao de +,Betos
"odo$ o$ ob/eto$ $o criado$ por *un2e$ de me$mo nome Ha *uno te)t cria um ob/eto te@to1 a *uno fi'ure cria um ob/eto
*igura1 etc+I+ A$ *un2e$ gr:*ica$ de alto-nB)el do MA"LA# chamam a *uno de bai@o-nB)el apropriada para de$enhar $eu$
re$pecti)o$ gr:*ico$+
Muita$ *un2e$ de alto-nB)el a/u$tam a$ propriedade$ do ob/eto com a *inalidade de produ6irem um re$ultado particular+ A$
*un2e$ de bai@o-nB)el $imple$mente criam um do$ no)e ob/eto$ gr:*ico$ de*inido$ pelo MA"LA# Hno $e pode criar um no)o
ob/eto rai6I e o$ coloca no ob/eto-me apropriado+ (or e@emplo1 chamando a *uno line1
>> line
MA"LA# de$enha a linha no ei@o 3ue e$t: ati)o u$ando o$ )alore$ de dado padro+ Se no hou)er ei@o1 MA"LA# cria um+ Se
no hou)er uma /anela de *igura onde po$$am $er criado$ o$ ei@o$1 MA"LA# tambm cria uma /anela+ Se chamada a *uno line
pela $egunda )e61 uma linha de$enhada no$ ei@o$ e@i$tente$ Hdi*erentemente com relao a *uno plot1 por e@emplo1 a 3ual
$ub$titui o$ ei@o$ em cada chamadaI+ E$ta caracterB$tica ?til 3uando $e 3uer adicionar um ob/eto a uma *igura e@i$tente+ (ode-$e
obter o me$mo re$ultado utili6ando o comando hold+
1-.*.2 >ro"riedades dos +,Betos
"odo$ o$ ob/eto$ po$$uem propriedade$ 3ue de*inem como ele$ $o mo$trado$+ E$ta$ propriedade$ incluem in*orma2e$ gerai$
tai$ como o tipo do ob/eto1 $eu$ de$cendente$ HchildrenI e $uperiore$ HparentI1 o 3ue e$t: ou no )i$B)el1 bem como in*orma2e$
?nica$ de um determinado ob/eto tai$ como o$ dado$ utili6ado$ para $e determinar um ob/eto $uper*Bcie+
Kuando $e cria um ob/eto1 ele iniciali6ado com o$ )alore$ padr2e$G de$te$1 algun$ podem $er alterado$ Houtro$ $o de*inido$
pelo MA"LA# como $endo $omente para leituraI+
$s"ecificando e (lterando as >ro"riedades dos +,Betos
MA"LA# po$$ui doi$ modo$ de a/u$te do$ )alore$ da$ propriedade$+ (ode-$e e$peci*icar a$ propriedade$ do ob/eto 3uando $e
chama a *uno de criao do ob/eto1 ou depoi$ 3ue o ob/eto *oi criado *a6endo u$o da *uno set+ (or e@emplo1 a linha de comando1
>> fg4 fgure(<Solor;2;34ite;)
>> a,4 a,es(<Tie3;2!3&.$30)2;5Solor;2;:;2;6Solor;2;:;2;7Solor;2;:;)
>> surf4 surface(pea:s22;OaceSolor;2;none;2;Bine?t9le;2;.;)
cria trT$ ob/eto$ e atribui )alore$ S$ propriedade$ onde o$ )alore$ padr2e$ no $o de$e/ado$+ (ara o ca$o acima1 a /anela de *igura
criada po$$ui *undo branco e a$ linha$ do$ ei@o$ $o de*inida$ como $endo preta$ HM`OI+ ! Qngulo de )i$o de*inido como tendo um
a6imute de -7.+;ZdegG e uma ele)ao de 7AZdegG+ !$ dado$ para 3ue a $uper*Bcie $e/a gerada $o *ornecido$ pela *uno peaEs1 e
e$ta $uper*Bcie de*inida por ponto$1 no po$$uindo nenhuma cor dentro do$ 3uadril:tero$ *ormado$ por e$te$ ponto$+
Ctiliando as 09nes set e get
Uma outra *orma de $e e$peci*icar a$ propriedade$ do$ ob/eto$ re*erenciando e$te ob/eto depoi$ de $ua criao+ (ode-$e *a6er
i$to utili6ando o handle 3ue retornando pela *uno de criao+
A *uno set permite 3ue $e/a a/u$tada 3ual3uer propriedade do ob/eto pela e$peci*icao do handle do me$mo e pelo par
propriedade%)alor+ (or e@emplo1 o e@emplo anterior de*ine uma $uper*Bcie e $al)a $eu handle em surfh+ (ode-$e alterar a propriedade
do ob/eto re*erente ao e$tilo de linha HLineSt]leI1 de uma linha pontilhado para uma linha $lida1 atra)$ da linha de comando'
>> set(surf42;Bine?t9le;2;-<)
(ara $e ter uma li$ta da$ propriedade$ 3ue podem $er alterada$ de um ob/eto particular1 chama-$e a *uno set com o handle do
ob/eto'
>> set(surf4)
(ara $e *a6er a alterao do )alor de uma propriedade1 utili6a-$e a *uno 'et+
Chamando-$e a *uno 'et com o handle do ob/eto1 obtTm-$e a li$ta de toda$ a$ propriedade$ para a3uele ob/eto com o )alore$
atuai$'
>> get(surf4)

Você também pode gostar