Apostila Matlab

42
INTRODUÇÃO ao MATLAB Carlos A. A. Vinhais ([email protected]) Cristiano S. de Abreu ([email protected]) Setembro 2002 DEFI - DEPARTAMENTO DE FÍSICA (http://www.defi.isep.ipp.pt) ISEP - INSTITUTO SUPERIOR DE ENGENHARIA DO PORTO (http://www.isep.ipp.pt) (Versão 1)

Transcript of Apostila Matlab

Page 1: Apostila Matlab

INTRODUÇÃO aoMATLAB

CarlosA. A. Vinhais([email protected])CristianoS.deAbreu([email protected])

Setembro2002

DEFI - DEPARTAMENT O DE FÍSICA (http://www.defi.isep.ipp.pt )ISEP- INSTITUTO SUPERIORDE ENGENHARIA DO PORTO (http://www.isep.ipp.pt )

(Versão1)

Page 2: Apostila Matlab

CONTEÚDO INTRODUÇÃO aoMATLAB

Conteúdo

1 Intr odução 51.1 MATLAB, paraqueserve? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 O interfaceMATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2.1 A janeladecomando. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2.2 O comandoformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.3 Supressãodo output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.4 Linhasdecódigoextensas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.5 Ediçãodalinhadecomando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2 Ajuda do MATLAB 82.1 O comandohelp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 A janeladeajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.3 HelpDeskdoMATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 O ambienteMATLAB 93.1 O WorkspacedoMATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.2 Ficheirosdo MATLAB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3.2.1 Ficheiroscomextensão.m (M-file) . . . . . . . . . . . . . . . . . . . . . . . . . 93.2.2 Ficheiroscomextensão.mat(Mat-File) . . . . . . . . . . . . . . . . . . . . . . . 103.2.3 Ficheiroscomextensão.ps(Postscript) . . . . . . . . . . . . . . . . . . . . . . . 113.2.4 FicheirosDiary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4 Variáveisno MATLAB 114.1 Escalares(Matrizes1x1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.2 Variáveispré-definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.3 Variáveiscomplexas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124.4 Vectores(linha oucoluna) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.5 Matrizes(n linhaspor mcolunas). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4.5.1 Definiçãodematrizespor listagemexplícita doselementos. . . . . . . . . . . . . 144.5.2 Definiçãodematrizesusandofunçõespré-definidas. . . . . . . . . . . . . . . . . 154.5.3 Subscriptos(Subscripting) eSub-matrizes. . . . . . . . . . . . . . . . . . . . . . 16

5 Álgebra matricial 175.1 Operaçõesaritméticasemmatrizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.2 Funçõesmatemáticas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.3 Funçõesemvectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.4 Funçõesemmatrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

6 Gráficos no MATLAB 216.1 Gráficosbidimensionais(2D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6.1.1 Funçãoplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216.1.2 Funçãostem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226.1.3 Funçãoplotyy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226.1.4 Comandosubplot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

6.2 Gráficostridimensionais(3D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256.2.1 Funçãoplot3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

7 Estruturas decontrolo defluxo 297.1 Estruturasif , elseif , else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2 switch e case . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.3 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307.4 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.5 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

[C. Vinhais,C. Abreu- DEFI, ISEP] 2

Page 3: Apostila Matlab

LISTA DE TABELAS INTRODUÇÃO aoMATLAB

8 SinaiseAnálise deSistemas 318.1 Polinómios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318.2 AnálisedeFourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328.3 AnálisedeSistemasContínuosno tempo. . . . . . . . . . . . . . . . . . . . . . . . . . . 32

8.3.1 RepresentaçãodeFunçõesdeTransferência. . . . . . . . . . . . . . . . . . . . . 328.3.2 Simulaçõestemporais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

8.4 AnálisedeSistemasDiscretosno tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . 348.4.1 Convolução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348.4.2 TransformadasdeLaplaceeTransformadasZ . . . . . . . . . . . . . . . . . . . . 34

9 Inter polaçãoeajustede curvas 349.1 Interpolação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349.2 O comandospline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369.3 Ajustedecurvaspelométododosmínimosquadrados. . . . . . . . . . . . . . . . . . . . 36

9.3.1 Regressãolinear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369.3.2 O comandopolyfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

10 Créditos 38

Lista deFiguras

1 Representaçãodafunçãoseno:y(t) = sin(t) . . . . . . . . . . . . . . . . . . . . . . . 212 Representaçãodeváriasfunçõesseno. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Representaçãográficadafunçãochirp: y = sin(t.ˆ2) . . . . . . . . . . . . . . . . . . . 234 Representaçãodafunçãodiscretay[k] = sin(k)/k , por intermédiodo comandostem . . 235 Representaçãográficacomdoiseixosyy. . . . . . . . . . . . . . . . . . . . . . . . . . . 246 Utilizaçãodocomandosubplot , narepresentaçãodemúltiplosgráficosnumasójanela. . 257 Representaçãográficadasfunçõesy1(t)ey2(t). . . . . . . . . . . . . . . . . . . . . . . . 268 Gráfico3D deumahélice. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279 Exemplodeaplicaçãodafunçãowind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2810 Exemplodeaplicaçãodafunçãomeshc. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811 Exemplodeaplicaçãodafunçãocontour3 . . . . . . . . . . . . . . . . . . . . . . . . . . 2912 Representaçãodarespostadeumsistema. . . . . . . . . . . . . . . . . . . . . . . . . . . 3413 Interpolaçãodafunçãocos

�x � , como comandointerp1 . . . . . . . . . . . . . . . . . . . 35

14 Exemplodeaplicaçãodocomandopolyfit , noajustedacurvadetemperaturadeumsólido. 37

Lista deTabelas

1 Listadeteclasdeediçãodalinhadecomando.. . . . . . . . . . . . . . . . . . . . . . . . 72 Operaçõesemvariáveiscomplexas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Funçõespré-definidasdoMATLAB, paracriarmatrizes. . . . . . . . . . . . . . . . . . . 154 Operadoresaritméticosemmatrizes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 Operadoresaritméticoselementoa elemento. . . . . . . . . . . . . . . . . . . . . . . . . 186 Funçõespré-definidasparaoperaçõessobrematrizes,elementoaelemento. . . . . . . . . 197 Funçõesestatísticasdo MATLAB paravectores.. . . . . . . . . . . . . . . . . . . . . . . 198 PrincipaisfunçõesmatriciaisdoMATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . 209 Comandospararepresentaçãodegráficos2D. . . . . . . . . . . . . . . . . . . . . . . . . 2410 Comandosparamanipulaçãodegráficos. . . . . . . . . . . . . . . . . . . . . . . . . . . 2611 Operadoresrelacionaisdo MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3012 Operadoreslógicosdo MATLAB. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3013 Principaiscomandosparamanipulaçãodepolinómios. . . . . . . . . . . . . . . . . . . . 3114 PrincipaiscomandosparaanálisedeFourier. . . . . . . . . . . . . . . . . . . . . . . . . . 3215 Principaiscomandospararepresentaçãodefunçõesdetransferência.. . . . . . . . . . . . 32

[C. Vinhais,C. Abreu- DEFI, ISEP] 3

Page 4: Apostila Matlab

LISTA DE TABELAS INTRODUÇÃO aoMATLAB

16 ComandosparamanipulaçãodeTransformadasdeLaplaceeTransformadasZ. . . . . . . 35

[C. Vinhais,C. Abreu- DEFI, ISEP] 4

Page 5: Apostila Matlab

1 INTRODUÇÃO INTRODUÇÃO aoMATLAB

1 Intr odução

O MATLAB é umalinguagemde programaçãoe software de visualizaçãode dados,revelando-seespe-cialmenteaptono processamentodesinale análisedesistemas.Estetutorial pretendeserum documentointrodutório ao MATLAB, possibilitandoaosalunosdo cursode EIQI da disciplina de AGD I e AGDII alicerçarconhecimentosbásicossobreestaferramentacomputacional.Parafuturasleituras,existe umgrandenúmerodelivrosdisponíveissobreo MATLAB, comopor exemplo:EngineeringProblemsolvingwith Matlab, D.M. Etter, Prentice-Hall(1997); MasteringMATLAB, Hanselmane Littlefield, Prentice-Hall (1996). Encontra-seaindadisponível na interneto documentoMATLAB Primer, Third Edition, K.Sigmon,CRC Press(1994),ondesãoresumidososprincipaiscomandosdo MATLAB. Uma extensain-formaçãosobreo MATLAB, podeaindaserencontradano sitewebdaMathworks,Inc., atravésdo URL:http://www.mathworks.com.

1.1 MATLAB, para queserve?

O MATLAB é umalinguagemde programaçãode alto-desempenhoparacomputaçãotécnica. Estein-tegracomputação,visualizaçãoe programaçãonumambienteamigável, ondeosproblemase respectivassoluçõessãoformuladasrecorrendoà familiar notaçãomatemática.UsostípicosdaferramentaMATLABenglobam,entreoutras:

� Matemáticaecomputação

� Desenvolvimentodealgoritmos

� Modelação,simulaçãoe prototipagem

� Análisededadosevisualizaçãodosmesmos

� RepresentaçãodegráficosCientíficosedeEngenharia

� DesenvolvimentodeAplicações,incluíndoGUI’s (GraphicalUserInterface)

O nomeMATLAB deriva de Matrix Laboratory. Em ambientesuniversitários,estesoftwarerepresentaa ferramentastandardna aprendizagemde Matemática,Engenhariae Ciênciaem geral. Na industriaoMATLAB, é a ferramentamaisempreguenasactividadesdeI&D delinhaavançadaeanálisededados.

O MATLAB possuiuma sériede soluçõesparaaplicaçõesespecíficas,designadaspor Toolboxes. Degrandeimportânciaparaa grandemaioriadosutilizadores,asToolboxespermitema aprendizageme apli-caçãodetecnologiasespecializadas.As Toolboxessãoumacolecçãodefunçõesdo MATLAB (chamadasM-files), constituíndoumaextensãodo ambienteMATLAB na resoluçãode classesespecíficasde prob-lemas. Áreasparaasquaisestãodisponíveis Toolboxesincluem: processamentode sinal e de imagem,aquisiçãodedados,sistemasdecontrolo,redesneuronais,lógicadifusa,simulação,etc.. .

1.2 O interface MATLAB

Parafazercorrero MATLAB numaplataformado tipo Win32 (MS Windows),cliqueduplamenteno icondoMATLAB. Emplataformasdotipo UNIX-lik e(Unix, Linux, etc.. . ), digitematlab nalinhadecomando(shell) dosystemprompt. ParasairdoMATLAB emqualqueraltura,digite quit noMATLAB prompt.

1.2.1 A janela decomando

O modomaissimplesdeintroduzir linhasdecódigono MATLAB, é atravésdalinha decomando(MAT-LAB prompt), existentenajaneladecomando.Isto é,digitandocomandose expressõesapóso MATLABprompt, o outputdosresultadosé observadonessamesmajanela.Estasecçãodescreve algunsprocedimentos,usadosparaalterara formataçãode output dos resultadosapresentadosnajaneladecomando.

[C. Vinhais,C. Abreu- DEFI, ISEP] 5

Page 6: Apostila Matlab

1 INTRODUÇÃO INTRODUÇÃO aoMATLAB

1.2.2 O comandoformat

Estecomandocontrolao formatonúmericodosvaloresapresentadosnoMATLAB. Apenasaapresentaçãovisual dosnúmerosé afectada,e nãoa suarepresentaçãointernaou modocomoo MATLAB calculaougravaosmesmos.No seguimentosãomostradososdiferentesformatos,acompanhadosdooutputproduzi-do apartir deum vectorlinhacomdiferentescomponentes.

> > x = [2.3545e-8 5/4];> > format short; xx =

0.0000 1.2500> > format short e; xx =

2.3545e-08 1.2500e+00> > format short g; xx =

2.3545e-08 1.25> > format long; xx =

0.00000002354500 1.25000000000000> > format long e; xx =

2.354500000000000e-08 1.250000000000000e+00> > format long g; xx =

2.3545e-08 1.25> > format bank; xx =

0.00 1.25> > format rat; xx =

* 5/4> > format hex; xx =

3e59480014e7df73 3ff4000000000000

A resoluçãodosresultadosapresentadospodevariarde plataformaparaplataforma,dependendodo bar-ramento(16 bits, 32 bits, etc.. . ) e tipo de computadorondecorreo MATLAB, isto é, da representaçãointernadevaloresreais.

Paraalémdoscomandosformat apresentadosanteriormente,format compact , suprimemuitasdaslinhasembrancoquesurgemnooutputdalinhadecomando.Tal permitecondensara informaçãoapresentadanajaneladecomando.

1.2.3 Supressãodo output

Sedigitar umaexpressão(input) no MATLAB prompte primir a tecla<Return>, serãoautomaticamenteapresentadosos resultadosno écran. Contudo,se terminara linha de input com “ ; ” (semicolon), OMATLAB realizaoscálculossemno entantoapresentaro resultado,comosevêno exemploseguinte:

[C. Vinhais,C. Abreu- DEFI, ISEP] 6

Page 7: Apostila Matlab

1 INTRODUÇÃO INTRODUÇÃO aoMATLAB

> > format short> > x = 2 + 3x =

5> > y = 1 + 7;> >

Isto é particularmenteútil quandopretendergerarmatrizesde grandesdimensões,como por exemplo:A = magic(50);

1.2.4 Linhas de códigoextensas

Seumaexpressãonãocoubernumamesmalinha, utilize “ ... ”, seguidodasteclas<Return> ou <En-ter>, paraindicarqueessamesmaexpressãoseprolonganalinhaseguinte.A título deexemplo,

> > B = [0 1 -1 2 -2 3 -3 4 -4 5 -5 ...6 -6 7 -7 8 -8 9 -9 10 -10];> >

Espaçosem brancoà volta dossinais“+”, “ -”, “=”, sãooptionais. Estes,contudo,aumentama legibil-idadedasexpressõesintroduzidasnoMATLAB prompt.

1.2.5 Ediçãoda linha de comando

Diferentessetase teclasdecontroloexistentesno teclado,permitemchamarnovamente,editare reutilizarcomandosintroduzidoanteriormente.Tal permite,por exemplo,corrigir código introduzidoincorrecta-mentepor acidente,semnecessidadedevoltaradigitara globalidadedasexpressões.Digitandoalgunscarácterese logo deseguidausara tecla � , permite-lheencontrarumalinha previamenteintroduzida.A listadeteclasdeediçãodalinha decomando,variadecomputadorparacomputador. DeveexperimentarquaisdasteclasdaTabela1, seencontramdisponíveisnoseusistema.

Tabela1: Listadeteclasdeediçãodalinha decomando.� ctrl - p Chamara linhaanterior�

ctrl -n Chamara linhaseguinte� ctrl - b Recuarum carácter� ctrl - f Avançarumcarácterctrl - � ctrl - r Avançarumapalavractrl - � ctrl - l Recuarumapalavrahome ctrl - a Ir aoinício dalinhaend ctrl - e Ir aofim dalinhaesc ctrl - u Limpara linhadel ctrl - d Apagaro caráctersobreo cursorbackspace ctrl - h Apagaro carácterantesdo cursor

ctrl - k Apagaratéaofim dalinha

[C. Vinhais,C. Abreu- DEFI, ISEP] 7

Page 8: Apostila Matlab

2 AJUDA DO MATLAB INTRODUÇÃO aoMATLAB

2 Ajuda do MATLAB

Existemdiferentesmaneirasdeacederà informaçãodeajudaedocumentaçãoonlinedo MATLAB:

� O comandohelp

� A janeladeajuda(helpwindow)

� Help Deskdo MATLAB (Documentaçãoem HTML), recorrendoa um Web Browser, como porexemploo Netscape

� DocumentaçãoOnline (Onlinereferencepages), emformatoPDFe acessível a partir do Help Deskdo MATLAB

� LigaçãowebaositedeURL: http://www.mathworks.com

2.1 O comandohelp

O comandohelp representaa forma elementarde determinara síntaxe e utilizaçãode umadeterminadafunçãodo MATLAB. A informaçãoé representadadirectamentenajaneladecomando.Porexemplo,

> > help realmax

REALMAXLargest positive floating point number.x = realmax is the largest floating point number representableon this computer. Anything larger overflows.

See also EPS, REALMIN.> >

Nota: O MATLAB diferenciacaracteresem minúsculasou maíusculas(casesensitive). Logo, ao intro-duzir funçõesdeve fazê-lousandooscarácteresminúsculoscorrespondentes.A representaçãoemmaíus-culasdasfunçõesno outputdo comandohelp , temcomoúnicopropósitodestacaro nomeda funçãodorestantetexto.

Todasasfunçõesdo MATLAB encontram-seorganizadaspor gruposdeassuntos.O comandohelp por sisó,apresentaumalistagemdetodososgrupos(directory) bemcomumadescriçãosuscinta:

> > help

HELP topics:matlab/general - General purpose commands.matlab/ops - Operatores and special characters.matalab/lang - Programming language constructs....

2.2 A janela de ajuda

A janeladeajudaencontra-sedisponível nosPC’sporselecçãodaopçãoHelp Window, sobo menuHelp,ou carregandono íconcomum pontodeinterrogação.Estaé aindaacessível digitandohelpwin najaneladecomando.Podetambémusara janeladeajudanumassuntoparticular, digitando:

> > helpwin assunto

[C. Vinhais,C. Abreu- DEFI, ISEP] 8

Page 9: Apostila Matlab

3 O AMBIENTE MATLAB INTRODUÇÃO aoMATLAB

2.3 Help Deskdo MATLAB

O Help Deskdo MATLAB podeser acedidoem PCsseleccionandoa opçãoHelp Desk, sob o menuHelp, ou aindadigitandoo comandohelpdesk emtodoo tipo deplataformas.Grandepartedadocumen-taçãoencontra-sesoba formadepáginasHTML, sendopor issoacessível recorrendoa um WebBrowser(Netscape,InternetExplorer, etc.. . ).

Casosejaconhecidoo nomedeumadeterminadafunção,podeaindaserusadoo comando:

> > doc função

paraacederà documentaçãoda mesma(Estecomandodá início a umasessãocom o Browserconfigu-radopor defeito).

3 O ambienteMATLAB

O ambienteMATLAB (MATLAB environment), inclui um conjuntode variáveis criadasduranteumasessãodeMATLAB, bemcomoficheirosarmazenadosnodiscoduroe/oudadospersistentesdurantemúlti-plassessões.

3.1 O Workspace do MATLAB

O Workspacedo MATLAB é uma áreade memória,acessível a partir da linha de comando. Existemdoiscomandos:who e whos, paravisualizaro conteúdodo workspace. O primeiroforneceumadescriçãosuscinta,enquantoqueo último forneceumadescriçãodo tamanhoe classedasvariáveisarmazenadasnoworkspace.As variáveisarmazenadasnoworkspacepodemserlimpascomo usodo comando:clear .

3.2 Ficheirosdo MATLAB

Existemdiferentestipos de ficheirosno MATLAB. Estespodemser ficheirosque contêmscripts (pe-quenosprogramas),isto é blocosde código com comandosdo MATLAB, ficheirosondesãodefinidasfunçõescriadaspeloutilizador (user-definedfunctions), queactuamdemodosemelhanteàsfunçõespré-implementadasno MATLAB (built-in functions), eficheiroscontendodadosnuméricosougráficos.

3.2.1 Ficheiroscomextensão.m (M-file)

OscomandosintroduzidosnalinhadecomandosãointerpretadospeloMATLAB, apenasnoâmbitodapre-sentesessão.Apósfecharoprograma,todasasexpressõesdigitadasdeixamdeestarnovamentedisponíveisparafuturassessões.Torna-sepor issonecessáriorecorreraoutrosmeiosdemodoaevitar reentroduzirto-doo códigoentretantodigitado,emsessõesanteriores.Existemdoisprocessosparareutilizaçãodecódigoentresessões:scriptse funções.AmbasfazemusodeM-files (assimchamadasdevido a teremextensão.m).Os ficheiros M-files são criadosrecorrendoa um editor de texto, como por exemplo: emacsou vim(plataformasUnix eLinux), wordpadounotepad(plataformasWindows). A grandevantagemdasM-files,resideno factodoscomandosficaremgravadose poderemserreutilizados/ modificados,numaposteriorsessão.Obs.: Deve evitar recorrera processadoresdetexto, comoo word, dadoqueosficheirosdeoutput(.doc,.dot,.rtf, etc.. . ), apresentamformataçõesincompatíveiscomo interpretadordoMATLAB.

Scripts

Um ficheiroM-file do tipo script, consistenumasequênciadeexpressõesnormaisdo MATLAB. Se,porexemplo,o ficheirotivero nomedefi.m, entãodigitandonalinha decomandodoMATLAB:

[C. Vinhais,C. Abreu- DEFI, ISEP] 9

Page 10: Apostila Matlab

3 O AMBIENTE MATLAB INTRODUÇÃO aoMATLAB

> > defi

farácomquesejamexecutadasasexpressõesexistentesno ficheiro(Nota: observea ausênciadaextensão.m nalinhadecomando,o quedariaorigemaerrocasoestivessepresente).Um ficheiroM-file podechamaroutroficheiroM-file, inclusivéchamar-seasi mesmo,recursivamente.Obs.: As variáveisnumscript sãodeâmbito(scope) global, isto é vãomodificarosvaloresdasvariáveiscomo mesmonome,já existentesno workspacedeumadeterminadasessão.

Funções

As funções(functions) sãoo segundotipo de ficheirosM-files, sendogeradosrecorrendoa um editordetexto comono casodosscripts. No entanto,asfunçõesapresentama seguintesíntaxe genéricade con-strução:

function [output 1, output 2] = functionname(input1, input2)%%[output 1, output 2] = functionname(input1, input2)%% Alguns comentários sobre o objectivo da função%MATLAB command 1;MATLAB command 2;MATLAB command 3;...

O nomeda M-file paraestafunçãoé functionname.m, e é chamadaa partir do MATLAB, ou a partirdeoutraM-file pelocomando:

> > [output 1, output 2] = functionname(input1, input2)

As variáveisdefinidasnumafunçãosãopor defeitodeâmbitolocal. No seguimento,um simplesexemploilustrao usodeumafunção,quepermitecalcularasomadedoisnúmerosgeradosaleatoriamente:

function x = teste(m, n)% TESTE Soma de dois número m e n gerados ao acaso% com a função do MATLAB randm = rand(1);n = rand(1);x = m + n

3.2.2 Ficheiroscomextensão.mat (Mat-File)

Os Mat-files (assimchamadasdevido a teremextensão.mat), sãoficheirosdo tipo binários(binaries),compactados,usadosparaarmazenarresultadosnuméricos.Estetipo deficheirospodeserempregueparaguardarresultadosgeradosnumasessãodeMATLAB. Porexemplo,paraguardarosvaloresassociadosàsvariáveisvar1 e var2 no ficheirodenomeJulho15_2002.mat , digitenalinhadecomando:

> > save Julho15_2002.mat var1 var2

Paraguardartodasasvariáveisdo workspace, é utilizadoo mesmocomandosemdescriminaçãodasvar-iáveis,

[C. Vinhais,C. Abreu- DEFI, ISEP] 10

Page 11: Apostila Matlab

4 VARIÁVEIS NO MATLAB INTRODUÇÃO aoMATLAB

> > save nomeficheiro.mat

Finalmente,paracarregarumaMat-file no MATLAB, previamentecriada,devedigitaro comando:

> > load nomeficheiro (ou load nomeficheiro.mat)

O comandoload , permiteaindaler ficheirosem formatobinário contendomatrizesgeradasem sessõesanteriores,ou ficheirosde texto (geralmentecom extensão.txt) contendodadosnuméricos.Os ficheiroscontendodadosdevemestarorganizadossoba formatabular, separadospor espaçosembranco(delimita-dores).

3.2.3 Ficheiroscomextensão.ps(Postscript)

GráficosgeradosnoMATLAB podemsergravadosnumgrandenúmerodeformatos,sendocontudopráti-ca comumgravá-losem Postscript(.ps)ou EncapsulatedPostscript(.eps). Tal deve-se,essencialmente,à excelentequalidadede outpute portabilidadeentreplataformasdiferentes,paraposteriorimpressãoeintegraçãoemdocumentos.psou .pdf (PortableDocumentFormatdaAdobe).Existemduasviasparaprocederà gravação(hardcopy) degráficosno MATLAB, seleccionandoa opçãoPrint nabarrademenuou atravésdalinhadecomando:

> > print -dps nomeficheiro.ps

ou no formato.eps,

> > print -deps nomeficheiro.eps

3.2.4 FicheirosDiary

É possível guardarumregistodasessãodeMATLAB, recorrendoaocomandodeinicialização:

> > diary nomeficheiro

Paraterminaro registoe fecharo ficheirodo tipo diary, digite:

> > diary off

4 Variáveisno MATLAB

4.1 Escalares(Matrizes 1x1)

As variáveispodemservistascomomatrizesdetamanho1 � 1 (1 linhapor1 coluna),cujosvalorespodemserreaisou complexos(partereal+ parteimaginária).A atribuiçãodo valor à variável x é feita digitandodirectamentea expressão,nalinhadecomando.Porexemplo,sex for igual a2:

[C. Vinhais,C. Abreu- DEFI, ISEP] 11

Page 12: Apostila Matlab

4 VARIÁVEIS NO MATLAB INTRODUÇÃO aoMATLAB

> > x = 2x =

2> > y = 3+4iy =

3.0000 + 4.0000i

(Obs.: A respostanãoserávisualizadaseum“ ;” for colocadono fim daexpressão)

4.2 Variáveispré-definidas

Algumasvariáveis encontram-sejá definidaspelo MATLAB. Por exemplo,a constantede Arquimedescorrespondea:

> > pians =

3.1416

4.3 Variáveiscomplexas

A entidadeimagináriapodeserdefinidapor i ou j:

> > jans =

0 + 1.0000i

Pode-seatribuir umvalornuméricoaumavariável, usandoumafórmulaqueutilize operadoresaritméticose / ou númerosou variáveis previamentedefinidas.Por exemplo,sez é a somade x com y, variáveis jádefinidas,aexpressãoseguinteéválida(avariável zseráguardadanoambientedetrabalho(workspace), esóserávisualizadadigitandoz):

> > x = 2;> > y = 3+4i;> > z = x+y;> > zz =

5.0000 + 4.0000i

AlgumasoperaçõesimportantesemvariáveiscomplexassãodefinidasnaTabela2:

Tabela2: Operaçõesemvariáveiscomplexas.real Parterealimag Parteimagináriaabs móduloangle fase(ângulo)conj conjugado

[C. Vinhais,C. Abreu- DEFI, ISEP] 12

Page 13: Apostila Matlab

4 VARIÁVEIS NO MATLAB INTRODUÇÃO aoMATLAB

Porexemplo,comavariável (complexa)z acimadefinida,obtém-se:> > z = 5 + 4i;> > c = imag(z)c =

4> > c = abs(z)c =

6.4031> > c = angle(z)c =

0.6747> > conj(z)ans =

5.0000 - 4.0000i

4.4 Vectores(linha ou coluna)

O MATLAB ébaseadonaálgebravectorialematricial.Osescalaressãotratadoscomomatrizesdetaman-ho 1 � 1 (1 linha por 1 coluna),enquantoqueosvectoressãomatrizesdetamanho1 � n (vectorlinha) oun � 1 (vectorcoluna).Portanto,operaçõesentrevectorese matrizestornam-setão simplesquantooperaçõesnumacalculadoracomum.

Osvectorespodemserdefinidosdigitandoalistaexplícitadoselementosqueoconstituem,sendonecessárioatenderaalgumasconvenções:

� Separaroselementosdovectorcomespaços(ouvírgulas)

� Envolvera listacompletadoselementospor parêntesesrectos“ [ ] ”.

Porexemplo,definaumvectoru de4 elementosdetamanho1 � 4 (1 linhapor4 colunas),istoé,umvectorlinha. De facto,

> > u = [1 9 3 5]> > uu =

1 9 3 5

Um vectorcolunapodeserdefinidoà custado operadortransposta(transpose), representadopor um tilde( ’ ). De facto,seseconsiderara transpostadovectoru (vectorlinha),obtém-seo vectorcoluna4 � 1:

> > u’ans =

1935

Vectorespreviamentedefinidospodemserusadosna definiçãode novos vectores.A título de exemplo,paraacrescentar2 elementos(0 e2) aovectoru, acimadefinido,digitenalinhadecomando:

[C. Vinhais,C. Abreu- DEFI, ISEP] 13

Page 14: Apostila Matlab

4 VARIÁVEIS NO MATLAB INTRODUÇÃO aoMATLAB

> > v = [0 2];> > w = [u v]w =

1 9 3 5 0 2

No MATLAB, vectorespodemsergeradosusandoo operadorcolon “ : “. Por exemplo,o vectorx quetomavaloresentre0 e6,comincremento1 (valorassumidopordefeito),podeserobtidodaseguinteforma:

> > x = 0:6x =

0 1 2 3 4 5 6

De notarquenestecaso,os parêntesesrectosnãosãonecessários.O incrementopodesernegativo. Defacto,

> > x = 10:-2:2x =

10 8 6 4 2

Umaalternativaconsisteemusarafunçãolinspace quegeraumvectorespecificandoo primeiroeúltimonúmero,bemcomoo númerodeelementosigualmenteespaçadosentreambos.Porexemplo,

> > x = linspace(0,10,5)x =

0 2.5000 5.0000 7.5000 10.0000

A funçãologspace temumcomportamentosemelhante,exceptuandoo factodequeoselementosencontram-seespaçadoslogaritmicamenteentreo primeiroeúltimo.

O comprimentodeumvectorpodeserverificadousandoo comandolength :

> > length(x)ans =

5

Emvezdo comandolength , poder-se-iausarsize(x) :

> > size(x)ans =

1 5

A respostaassociadaà variável ans , diz-nosqueo vectorx tem dimensões1 � 5, isto é, x é um vectorde1 linhapor 5 colunas.

4.5 Matrizes (n linhas por m colunas)

4.5.1 Definiçãode matrizespor listagemexplícita doselementos

Paradefinirumamatrizlistandooselementosqueaconstituem,énecessárioatenderaalgumasconvenções:

� Separaroselementosdeumalinhacomespaços

� Usarpontoevírgula“ ;” paraindicaro fim decadalinha

� Envolvera listacompletadoselementospor parêntesesrectos“ [ ] “

[C. Vinhais,C. Abreu- DEFI, ISEP] 14

Page 15: Apostila Matlab

4 VARIÁVEIS NO MATLAB INTRODUÇÃO aoMATLAB

Porexemplo,paradefinir umamatrizA dedimensões3 � 3 (3 linhaspor 3 colunas),simplesmentedigitenalinhadecomando:

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

1 2 3 45 6 7 89 10 11 12

Uma vezdigitadaa matriz,ela é automaticamenterelembradano workspacedo MATLAB, e poderáserreferidae,chamadanovamente,simplesmentedigitandoA. O tamanhodamatrizA serádadoentãopor,

> > size(A)ans =

3 4

A respostapermiteverificarqueA é constituídapor3 linhase4 colunas.

4.5.2 Definiçãode matrizesusandofunçõespré-definidas

O MATLAB possuifunçõespré-definidas(built-in functions), quepermitemcriar matrizes“especiais”deformamuitoconveniente.Algumasdestasfunçõesencontram-senaTabela3.Por exemplo, zeros(m,n) produz uma matriz de zeros,com m linhas e n colunas. Por outro lado,zeros(n) produzumamatrizquadradacomigual número,n, delinhasecolunas.SeA for umamatriz,zeros(size(A)) produzumamatrizdezeros,comasmesmasdimensõesdamatrizA.

Tabela3: Funçõespré-definidasdo MATLAB, paracriar matrizes.eye Matriz identidadezeros Matriz deelementosnulos(zeros)ones Matriz deelementosunitários(uns)diag Gerarou extraíradiagonalprincipalrand Matriz deelementosaleatórios(compreendidosentre0 e1)magic Matriz mágica

[C. Vinhais,C. Abreu- DEFI, ISEP] 15

Page 16: Apostila Matlab

4 VARIÁVEIS NO MATLAB INTRODUÇÃO aoMATLAB

Sãoapresentados,no seguimento,algunsexemplosenvolvendoasfunçõessupracitadas.

> > M = eye(3) % Matriz identidade, de tamanho 3x3M =

1 0 00 1 00 0 1

> > A = rand(2,3) % Matriz 2x3, de elementos aleatóriosA =

0.4565 0.8214 0.61540.0185 0.4447 0.7919

> > zeros(size(A))ans =

0 0 00 0 0

No casode x ter sido definido como um vector, diag(x) é uma matriz, cujos os elementosda diago-nal principal sãooselementosdex, e todasasoutrasentradasnulas. SeA é umamatrizquadrada,entãodiag(A) é um vectorcolunaconstituídopeloselementosda diagonalprincipal de A. Qual seráentãooresultadodediag(diag(A)) ?

As matrizespodemsergeradaspor concatenaçãode blocos(matrizes). Por exemplo, seA é uma ma-triz 3 � 3, então:

> > B = [A, zeros(3,2); zeros(2,3) eye(2)];

produzumamatriz5 � 5.

4.5.3 Subscriptos(Subscripting) eSub-matrizes

O elementodalinha i edacolunaj deumamatrizA édenotadoporA(i,j). Porexemplo,A(3,2)correspondeaoelementodalinha3 ecoluna2 damatrizA. ConsiderandoamatrizA, detamanho3 � 4, definidapor:

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

1 2 3 45 6 7 89 10 11 12

> > x = A(3,2)x =

10

Todaa2a linhadeA podeserarmazenadano vector(linha) y, digitando:

> > y = A(2,:)y =

5 6 7 8

Reparea utilizaçãodo operadorcolon, “ : “, previamenteintroduzidoe quenestecasosignifica “con-siderartodasascolunas”.Da mesmaforma,a sub-matrizdeA, sub , constituídapeloselementosdaslinhas2 e 3, e colunas2, 3 e 4,serádefinidapor:

[C. Vinhais,C. Abreu- DEFI, ISEP] 16

Page 17: Apostila Matlab

5 ÁLGEBRA MATRICIAL INTRODUÇÃO aoMATLAB

> > sub = A(2:3,2:4)sub =

6 7 810 11 12

Pode-seentãousarsubscriptosparadefinir ou alterarelementos(linhase / ou colunas)de uma matriz.Vejamos,

> > A(:,2) = 0A =

1 0 3 45 0 7 89 0 11 12

igualatodososelementosdacoluna2 deA a zero.

Comoexemplofinal, pretende-seatribuir aovectorx, a última linha deA. Paratal, é introduzidonalinhadecomando,

> > x = A(size(A,1),:)x =

9 0 11 12

Denotarqueo resultadodesize(A,1) correspondeaonúmerodelinhasdeA, enquantoquesize(A,2) ,aonúmerodecolunasdamatriz.

5 Álgebra matricial

5.1 Operaçõesaritméticas emmatrizes

Osoperadoresaritméticosbásicosemmatrizes(e,claro,emescalares,querepresentamcasosparticularesdematrizes),encontram-senaTabela4. No seguimentosãomostradosalgunsexemplosdeaplicaçãodestesoperadores,

> > a = [1 2 3 4];> > b = [5 6 7 8];> > c = a + bc =

6 8 10 12

(Obs.: Umamensagemdeerroocorreseostamanhosdasmatrizesnãoforemcompatíveisparaaoperaçãopretendida).

Tabela4: Operadoresaritméticosemmatrizes.+ Adição- Subtracção* Multiplicação/ Divisãoàdireita\ Divisãoàesquerdaˆ Operadorexpoente(potência)’ Transposta(conjugada)

[C. Vinhais,C. Abreu- DEFI, ISEP] 17

Page 18: Apostila Matlab

5 ÁLGEBRA MATRICIAL INTRODUÇÃO aoMATLAB

Relativamenteà divisãode matrizesno MATLAB, temosquea soluçãode A*x = b é dadapor x =A\b , isto épelousodo operador“ \ “ (divisãoà esquerda),enquantoquea soluçãodex*A = b é dadaporx = b/A (divisãoàdireita),nacondiçãodamatrizA serinvertível e todasasmatrizesseremcompatíveis.A adiçãoe subtracçãoenvolvemoperaçõesaritméticas“elementoa elemento”(element-by-element), en-quantoquea multiplicaçãoe divisãode matrizes,não. No entanto,o MATLAB providenciaoperaçõeselementoa elementoescrevendo“.” antesdo operadorconsiderado,comopodeservisto naTabela5. Oexemploseguinteilustra a diferençaentrea multiplicaçãode matrizese a multiplicaçãoelementoa ele-mento,

> > A = [1 2; 3 4]A =

1 23 4

> > B = A*AB =

7 1015 22

> > C = A.*AC =

1 49 16

Comosepodever, osresultadosanteriorescorrespondemdefactoàsmatrizesA^2e A.^2, respectiva-mente.

Tabela5: Operadoresaritméticoselementoa elemento..* Multiplicação(elementoaelemento)./ Divisãoà direita(elementoaelemento).\ Divisãoà esquerda(elementoaelemento).ˆ Operadorexpoente(elementoaelemento).’ Transposta(nãoconjugada)

Comoexemplofinal, pretende-seconstruiro vectorx � cos�2t � eo vectory � t cos

�4t � , paraosinstantes

detempot � 0 1 2 �� � �� 100. Na linhadecomandodever-se-áescrever,

> > t = 0:100;> > x = cos(2*t);> > y = t .* cos(4*t);

5.2 Funçõesmatemáticas

O MATLAB possuium númerode funçõespré-definidasqueoperamemmatrizes,elementoa elemento.NaTabela6 sãoapresentadasalgumasdasfunçõesdeutilizaçãomaiscorrente.

5.3 Funçõesem vectores

Outrasfunçõesdo MATLAB operamessencialmenteemvectores(linha ou coluna),masactuamnasma-trizesm � n (m � 2) colunaa coluna,ou seja,produzemum vectorlinha quecontémosresultadosdasuaaplicaçãoacadacoluna.Algumasdestasfunçõesencontram-sedescritasnoquadrodaTabela7.

Comoexemplosdeaplicaçãodestasfunções,temos:

[C. Vinhais,C. Abreu- DEFI, ISEP] 18

Page 19: Apostila Matlab

5 ÁLGEBRA MATRICIAL INTRODUÇÃO aoMATLAB

Tabela6: Funçõespré-definidasparaoperaçõessobrematrizes,elementoa elemento.sin Senocos Cosenotan Tangenteasin Arcsenoacos Arcosenoatan Arctangenteexp Exponenciallog Logaritmonatural(neperiano)log10 Logaritmodebase10sqrt Raízquadradaabs Valor absoluto(módulo)sign Sinalround Arredondamentoparao inteiromaispróximofloor Arredondamentopor defeitoceil Arredondamentopor excessorem Restodadivisãointeira

> > v = [1 9 3 5 0 2];> > sum(v)ans =

20> > mean(v)ans =

3.3333> > std(v)ans =

3.2660> > sort(v)ans =

0 1 2 3 5 9

Tabela7: FunçõesestatísticasdoMATLAB paravectores.max Valormáximomin Valormínimosort Ordenaçãodeelementossum Somadeelementos(linha oucoluna)prod Produtodeelementosmedian Medianamean Médiaaritméticastd Desviopadrãocov Variância(Covariânciano casodematrizes)any Qualquer(retorna1 severdadeiro,0 sefalso)all Todos(retorna1 severdadeiro,0 sefalso)

[C. Vinhais,C. Abreu- DEFI, ISEP] 19

Page 20: Apostila Matlab

5 ÁLGEBRA MATRICIAL INTRODUÇÃO aoMATLAB

No casodeserumamatrizvem,

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

1 2 34 5 6

A somadoselementosdeA, aolongodascolunas,seráentãodadapor,

> > sum(A)ans =

5 7 9

o quecorrespondea um vector linha, enquantoquea somade todosos elementosda matriz A, ao lon-go dassuaslinhas,é feitadaseguinteforma,

> > sum(A,2)ans =

615

> > max(A)ans =

4 5 6> > max(max(A))ans =

6

5.4 Funçõesem matrizes

As capacidadesdo MATLAB residemfundamentalmentenassuasfunçõesmatriciais,encontrando-seasdemaiorutilidadedescritasnaTabela8.

Comoexemplodeaplicaçãotemos,

> > A = [1 3; 4 8];> > B = inv(A);> > A*Bans =

1 00 1

Tabela8: PrincipaisfunçõesmatriciaisdoMATLAB.eig Valorespropriosevectoresprópriosinv Matriz inversaexpm Matriz exponencialsqrtm Matriz raízquadradapoly Polinómiocaracterísticodet Determinantedamatrizsize Tamanhodamatriznorm Normadamatriz(norma1,norma2, . . . )

[C. Vinhais,C. Abreu- DEFI, ISEP] 20

Page 21: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

As funçõesMATLAB podemter um ou mais argumentosde saída. Por exemplo, y = eig(A) , ousimplesmenteeig(A) produzum vectorcontendoosvaloresprópriosdeumamatrizA, enquantoque[UD] = eig(A) produzumamatrizU cujascolunassãoosvectoresprópriosdeA, eumamatrizdiagonalDcomosvaloresprópriosdeA, nasuadiagonalprincipal.

6 Gráficosno MATLAB

O MATLAB possuinumerosasfunçõesparacriar gráficosbidimensionaise tridimensionais,de elevadaqualidade.

6.1 Gráficos bidimensionais(2D)

6.1.1 Funçãoplot

A funçãomaisusadaparacriargráficosbidimensionais(2D), échamadapelocomandoplot , quepodetermúltiplosargumentosopcionais.Estecomandogeragráficoslinearesdevectoresematrizes.Porexemplo,

> > plot(t,y)

permiterepresentaro vectort no eixoxx emfunçãodo vectory noeixo yy.

O exemploseguinteilustraestafunçãousadapararepresentara funçãoseno(Figura1):

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

0 2 4 6 8 10 12 14−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura1: Representaçãodafunçãoseno:y(t) = sin(t) .

Podemosrepresentarno mesmográfico,recorrendoa apenasum só comando,paresde valores(t, y). OMATLAB refere-seautomaticamentea umalista pré-definidadecoresparadescriminarcadaconjuntodedados.Porexemplo,trêscurvasemfunçãodet podemserrepresentadasdaseguinteforma(Figura2):

[C. Vinhais,C. Abreu- DEFI, ISEP] 21

Page 22: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

> > t = 0:pi/100:4*pi;> > y1 = sin(t);> > y2 = sin(t-0.75);> > y3 = sin(t-1.5);> > plot(t,y1,t,y2,t,y3)

0 2 4 6 8 10 12 14−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura2: Representaçãodeváriasfunçõesseno.

Existemopçõesparadefinir o tipo ecordalinhadográfico,recorrendoàseguintesintaxe,

> > plot(t,y,’opções’)

Ospontosdo gráficoemy podemserrepresentadospor umavariedadedesímbolos,taiscomo“ + “, “. ”, “ * ”, “ o ”, ou “ x ”. Algumasdascoresdisponíveissão“ r “ (vermelho),“ b “ (azul),“ g “ (verde),“y “ (amarelo),“ w “ (branco)e “ k “ (preto).O tipo delinhaspoderáserescolhido,comopor exemplo:“ -“ (linhasólida),“ -- “ (linha tracejada),“ -. “ (linha tracejadacompontos)e “ : “ (linhapontilhada).

Estasopçõespodemserusadasemconjunto,comosemostrano exemploseguinte(Figura3):

> > t = 0:pi/100:2*pi;> > y = sin(t.^2);> > plot(t,y,’--*r’)

6.1.2 Funçãostem

No casodesinaistemporaisdiscretos,por exemplo,pode-seusara funçãostem . Estacaracteriza-seporrepresentarsequênciasdiscretasdepontos,istoé,cadavalorérepresentadocomumpequenocírculoabertoe um segmento,no pontoy[k] . A funçãostem podeaindaserusadacoma opção“ filled “, o quepermitepreeencheroscírculos(markers). UmaaplicaçãodestafunçãopodeserobservadanaFigura4,

> > k = eps:pi/10:4*pi;> > y = sin(k)./k;> > stem(k,y,’filled’)

6.1.3 Funçãoplotyy

A funçãoplotyy permitevisualizarduasfunçõesz1 e z2, com dois eixosyy distintos(um à esquerdaeoutroàdireita),comopodeservistono exemplodaFigura5,

[C. Vinhais,C. Abreu- DEFI, ISEP] 22

Page 23: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

0 1 2 3 4 5 6 7−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura3: Representaçãográficadafunçãochirp: y = sin(t.ˆ2) .

0 2 4 6 8 10 12 14−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura4: Representaçãodafunçãodiscretay[k] = sin(k)/k , por intermédiodo comandostem .

[C. Vinhais,C. Abreu- DEFI, ISEP] 23

Page 24: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

> > t = 0:900; A = 1000; a = 0.005; b = 0.005;> > z1 = A*exp(-a*t);> > z2 = sin(b*t);> > plotyy(t,z1,t,z2,’semilogy’,’plot’)

0 100 200 300 400 500 600 700 800 90010

1

102

103

0 100 200 300 400 500 600 700 800 900−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura5: Representaçãográficacomdoiseixosyy.

Outroscomandospararepresentaçãodegráficos2D, encontram-senaTabela9.

Tabela9: Comandospararepresentaçãodegráficos2D.loglog Eixosxx eyy comescalalogarítmicasemilogx Eixo xxcomescalalogarítmicaeyy linearsemilogy Eixo yycomescalalogarítmicaexx linearbar Gráficodebarraserrorbar Gráficodebarrasdeerroshist Histogramapolar Gráficodecoordenadaspolares

6.1.4 Comandosubplot

Paravisualizaçãodeváriosgráficosnumasófigura(janela),podeserutilizadoocomandosubplot(m,n,p)ou subplot(mnp) . Estecomandodividea janelanumamatrizm � n, ondep correspondeàposiçãodeumdeterminadográfico,nessamatriz. A título de exemplo,o códigoseguintepermitecriar um conjuntodequatrográficos,representadosnaFigura6.

[C. Vinhais,C. Abreu- DEFI, ISEP] 24

Page 25: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

> > k = 0:pi/10:4*pi;> > y1 = sin(k);> > y2 = sin(k)./k;> > subplot (311), plot(k,y1,’-xb’)> > subplot (312), stem(k,y1,’r’,’filled’)> > subplot (325), plot(k,y2)> > subplot (326), stem(k,y2)

0 2 4 6 8 10 12 14−1

−0.5

0

0.5

1

0 2 4 6 8 10 12 14−1

−0.5

0

0.5

1

0 5 10 15−0.5

0

0.5

1

0 5 10 15−0.5

0

0.5

1

Figura6: Utilizaçãodo comandosubplot , narepresentaçãodemúltiplosgráficosnumasójanela.

O MATLAB possuium grandenúmerode comandos,usadosna visualizaçãode gráficoscom ano-tações,títulos,legendas,. . .Algunsdestescomandos,deusomaisfrequente,encontram-sedescritasnaTabela10. O exemploseguintemostraalgumasdestascapacidades(Figura7),

> > t = linspace(0,8,400);> > y1 = t.*exp(-t);> > y2 = t.*exp(-t).*cos(2*pi*t);> > plot(t,y1,’-.r’)> > hold on> > plot(t,y2,’b’)> > title(’Gráfico das funções y1 e y2, em função de t’)> > xlabel(’Tempo (s)’)> > ylabel(’Funções y1(t) e y2(t)’)> > axis([-1 7 -0.5 0.5])> > grid

6.2 Gráficos tridimensionais (3D)

6.2.1 Funçãoplot3

O análogotridimensional(3D) da funçãoplot é plot3 . Sex, y e z sãotrêsvectorescom igual compri-mento,plot3(x,y,z) geraumacurva 3D atravésdospontoscujascoordenadassãooselementosdex, y,andz. Estafunçãoproduzaindaumaprojecção2D dacurva3D noécran.Porexemplo,o seguintecódigopermite-nosgerarumahélice(Figura8),

[C. Vinhais,C. Abreu- DEFI, ISEP] 25

Page 26: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

Tabela10: Comandosparamanipulaçãodegráficos.xlabel Legendado eixoxxylabel Legendadoeixo yytitle Título dográficoaxis Permitealteraroslimitesdoseixosxxeyygrid Adicionarumagrelhano gráfico

gtext Permiteposicionartexto como ratotext Permiteposicionartexto emcoordenadasespecificadas

figure Criaumafigura(janela)paragráficohold on Permitemúltiplosgráficossobrepostosnosmesmoseixos

hold off Desactivao comandohold on

−1 0 1 2 3 4 5 6 7−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5Gráfico das funções y1 e y2, em função de t

Tempo (s)

Fun

ções

y1(

t) e

y2(

t)

Figura7: Representaçãográficadasfunçõesy1(t)ey2(t).

[C. Vinhais,C. Abreu- DEFI, ISEP] 26

Page 27: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

> > t = 0:pi/50:10*pi;> > plot3(sin(t),cos(t),t)> > grid on> > axis square

−1

−0.5

0

0.5

1

−1

−0.5

0

0.5

10

5

10

15

20

25

30

35

Figura8: Gráfico3D deumahélice.

Outrasfunçõesdo MATLAB permitemelaborargráficos2D/3D. Algunsexemplosrepresentativosdopotencialdo MATLAB, sãoapresentadosaseguir (Figuras9, 10,11):

> > load wind> > zmax = max(z(:)); zmin = min(z(:));> > streamslice(x,y,z,u,v,w,[],[],(zmax-z min)/ 2)> > [X,Y] = meshgrid(-3:.125:3);> > Z = peaks(X,Y);> > meshc(X,Y,Z);> > axis([-3 3 -3 3 -10 5])> > colormap gray> > [X,Y] = meshgrid([-2:.25:2]);> > Z = X.*exp(-X.^2-Y.^2);> > contour3(X,Y,Z,30)> > surface(X,Y,Z,’EdgeColor’,[.8 .8 .8],’FaceColor’,’none’)> > grid off> > view(-15,25)> > colormap gray

[C. Vinhais,C. Abreu- DEFI, ISEP] 27

Page 28: Apostila Matlab

6 GRÁFICOSNO MATLAB INTRODUÇÃO aoMATLAB

70 80 90 100 110 120 130 14015

20

25

30

35

40

45

50

55

60

Figura9: Exemplodeaplicaçãodafunçãowind .

−3−2

−10

12

3

−3

−2

−1

0

1

2

3−10

−5

0

5

Figura10: Exemplodeaplicaçãodafunçãomeshc.

[C. Vinhais,C. Abreu- DEFI, ISEP] 28

Page 29: Apostila Matlab

7 ESTRUTURAS DE CONTROLO DE FLUXO INTRODUÇÃO aoMATLAB

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2

−2

−1

0

1

2

−0.5

−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

0.5

Figura11: Exemplodeaplicaçãodafunçãocontour3 .

7 Estruturas decontrolo defluxo

O MATLAB contemcincoestruturasdecontrolodefluxo docódigo,funcionandoemmoldessemelhantesaoutraslinguagensdeprogramação:

if A estruturaif avalia umaexpressãológica e executaum conjuntode afirmações(statements) quandoestaé verdadeira. As expressões(keywords) optionaiselseif e else , permitema execuçãodeconjuntosdeafirmaçõesalternativas.O códigoa executar, abrangidopelaestruturaif , é terminadopelaexpressãoend enãoenvolveo usodeparêntesescurvosouchavetas.

switch A estruturaswitch executagruposdeafirmaçõesbaseadano valor deumavariável ou expressão.As expressõescase e otherwise delimitamosdiferentesgrupos.Apenasé executadoo primeirocasoaocorrer. Estaestruturadevesempreconteraexpressãoend comodelimitador.

for Osciclos for repetemum grupodeafirmações,duranteum pré-determinadonúmerodevezes.Estaestruturadevesempreconteraexpressãoend comodelimitador.

while Oscicloswhile repetemumgrupodeafirmações,indefinidamente,enquantofor válidaumadeter-minadacondiçãológica.Estaestruturadevesempreconteraexpressãoend comodelimitador.

break A afirmaçãobreak permitesairantecipadamentedeumciclo for ou while .

No seguimentoestasestruturasserãoabordadascommaiorprofundidade,acompanhadasdeexemplos.

7.1 Estruturas if, elseif, else

A formageraldeumaestruturacondicionalif éaseguinte:

if condiçãoblocodeafirmações

end

O bloco de afirmaçõesapenasseráexecutado,se se verificar a veracidadeda condição,isto é semprequefor avaliadacomoverdadeira.É aindapossível procedera ramificações,comoseilustra no seguinteexemplo:

[C. Vinhais,C. Abreu- DEFI, ISEP] 29

Page 30: Apostila Matlab

7 ESTRUTURAS DE CONTROLO DE FLUXO INTRODUÇÃO aoMATLAB

> > if x < 1var1 = 0;elseif x == 5var1 = 1;elsevar1 = 2;end

É importantecompreendercomo os operadoresrelacionaise asestruturasde controlode fluxo, trabal-hamemconjunto.OsoperadoresrelacionaisdoMATLAB estãorepresentadosnaTabela11. Denotarque

Tabela11: OperadoresrelacionaisdoMATLAB.< menordoque> maiordoque

<= menordo queou igual>= maiordo queou igual== igual��� desigual

“=” é empregueem afirmaçõesde atribuição(assignment) de valores,enquantoque“==” é usadonumarelação.Operaçõeslógicaspodemaindaserligadasou quantificadaspelosoperadoreslógicos,descritosnaTabela12. Quandoaplicadasaescalares, asrelaçãodosdoisquadrosanterioresresultamsimplesmentenoescalar

Tabela12: Operadoreslógicosdo MATLAB.& e| ou� não

1 ou 0 dependendosea relaçãofor verdadeiraou falsa.Experimentedigitar nalinha decomando2 < 4,4 > 2, 5 == 7, e 9 == 9.Quandoaplicadasa matrizes comasmesmasdimensões,a relaçãoresultanumamatrizdeuns(1 = ver-dadeiro)e zeros(0 = falso), isto é, estasoperaçõessãoexecutadaselementoa elemento(element-by-element). ExperimenteA = rand(4) , B = triu(A) , A == B. Seasmatrizesnãotiveremasmesmasdi-mensões,a relaçãoresultaemerro.

7.2 switch ecase

A estruturaswitch executablocosdeafirmações,baseadono valor deumavariável ou expressão.A ex-pressãocase eotherwise delimitaosblocos.Apenasaprimeiraocorrênciaéexecutada,devendosempreexistir um end paracadaswitch . No seguimentoé ilustradoo usodestaestrutura

> > switch (rem(n,2) == 0)case 0, disp(’n é par’)case 1, disp(’n é ímpar’)otherwise, error(’Sem solução’)end

7.3 for

O ciclo for repeteum bloco de afirmaçõesum númerofixo, pré-determinado,de vezes. A estruturaédelimitadacomaexpressãoend .

[C. Vinhais,C. Abreu- DEFI, ISEP] 30

Page 31: Apostila Matlab

8 SINAIS E ANÁLISE DE SISTEMAS INTRODUÇÃO aoMATLAB

Comoexemplo,temoso seguintecódigoqueproduzn-vectoreslinha,

> > x = []; n = 4;> > for i = 1:nx = [x, iˆ2]end

7.4 while

O ciclo while repeteumblocodecódigoindefinidamente,sobo controlodeumacondiçãológica.O cicloé quebradoquandoa condiçãodeixardeserválida(falsa).O corpodo ciclo é delimitadocoma expressãoend .Por exemplo,paraum dadonúmeroa, o códigoquesesegue irá calculare apresentaro menorinteironão-negativo n tal que,2n � a :

> > n = 0;> > while 2ˆn < an = n + 1;end> > n> > ...

7.5 break

A expressãobreak permitesairantecipadamentedeumciclo for ouwhile . Noscasosdeciclosemescada(nesting), break permiteapenassairdociclo maisinterno.

8 SinaiseAnálise deSistemas

Nestecapítulovãoserapresentadososprincipaiscomandosrelacionadoscomateoriadesinaiseanálisedesistemas.Todososcomandosapresentados,possuemaindaum vastolequedeopçõespermitindoextendero seudomíniodeaplicabilidade.

8.1 Polinómios

Ospolinómiossurgemcombastantefrequêncianateoriadesistemas.O MATLAB representapolinómiossobaformadevectoreslinha,emqueasrespectivasentradassãooscoeficientesdopolinómioconsiderado.Porexemplo,o polinómio2x3 � 3x2 � 5x � 10 é representadono MATLAB digitando:

> > g = [2 -3 5 -10]

Na Tabela13, é apresentadauma lista doscomandosmais importantesna manipulaçãode polinómios.

Tabela13: Principaiscomandosparamanipulaçãodepolinómios.roots(p) Cálculodasraízesdeumpolinómiopolyval(p,x) Estudodo polinómio p nospontosdefinidosnovectorxconv(p1,p2) Convoluçãoemultiplicaçãopolinomialdeconv(p1,p2) Desconvoluçãoedivisãopolinomialpoly(r) Conversãodeum vectorderaízesr numpolinómio

[C. Vinhais,C. Abreu- DEFI, ISEP] 31

Page 32: Apostila Matlab

8 SINAIS E ANÁLISE DE SISTEMAS INTRODUÇÃO aoMATLAB

8.2 Análisede Fourier

Os principaiscomandosrelacionadascom análisede Fourier, encontram-sedescritasna Tabela14: O

Tabela14: PrincipaiscomandosparaanálisedeFourier.dftmtx TransformadaDiscretadeFourier(DFT)fft TransformadaRápidadeFourier(FFT)ifft TransformadaRápidadeFourierInversafftshift TrocadequadrantenaFFT

comandodftmtx utiliza umasintaxe muito directaparao cálculoda TransformadaDiscretade Fourier(DFT). Apósdefinir umvectorx, a transformadaDFT podeserobtidapor:

> > X = dftmtx(x)

Paracalculara DFT inversade umamatriz X, seránecessáriodigitar o seguintecódigona linha de co-mando,

> > x = conj(dftmtx(X))/X

A TransformadaRápidade Fourier (FFT) de umasequênciade números,é calculadausandoo coman-do fft doseguintemodo,

> > X = fft(x)

emquea sequênciax[n] éarmazenadanovectorx.

O comandoifft permitecalculara transformadaFFT inversa,

> > x = ifft(X)

8.3 Análisede SistemasContínuosno tempo

8.3.1 Representaçãode Funçõesde Transferência

Osprincipaiscomandosrelacionadascomfunçõesdetransferência,encontram-sedescritasnaTabela15.

Tabela15: Principaiscomandospararepresentaçãodefunçõesdetransferência.tf2zp Conversãodafunçõesdetransferênciaparazero-polezp2tf Conversãodezero-poleparaa funçãodetransferênciafeedback Ligaçãofeedback dedoissistemasparallel Ligaçãoemparalelodedoissistemasseries Ligaçãoemsériededoissistemas

As funçõesdetransferênciasãodefinidosno MATLAB armazenandooscoeficientesdo numeradoredenominador, soba formadevectores.Istoé,dadaumafunçãodetransferênciacontínuano tempo:

H � s� � B � s�A � s�

ondeB � s� � bMsM � bM � 1sM � 1 ��� � � � b0 e A � s� � sN � aN � 1sN � 1 ��� � � � a0. OscoeficientesdeB � s� eA � s� sãoarmazenadosnosvectores:num = [ bM bM � 1 ... b0] e den = [1 aN � 1 ... a0] .

[C. Vinhais,C. Abreu- DEFI, ISEP] 32

Page 33: Apostila Matlab

8 SINAIS E ANÁLISE DE SISTEMAS INTRODUÇÃO aoMATLAB

8.3.2 Simulaçõestemporais

A soluçãoanalíticaparaencontrara respostatemporalde um sistema,requereo cálculoda Transforma-da Inversade Laplaceda funçãode saídaY � s� . O MATLAB permitefazê-locom auxílio do comandoresidue . Apósarmazenaroscoeficientesdo numeradore denominadordeY � s� nosvectoresnum e den ,respectivamente,digitandonalinha decomando,

> > [r, p, k] = residue(num, den)

permiteobterosresíduosem r , ospolosemp, eo ganhoemk .

Um processonuméricoimplementadono MATLAB, permiteencontrara respostade um sistemaa umafunçãodeentradaparticular. Tal é conseguido,armazenandopreviamenteoscoeficientesdo numeradoredenominadordafunçãodetransferêncianosvectoresnume den , digitando:

> > step(num, den)

A respostaimpulsionaldosistemapodeserrepresentadagraficamenteatravésdo seguintecomando:

> > impulse(num, den)

Outro comando,lsim , permiteconhecera respostado sistemaparauma funçãode entradaarbitrária.Paratal, é necessáriocria inicialmenteum vectort quecontenhavaloresdo tempoemsegundos,paraosquaissequeiraconhecerarespostadosistema.Usualmente,istoéfeito recorrendoaooperadorcolon“ : “,

> > t = a:b:c;

ondea representao instanteinicial, b o incrementoe c o instantefinal. Finalmente,definindoa entra-dax emfunçãodet, comoporexemplox � t � � t, épossível representara respostadigitando:

> > lsim(num, den, x, t)

Comoexemplo,o códigoseguintepermiterepresentargráficamenteo resultadodo comandostep , istoéa respostaemdegraudeumsistema(verFigura12),

> > num = [2 3]; den = [1 4 0 5];> > t = 0:5/300:5;> > y = step(num, den, t);> > plot(t, y)> > xlabel(’t (s)’)> > ylabel(’Step Response’)> > title(’Representação da resposta de um sistema’)

Paraobtera respostaimpulsional,bastaapenassubstituiro comandostep por impulse , comosesegue:

> > y = impulse(num, den, t);

Finalmente,representara funçãorespostaa umadeterminadaentradaarbitráriax, é conseguidaatravésdo seguintecódigo:

> > y = lsim(num, den, x, t);> > plot(t, y)

[C. Vinhais,C. Abreu- DEFI, ISEP] 33

Page 34: Apostila Matlab

9 INTERPOLAÇÃO E AJUSTEDE CURVAS INTRODUÇÃO aoMATLAB

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5−1

−0.5

0

0.5

1

1.5

2Representação da resposta em degrau de um sistema

t (s)

Res

post

a do

sis

tem

a

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5−1.5

−1

−0.5

0

0.5

1Representação da resposta impulsional de um sistema

t (s)

Res

post

a do

sis

tem

a

Figura12: Representaçãodarespostadeumsistema.

8.4 Análisede SistemasDiscretosno tempo

8.4.1 Convolução

De modoa realizarconvoluçõesdedoisvectores,a � n��� b � n� , bastadefinir osrespectivosvectoresa e b, eusaro comando:

> > y = conv(a, b)

Estecomandoassumequeos vectoresa e b sãocriadosno MATLAB, de maneiraa queo primeiro el-ementodeamboscorrespondema n � 0; condiçãonecessáriaparaqueo primeiroelementodo vectordesaíday sejao elementon � 0.O comandoconv podeaindaserusadonamultiplicaçãodepolinómios,ondeoscoeficientesdosrespec-tivospolinómiossãointroduzidoscomoelementosde vectores.Os elementosdo vector, nm = conv(n,m), serãoentãooscoeficientesdopolinómioresultantedamultiplicação,n � s� m � s� .Outro comando,deconv , representao procedimentoinversoda operaçãode convolução. Por outro la-do,estecomandopermiteaindaobteroscoeficientesdadivisãodepolinómios,c � s� � a � s

b � s , comosesegue:

> > c = deconv(a, b)

8.4.2 TransformadasdeLaplace eTransformadasZ

As transformadasde Laplacesãoumaimportanteferramentano estudode sistemascontínuos,enquantoqueastransformadasZ o sãono estudode sistemasdiscretos.Importantescomandosrelacionadoscomestastransformadas,encontram-sedescritosnaTabela16:

9 Inter polaçãoeajuste decurvas

9.1 Inter polação

Umadastécnicasmaisempreguesparaestimaro comportamentode umadeterminadafunçãoentredoispontosconsiderados,é a interpolação.A interpolaçãode umadadafunção,podeserfeita no MATLAB

[C. Vinhais,C. Abreu- DEFI, ISEP] 34

Page 35: Apostila Matlab

9 INTERPOLAÇÃO E AJUSTEDE CURVAS INTRODUÇÃO aoMATLAB

Tabela16: ComandosparamanipulaçãodeTransformadasdeLaplacee TransformadasZ.residue(n, d) Cálculoderesíduosdarazãoentrepolinómiosn(s)/d(s)lsim(SYS, u) Representaçãodarespostano tempodeSYSemfunçãodovectorustep(SYS) Representaçãodarespostadegrau(step)do sistemaSYSpzmap(n, d) Representaçãonumdiagramapolos-zerosdo sistemaSYSresiduez(n, d) Cálculoderesíduosdarazãoentrepolinómiosn(z)/d(z), escritacomofunçõesdez� 1

rlocus(SYS) Cálculo/ RepresentaçãodalocalizaçãodasraízesdeSYSimpulse(SYS) RepresentaçãodarespostaimpulsionaldeSYSzplane(z, p) Representaçãodo diagramapolos-zerosapartir devectoresdepolosezeros,p ez

atravésdoscomandos:interp1 e interp2 . O primeirocomandorealizaumainterpolaçãoa umadimen-são(1-D), enquantoqueo segundopermiterealizarumainterpolaçãobi-dimensional(2-D).

Umainterpolação1-D deumafunçãoy � f � x � , faz-sedigitandonalinhadecomando:

> > yi = interp1(x, y, xi, ’method’)

ondexi representao vectorcontendoo(s)ponto(s)a ser(em)interpolado(s),yi o vectorresultantedainter-polaçãodafunçãoy nospontosconsiderados,e ’method’um dosmétodosconsiderados:linear,primeirosvizinhos,splineecúbica(sendoo métodolinearconsideradopor defeito).No seguimento,mostra-seumexemplodeaplicaçãodainterpolaçãocomo métodolinear e spline paraa funçãoy � cos� x � ; verFigura13.

> > x = -2*pi:2*pi; y = cos(x); xi = -2*pi:.25:2*pi;> > yi = interp1(x, y, xi, ’linear’); plott(xi, yi, ’r’); hold on; grid on> > yi = interp1(x, y, xi, ’spline’); plot(x, y, ’ok’, xi, yi)

−8 −6 −4 −2 0 2 4 6 8−1

−0.8

−0.6

−0.4

−0.2

0

0.2

0.4

0.6

0.8

1

Figura13: Interpolaçãodafunçãocos� x � , como comandointerp1 .

Comoexemplodeinterpolaçãobi-dimensional,temos:

> > [x, y, z] = peaks(15); [xi, yi] = meshgrid(-5:.2:5,-5:.2:5);> > zi = interp2(x, y, z, xi, yi); mesh(xi, yi, zi)

[C. Vinhais,C. Abreu- DEFI, ISEP] 35

Page 36: Apostila Matlab

9 INTERPOLAÇÃO E AJUSTEDE CURVAS INTRODUÇÃO aoMATLAB

Obs.: podeobterinformaçãomaiscompletasobreestescomandos,digitandonalinhadecomando:

> > help comando

9.2 O comandospline

Umasplinecúbicaé umacurva suave ajustadaaoconjuntodepontosconsiderados.A curva spline, entrecadapardepontos,é determinadapor um polinómiodo 3o grau,isto é cúbico.Estatécnicapermiteentãoobterumacurvasuave,aoinvésdainterpolaçãolinear, ondeospontossãounidoscomsegmentosderecta.A título deexemplosuponhamosquepretendemosdeterminara temperaturadeumsólidonumdetermina-do instante,conhecendopreviamenteaevoluçãodasuatemperaturano tempo.Istoé,

> > x = [0:10]; y = [0:2:10, 13, 15, 18, 23, 27];> > temp = spline(x, y, 7.2)

em queo escalartemp representaa temperaturacalculadano instante7.2 segundos,e ondeos vectoreslinhax ey contêmvaloresdo tempoedatemperaturacorrespondente,respectivamente.Casopretenderaindarepresentargraficamenteumacurva splinenoutro intervalo de tempos,bastagerarumnovo vectornewx, usando-ocomoterceiroargumentodo comandospline,comosesegue:

> > newx = [0:.1:10]; newy = spline(x, y, newx);> > plot(x, y, ’k’, newx, newy, ’r’, x, y, ’o’);> > grid;

9.3 Ajuste decurvaspelo métododosmínimosquadrados

O métododosmínimosquadradospermitefazerum ajustedecurvas,paraumconjuntodepontosadquiri-dos,por exemplo,numaexperiência. Ao tentartraçarumarectapelo conjuntode pontosrepresentadosnumsistemadeeixos,apenasum pardepontosirão fazerpartedarecta.O métodoanalíticodosmínimosquadrados,permiteentãoacharamelhorrectaqueseajusteaoconjuntodepontos,podendoacontecerquenenhumdospontospertençaàmesma.De notarqueestemétodoé muito distintodainterpolação,estudadanasecçãoanterior, dadoquenainter-polaçãoacurvaajustadapassapor todosospontos.

9.3.1 Regressãolinear

Estemétodoconsistenoajustedeumarecta(ajustelinear),aoconjuntodepontosconsiderados.Comore-sultadodesteprocesso,éobtidoaequaçãodarectay � a � bx; calculadaatravésdosomatóriodosmínimosquadradosdasdistânciasentrea rectaeospontos.No exemploseguinte,é feita umaregressãolinearaoconjuntodepontosdatemperaturado sólidodo ex-emploanterior.

> > x = [0:10]; y = [0:2:10, 13, 15, 18, 23, 27];> > y1 = 2.5*x;> > plot(x, y1, x, y, ’o’)

Paraseter umaideia da qualidadedo ajuste,é necessáriocalculara distância,segundoo eixo vertical,de cadapontoà rectaestimada,e somarposteriormenteos quadradosdasmesmascom o comandosum,comosesegue:

> > somadist = sum((y-y1).ˆ2);

O melhorrectaajustada,seráaquelaqueminimizao valordoescalarsomadist .

[C. Vinhais,C. Abreu- DEFI, ISEP] 36

Page 37: Apostila Matlab

9 INTERPOLAÇÃO E AJUSTEDE CURVAS INTRODUÇÃO aoMATLAB

9.3.2 O comandopolyfit

Estecomandopermitecalcularanalíticamenteoscoeficientesdopolinómioaajustaraoconjuntodepontos.O comandopolyfit possuiaseguintesíntaxe: polyfit(x, y, N) , ondeN representao graudopolinómio.Usandoo casodaevoluçãodatemperaturadeumsólidono tempo,temoso seguinteexemplodeaplicaçãodafun çãopolyfit (1o grau):

> > x = [0:10]; y = [0:2:10, 13, 15, 18, 23, 27];> > coef = polyfit(x,y,1);> > b = coef(1), a = coef(2)b =

2.5818a =

-1.4545> > ybest = a + b*x;> > somabest = sum((y-ybest).ˆ2)somabest =

19.4909> > y1 = 2.6*x;> > somadist = sum((y-y1).ˆ2)somadist =

45.8000> > plot(x, ybest, x, y1, ’r’, x, y, ’o’); grid on> > title(’Curva de variação da temperatura de um sólido’)> > xlabel(’Tempo (min)’); ylabel(’Temperatura (Graus Celsius)’)> > gtext({’Recta mais provável’,’y = -1.4545 + 2.5818x’})> > gtext({’y1 = 2.6x’})

Na Figura14, encontram-serepresentadasasduasrectasajustadasdo exemplosupracitado,ondea rec-ta maisprovável é obtidapelousodo comandopolyfit .

0 1 2 3 4 5 6 7 8 9 10−5

0

5

10

15

20

25

30Curva de variação da temperatura de um sólido

Tempo (min)

Tem

pera

tura

(G

raus

Cel

sius

)

Recta mais provávely = −1.4545 + 2.5818x

y1 = 2.6x

Figura14: Exemplodeaplicaçãodo comandopolyfit , no ajustedacurvadetemperaturadeum sólido.

[C. Vinhais,C. Abreu- DEFI, ISEP] 37

Page 38: Apostila Matlab

10 CRÉDITOS INTRODUÇÃO aoMATLAB

10 Créditos

Algumassecçõesdestetutorial foram em partebaseadasem trabalhosanteriores,aosquaisos presentesautoresprestamosseusagradecimentos:

- Introductionto MATLAB, ThomasF. Weiss,September9, 1999

- MATLABPrimer, Third Edition, K. Sigmon,1993

- Gettingstartedwith MATLAB, Version5, MathWorks,Inc, September1998

[C. Vinhais,C. Abreu- DEFI, ISEP] 38

Page 39: Apostila Matlab

ÍndiceÁlgebraMatricial, MATLAB, 17Álgebra,VectorialeMatricial, 13Âmbito global(Globalscope),Variáveis,10Âmbito local (Local scope),Variáveis,10

abs,Comando,12,13,19acos,Função,19adição(+), Operador, 7, 17Ajuste,Qualidadedo,36Aleatoriamente,Númerosgerados,10all, Comando,19AnálisedeFourier, 32AnálisedeSistemas,31angle,Comando,12,13Anotações,Gráficos,25ans,Variável, 14any, Comando,19Argumentos,FunçõesdoMATLAB, 21Arquimedes,Constantede,12asin,Função,19atan,Função,19atribuição(=), Operador, 7axis,Comando,25,27

bar, Comando,24Binários(binaries),Ficheiros,10break,Keyword,29,31Built-in functions,MATLAB, 9, 15

Cúbica,Interpolação,35case,Keyword,29,30ceil, Função,19Ciclos,MATLAB, 29clear, Comando,9Coeficientesdepolinómios,Cálculoanalítico,37Coeficientes,Polinómios,31colon(:), Operador, 14,16,33colormap,Comando,27Concatenação,Matrizes,16conj,Comando,12,13,32contour3,Comando,27Controlodefluxo, Estruturas,29,30Controlo,Sistemasde,5conv, Comando,31,34Convenções,Matrizes,14Convenções,Vectores,13Convolução,Vectores,34Cores,Gráficos,21,22cos,Função,18,19,35cov, Comando,19Curvas,Ajustede,36

Dados,Aquisiçãode,5deconv, Comando,31,34Delimitadores,Tabelas,11det,Função,20DFT, 32dftmtx, Comando,32diag,Comando,15,16Diagonalprincipal,Matrizes,16diary, Comando,11Difusa,Lógica,5Discretos,Sinaistemporais,22disp,Comando,30divisão(./) element-by-element,Operador, 18divisão(.\) element-by-element,Operador, 18divisãoàdireita(/), Operador, 17,18divisãoàesquerda(\), Operador, 17,18Divisão,Matrizes,18doc,Comando,9

eig,Função,20,21element-by-element,Operadores,18Elementos,Matrizes,16Elementos,Vectores,13elipsis(...), Operador, 7else,Keyword,29,30elseif,Keyword,29,30Emacs,Editor, 9EncapsulatedPostscript(.eps),Ficheiros,11end,Keyword,29,30Entrada,Funçãode,33error, Comando,30errorbar, Comando,24Escalares,11Escalares,MATLAB, 13Escalares,Operaçõeslógicas,30estrela(*), Operador, 17estrela(.*) element-by-element,Operador, 18Estruturacondicional,29Execução,Condicional,29exp, Função,19,25expm,Função,20expoente(.ˆ)element-by-element,Operador, 18expoente(ˆ), Operador, 17eye,Comando,15,16

Falsa,Relação,30feedback,Comando,32Feedback,Ligação,32FFT, 32fft, Comando,32fftshift, Comando,32

39

Page 40: Apostila Matlab

ÍNDICE INTRODUÇÃO aoMATLAB

figure,Comando,26floor, Função,19for, Estrutura,29–31formatcompact,Comando,6format,Comando,6Formatos,Gravação,11Funções,MATLAB, 9, 10

Ganho,TrnasformadadeLaplace,33Gráficos2D, 21,24Gráficos3D, 25Gráficoslineares,21Gráficos,MATLAB, 11,21Gravação,11grid, Comando,25,27,36gtext, Comando,26,37

Hélice,Gráfico,25Help Desk,8, 9help,Comando,8, 36helpdesk,Comando,9helpwin,Comando,8hist,Comando,24holdoff , Comando,26holdon , Comando,26hold,Comando,25

if, Estrutura,29,30if ft, Comando,32imag,Comando,12,13Imaginária,Entidade,12Impressão,11impulse,Comando,33,35Incremento,Construçãodevectores,14Incremento,Linear, 14Incremento,Logarítmico,14Incremento,Simulaçõestemporais,33Instantefinal, Simulaçõestemporais,33Instanteinicial, Simulaçõestemporais,33interp1,Comando,35interp2,Comando,35Interpolação1D, 35Interpolação2D, 35Interpolação,MATLAB, 34inv, Comando,20inv, Função,20Inversa,DFT, 32Inversa,FFT, 32Invertível, Matriz, 18

JaneladeAjuda (Help Window), 8JaneladeComando,5, 8

Lógica,Condição,29Laplace,TransformadaInversa,33

Laplace,Transformadasde,34Legendas,Gráficos,25length,Comando,14Linear, Ajuste,36Linear, Interpolação,35,36Linha deComando,5, 9linspace,Comando,14,25Linux, 5, 9load,Comando,11,27log, Função,19log10,Função,19loglog,Comando,24logspace,Comando,14lsim, Comando,33,35

M-files, Ficheiros,5, 9, 10Mínimosquadrados,Método,36magic,Comando,7, 15MAT-files,Ficheiros,10Matemática,Notação,5MATLAB prompt,5MATLAB, Ambiente,9matlab,ComandodaShell,5Matriz diagonal,21Matrizes,Construção,15Matrizes,MATLAB, 11,14Matrizes,Operaçõeslógicas,30Matrizes,Tamanhode,15max,Comando,19,20mean,Comando,19median,Comando,19mesh,Comando,35meshc,Comando,27meshgrid,Comando,27,35min, Comando,19Multiplicação(element-by-element),Matrizes,18Multiplicação,Matrizes,18

Nesting,Ciclos,31Neuronais,Redes,5norm,Função,20Notepad,Editor, 9

ones,Comando,15Onlinereferencepages,8Operadoresaritméticos,12,17Operadoreslógicos,30Operadoresrelacionais,30otherwise,Keyword,29,30output,Ficheirosde,9output,Formataçãodo,5output,Qualidadede,11

parallel,Comando,32

[C. Vinhais,C. Abreu- DEFI, ISEP] 40

Page 41: Apostila Matlab

ÍNDICE INTRODUÇÃO aoMATLAB

peaks,Comando,27,35pi, Comando,12,22plot, Comando,21,22,25,33,35–37plot3,Comando,25,27plotyy, Comando,22polar, Comando,24Polinómios,Coeficientes,34Polinómios,Divisão,34Polinómios,MATLAB, 31Polinómios,Multiplicação,34Polos,TransformadadeLaplace,33Polos-zeros,Diagramas,35poly, Comando,20,31polyfit, Comando,37polyval, Comando,31Pontos,Ajustedecurvas,36Pontos,Interpolação,35Portabilidade,11Postscript(.ps),Ficheiros,11PrimeirosVizinhos,Interpolação,35print, Comando,11Processadoresdetexto, 9prod,Comando,19Programação,Linguagem,5Projecção2D, Gráficos,25

Quadrada,Matriz, 15,16quit, Comando,5

Raízes,Localização,35rand,Comando,10,15,16,30real,Comando,12Recursividade,M-files, 10Regressãolinear, 36rem,Comando,19,30Resíduos,TransformadadeLaplace,33residue,Comando,33,35residuez,Comando,35rlocus,Comando,35roots,Comando,31round,Função,19

Síntaxe,Funções,10Saída,Funçãode,33save,Comando,10Scripts,Ficheiros,9, 10semicolon(;), Operador, 6, 12semilogx,Comando,24semilogy, Argumento,24semilogy, Comando,24series,Comando,32Sessão,MATLAB, 9, 10SessõesdeMATLAB, Registo,11sign,Função,19

Simulaçõestemporais,33sin,Função,19,21,22Sinal,Processamentode,5Sistema,Respostado,33SistemasContínuos,32,34SistemasDiscretos,34Sistemas,Análisede,5Sistemas,Respostaemdegrau,33,35Sistemas,Respostaimpulsional,33,35Sistemas,Respostatemporalde,33size,Comando,14–17,20sort,Comando,19spline,Comando,36Spline,Interpolação,35,36sqrt,Função,19sqrtm,Função,20std,Comando,19stem,Comando,22,25step,Comando,33,35streamslice,Comando,27Suave,Curva,36Sub-matrizes,MATLAB, 16subplot,Comando,24,25Subscriptos,Matrizes,17subtração(-), Operador, 7, 17sum,Comando,19,20,36,37surface,Comando,27switch,Estrutura,29,30

Título, Gráficos,25tan,Função,19Teclasdecontrolo,7Teoriadesinais,31text, Comando,26Texto, Ficheiros,11tf2zp,Comando,32tilde (’), Operador, 13,17tilde (.’) element-by-element,Operador, 18Tiposdelinhas,Gráficos,22title, Comando,25,33Toolboxes,5Transferência,Funçõesde,32,33TransformadaDiscretadeFourier(DFT), 32TransformadaRápidadeFourier(FFT),32Transposto,Vector, 13triu, Comando,30

Unix, 9User-definedfunctions,MATLAB, 9

Valorespróprios,Vectores,21Variáveiscomplexas,12,13Variáveis,MATLAB, 11Variáveis,Salvaguarda,10

[C. Vinhais,C. Abreu- DEFI, ISEP] 41

Page 42: Apostila Matlab

ÍNDICE INTRODUÇÃO aoMATLAB

Variáveis,Sessões,9Vectorescoluna,13,16Vectoreslinha,6, 13,14Vectorespróprios,21Vectores,MATLAB, 13Veracidade,Condiçãode,29Verdadeira,Relação,30view, Comando,27Vim, Editor, 9Visualização,Múltiplos gráficos,24

WebBrowser, 8, 9while, Estrutura,29,31who,Comando,9whos,Comando,9Win32,Arquitectura,5Wordpad,Editor, 9Workspace,MATLAB, 9, 10,12

xlabel,Comando,25,33

ylabel,Comando,25,33

Z, Transformadas,34zeros,Comando,15,16zp2tf,Comando,32zplane,Comando,35

[C. Vinhais,C. Abreu- DEFI, ISEP] 42