Apostila Matlab
-
Upload
elson-junior -
Category
Documents
-
view
799 -
download
3
Transcript of 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)
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
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
LISTA DE TABELAS INTRODUÇÃO aoMATLAB
16 ComandosparamanipulaçãodeTransformadasdeLaplaceeTransformadasZ. . . . . . . 35
[C. Vinhais,C. Abreu- DEFI, ISEP] 4
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Í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
Í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
Í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
Í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