58
Universidade Federal Fluminense Escola de Engenharia Curso de Engenharia de Telecomunicações Programa de Educação Tutorial Grupo PET-Tele Apostila de Introdução ao Octave/Matlab (Versão: A2011M11D01) Niterói - RJ Novembro / 2011

MATLAB

Embed Size (px)

Citation preview

  • Universidade Federal FluminenseEscola de Engenharia

    Curso de Engenharia de TelecomunicaesPrograma de Educao Tutorial

    Grupo PET-Tele

    Apostila de Introduo ao Octave/Matlabr(Verso: A2011M11D01)

    Niteri - RJNovembro / 2011

  • Prefcio

    Tendo em vista as diretrizes do MEC em pesquisa, ensino e extenso, o Programa deEducao Tutorial (PET) do curso de Engenharia de Telecomunicaes da UniversidadeFederal Fluminense (UFF) desenvolveu um projeto de elaborao de apostilas e cursosvoltados para a graduao. O intuito desse trabalho auxiliar alunos no aprendizado detemas importantes para sua formao, que no esto presentes em nenhuma das disci-plinas, e, alm disso, servir de material didtico para cursos de capacitao ministradospelos bolsistas do Programa aos corpos discente e docente da graduao.

    Abaixo segue a lista de apostilas preparadas nesse projeto.

    HTML - linguagem de programao para hipertextos, empregada, principalmente, naconstruo de pginas da Internet (webpages).

    LaTeX - sistema de edio de texto largamente utilizado em meios acadmicos e cient-ficos, bem como por editoras nacionais e internacionais.

    Linux - introduo ao sistema operacional LINUX.

    Linguagem C - linguagem de programao amplamente utilizada em problemas de en-genharia e computao.

    MATLAB - ambiente de simulao matemtica, utilizado em diversas reas profissio-nais.

    Spice - ambiente de simulao de circuitos eltricos (analgicos e digitais), utilizado emprojeto de circuitos discretos e integrados.

    Este documento destina-se a introduzir o usurio ao ambiente do Matlabr .Sabendo-se da imensa quantidade de funes e da existncia de um acervo de docu-

    mentao prprio includo no programa, esta apostila no pretende esgotar o tema comoum manual. Ela destina-se a introduzir, de forma sucinta, o usurio ao ambiente do pro-grama, mostrando e exemplificando as ferramentas bsicas de utilizao do mesmo. Paramaiores informaes e um estudo mais aprofundado, consulte as referncias bibliogrficasno fim do documento.

    muito importante, para um melhor aprendizado, que o leitor esteja em frente aum computador com o software instalado. medida que se l a apostila, comandos eoperaes devem ser testados no programa.

    Interessa ainda mencionar que sero destacados, ao longo das pginas, comandos efunes teis s disciplinas do curso de Engenharia de Telecomunicaes, organizadas emsees relativas a suas aplicaes.

  • Verso atual: Carina Ribeiro Barbio Corra

    ltimas atualizaes: Mariana da Costa SantosIsabella Frana e FranaBeatriz Costa RibeiroVitor de Souza LimaAlexandre Santos de la Vega

    Este documento de distribuio gratuita, sendo proibida a venda de parte ou dantegra do documento.

  • Sumrio

    Prefcio i

    1 Introduo 11.1 Informaes iniciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 Janelas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.3 Ajuda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.4 Bibliotecas do Matlabr . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2 Variveis 52.1 Declarao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Manipulao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Variveis pr-definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3 Nmeros e matrizes 73.1 Representao numrica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Formatos de visualizao de nmeros . . . . . . . . . . . . . . . . . . . . . 73.3 Definio de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83.4 Indexao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    4 Operaes com matrizes 134.1 Operaes aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134.2 Operaes lgicas e relacionais . . . . . . . . . . . . . . . . . . . . . . . . . 14

    5 Funes matriciais 175.1 Matrizes elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.2 lgebra linear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.3 Informaes matriciais bsicas . . . . . . . . . . . . . . . . . . . . . . . . . 195.4 Manipulao de matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195.5 Anlise de dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    6 Funes matemticas elementares 236.1 Funes trigonomtricas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.2 Funes exponenciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236.3 Funes complexas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246.4 Funes de arredondamento e resto . . . . . . . . . . . . . . . . . . . . . . 24

    7 Funes polinomiais 27

    iii

  • iv Sumrio

    8 Grficos 298.1 Grficos de duas dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . 298.2 Grficos de trs dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . . 338.3 Funes auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

    9 Funes polinomiais racionais complexas 39

    10 Programao 4310.1 Funes e scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4310.2 Controle de fluxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    10.2.1 Estruturas condicionais . . . . . . . . . . . . . . . . . . . . . . . . . 4410.2.2 Estruturas de repetio . . . . . . . . . . . . . . . . . . . . . . . . . 46

    A Funes relativas a aproximaes para filtros seletores em frequncia 49A.1 Butterworth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49A.2 Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50A.3 Elptico (Cauer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    PETTele)) UFF

  • Captulo 1

    Introduo

    1.1 Informaes iniciais

    O Matlabr (abreviatura de MATrix LABoratory - Laboratrio de Matrizes) um soft-ware de simulao matemtica que realiza operaes matriciais, constri grficos em duasou trs dimenses, auxilia no processamento de sinais, alm de manipular outras funesespecializadas.

    Ele trabalha com uma linguagem de programao de alto nvel, em um ambienteinterativo, para o desenvolvimento de algoritmos, anlise e visualizao de dados e com-putao numrica. Prprio para as reas tcnica e cientfica, o software tem funes detratamento numrico de alto desempenho, capazes de resolver problemas computacionaistcnicos de forma mais eficiente do que as tradicionais linguagens de programao.

    Alm do ambiente interativo, outra facilidade do Matlabr a possibilidade de exe-cuo de arquivos texto, contendo uma sequncia de instrues definidas pelo usurio.Esses arquivos texto, que tm extenso .m, podem ser criados e editados dentro ou forado seu ambiente.

    1.2 Janelas

    Atravs de objetos grficos denominados janelas, o usurio opera as funcionalidades doprograma de forma interativa.

    A janela principal do Matlabr chama-se Command Window (Janela de Comando),onde os dados e instrues so digitados no prompt >> pelo usurio e, aps a tecla Enterser pressionada, o programa os processa imediatamente e expe na tela o resultado. Oscomandos digitados so armazenados em um buffer de comandos, no qual pode-se navegarusando as teclas seta-para-cima e seta-para-baixo . Alm disso, teclando-se o textostr, por exemplo, e usando-se as setas e , navega-se por todos os comandos iniciadoscom o texto str. A tecla Esc limpa o que estiver escrito na linha do comando.

    Comandos terminados com ponto-e-vrgula no exibem as variveis de resposta na tela.O uso do ponto-e-vrgula til quando a impresso do resultado na tela no interessa, ouquando a impresso muito extensa como, por exemplo, para uma matriz 1000 1000.Deve-se ressaltar que, apesar da impresso ser suspensa, o comando executado peloprograma.

    Vrios comandos podem ser digitados na mesma linha, desde que estejam separados

    1

  • 2 Captulo 1. Introduo

    por vrgula ou ponto-e-vrgula. Comandos muito longos para uma linha podem ser in-terrompidos por trs pontos ... e continuados na linha seguinte. O exemplo a seguir ilustrativo quanto a esses detalhes.

    >> a=1, b=...2; c=a+b

    a =1

    c =3

    importante apontar que a Janela de Comando normalmente usada para testesde comandos e funes ou simples operaes. Quando se deseja implementar algum pro-grama, projeto ou trabalho, utiliza-se o M-File Editor. Neste editor, cria-se um arquivotexto .m com os comandos desejados. Para abrir um novo arquivo-M, clique em File >New > M-file ou simplesmente digite o comando edit. Aps escrever o programa, pode-seexecut-lo pela tecla de atalho F5.

    Alm da Janela de Comando e do Editor de Arquivo-M, h ainda as janelas Help,Command History, Current Directory e Workspace, que esto respectivamente relaciona-das com ajuda, histrico dos ltimos comandos digitados, diretrio corrente do programae o espao de trabalho onde se visualizam dados e variveis. Essas janelas podem sermantidas fechadas ou abertas, dependendo da necessidade ou gosto do usurio. Essasoutras janelas no so detalhadas nesse documento.

    1.3 Ajuda

    Atravs do comando help, o usurio pode consultar a ajuda do Matlabr . Escrevendo-se help e o nome da funo, mostrado um pequeno resumo da funo (normalmente deuma linha) seguido de uma descrio mais detalhada da mesma.

    >> help onesONES Ones array.

    ONES(N) is an N-by-N matrix of ones.ONES(M,N) or ONES([M,N]) is an M-by-N matrix of ones.ONES(M,N,P,...) is an M-by-N-by-P-by-... array of ones.ONES(SIZE(A)) is the same size as A and all ones.See also ZEROS.

    possvel, ainda, procurar por funes cujos resumos contenham determinada palavra-chave. Para isto, basta digitar o comando lookfor seguido da palavra desejada. Caso sequeira interromper a busca, deve-se teclar CTRL+C.

    PETTele)) UFF

  • 1.4. Bibliotecas do Matlabr 3

    >> lookfor onesONES Ones array. SPONES Replace nonzero sparse matrix elementswith ones. SLUPDATE Replace blocks from a previous release withnewer ones. FPUPDATE Replace blocks from a previous release withnewer ones. FPUPDT Replace older 1.x blocks with newer 1.1 ones.BUFFERM buffer zones for vector data. ONEM Constructs a regularmatrix map of all ones. UPDATEXPCENV Updates the new Environmentsettings to become the current ones. DRAMADAH Matrix of zeros andones with large determinant or inverse.

    1.4 Bibliotecas do Matlabr

    O Matlabr apresenta uma srie de comandos, operadores e funes primitivas, orga-nizadas por categorias, assim como rotinas especficas de diversas reas da engenharia,organizadas em bibliotecas denominadas Toolboxes. Estas categorias e bibliotecas so de-signadas por tpicos primrios. Para a visualizao de todos estes tpicos, basta digitaro comando help.

    Alguns desses tpicos primrios so:

    general - comandos gerais ops - operadores e caracteres especiais control - biblioteca de sistemas de controles signal - biblioteca de processamento de sinais optim - biblioteca de otimizao

    Outras bibliotecas abrangem campos variados como aquisio e processamento deimagem, bio-informtica, telecomunicaes, lgica difusa e realidade virtual.

    Para se aprofundar mais em qualquer biblioteca, basta digitar o comando help tpico.

    UFF PETTele))

  • 4 Captulo 1. Introduo

    PETTele)) UFF

  • Captulo 2

    Variveis

    2.1 Declarao

    Dado que o programa oferece um ambiente de execuo de uma linguagem interpretada,uma caracterstica conveniente do Matlabr que as variveis no precisam ser dimen-sionadas antes do uso, pois so geradas automaticamente ao serem utilizadas. Para criare/ou armazenar informaes em variveis definidas pelo usurio, basta digitar o nome davarivel seguido do sinal de igual = e da expresso desejada. Na escolha dos nomes dasvariveis, devem ser obedecidos os seguintes critrios:

    os caracteres podem ser alfanumricos (letras e nmeros), desde que iniciados porletras;

    letras maisculas e minsculas definem nomes diferentes (linguagem case sensitive);

    o caracter (underscore,underline ou sublinhado) pode ser usado no meio do nome;

    so permitidos nomes com, no mximo, 32 caracteres.

    Caso seja executada uma expresso que gere um valor como resultado e, nessa expres-so no haja uma atribuio do resultado para alguma varivel definida pelo usurio, oresultado ser armazenado na varivel ans, pr-definida pelo ambiente.

    2.2 Manipulao

    Existem comandos prprios para manipulao de variveis. Abaixo esto listados os maisutilizados.

    who: Lista os nomes das variveis.

    whos: Lista o nome e o tipo das variveis.

    clear: Elimina todas as variveis da rea de trabalho. Para se apagar uma ou maisvariveis utiliza-se o comando clear seguido dos nomes das variveis separadas porespao.

    5

  • 6 Captulo 2. Variveis

    save: Salva as variveis em arquivo, podendo utiliz-las novamente na prxima vezque o programa for inicializado ou mesmo quando executado o comando clear.

    load: Recupera as variveis previamente salvas em arquivo pelo comando save. clc: Limpa a janela de comandos.

    2.3 Variveis pr-definidasNo Matlabr , existem algumas variveis pr-definidas que podem ser teis ao usurio,as quais so listadas na Tabela 2.1.

    Varivel Representaoans Varivel padro para armazenar resultados.pi Razo entre o permetro da circunferncia e o seu dimetro.eps Preciso de ponto flutuante, ou distncia entre o 1 e o prximo nmero real.inf Infinito (por exemplo, resultado da diviso 1/0).NaN ou nan Not-a-Number ou valor no-numrico (exemplo: resultado de 0/0).i ou j Unidade numrica imaginria, igual a

    1.nargin Nmero de argumentos de entrada de uma funo.nargout Nmero de argumentos de sada de uma funo.realmin Menor nmero real positivo utilizvel.realmax Maior nmero real positivo utilizvel.bitmax Maior nmero inteiro positivo utilizvel.

    Tabela 2.1: Variveis pr-definidas.

    Caso o usurio defina e utilize uma varivel com o mesmo nome de alguma das variveisou das funes pr-definidas, ela funcionar como uma varivel comum, perdendo seusignificado original. Quando apagada, ela retornar ao seu comportamento pr-definido.

    >> i=999i =

    999>> clear i>> ians =

    0 + 1.0000i

    PETTele)) UFF

  • Captulo 3

    Nmeros e matrizes

    3.1 Representao numrica

    Todas as informaes numricas do Matlabr so armazenadas sob a forma de matrizes.Se, por exemplo, for digitado o nmero 5 no ambiente do programa, este valor serinterpretado como uma matriz de dimenso 11.

    Nmeros negativos, com casas decimais, complexos e sob a forma de notao cientficapodem ser representados no Matlabr usando-se a seguinte simbologia:

    nmeros negativos: ;Ex.: 5

    nmeros com casas decimais: . ;Ex.: 3.2

    nmeros complexos: i ou j (como sufixos, direita da parte imaginria, ou comofunes, equivalentes raiz quadrada de -1);

    Ex.: 3 + 5i, 3 + 5j, 3 + 5 i, 3 + 5 j, 3 + i 5, 3 + j 5, 3 + 5 sqrt(1) e3 + sqrt(1) 5.

    notao cientfica: e ou E.Ex.: 5e3 (equivalente a 5 103) e 2e 4 (equivalente a 2 104)

    3.2 Formatos de visualizao de nmeros

    Todos os clculos so executados no Matlabr com aritmtica de dupla preciso. Avisualizao dos nmeros nas janelas Command Window e Workspace, entretanto, podeser feita em diversos formatos. Por definio, o Matlabr exibe os resultados em trsformatos diferentes: inteiro, real com quatro casas decimais ou em notao cientfica,adotando aquela que melhor convier.

    Esse comportamento padro pode ser alterado clicando-se em File > Preferences, ousimplesmente digitando na Janela de Comando a instruo format seguida do formatoespecfico. A Tabela 3.1 ilustra cada um deles, exibindo o nmero

    2 como exemplo.

    7

  • 8 Captulo 3. Nmeros e matrizes

    Comando2 Comentrio

    format short 1.4142 5 dgitos (ponto fixo).format long 1.41421356237310 15 dgitos (ponto fixo).format short e 1.4142e+000 5 dgitos e expoente (ponto flutuante).format long e 1.414213562373095e+000 15 dgitos e expoente (ponto flutuante).format short g 1.4142 O melhor entre short e short e.format long g 1.4142135623731 O melhor entre long e long e.format hex 3ff6a09e667f3bcd Hexadecimal em ponto flutuante.format + + Positivo +, negativo ou zero .format bank 1.41 2 casas decimais representando moeda.format rat 1393/985 Aproximao racional.format debug Structure address = 12ac208 short g e informaes sobre

    m = 1 armazenagem interna.n = 1pr = 12600c0pi = 0

    1.4142

    Tabela 3.1: Formatao da visualizao de resultado numrico.

    3.3 Definio de matrizes

    Existem diversas formas de se montar uma matriz. A mais simples delas utiliza elementosdenominados aglutinadores, representados simbolicamente por colchetes, [ e ] . Afuno dos aglutinadores consiste em concatenar (encadear), horizontalmente ou verti-calmente, dados de um mesmo tipo, podendo formar matrizes numricas ou vetores decaracteres (strings).

    O exemplo abaixo mostra a concatenao de duas palavras com um espao no meio,todos definidos entre aspas simples (tipo caracter).

    >> a=Duas;>> b= ;>> c=palavras.;>> [a b c]ans =Duas palavras.

    Entendido o conceito de aglutinao, que ser muito utilizado daqui em diante, torna-se fcil a tarefa de definir uma matriz. Uma matriz montada linha aps linha, ondeespao ou vrgula indicam transio de coluna e ponto-e-vrgula indica transio de linha.

    PETTele)) UFF

  • 3.3. Definio de matrizes 9

    >> [1,2;3,4]ans =

    1 23 4

    >> [ans [5;6]]ans =

    1 2 53 4 6

    Outra maneira de definir matrizes consiste em criar vetores-linha com elementos emprogresso aritmtica, atravs da simples sintaxe:

    valor_inicial : incremento : valor_final

    onde os valores fornecidos no precisam ser necessariamente inteiros.Basicamente, o primeiro elemento do vetor criado corresponde ao valor inicial e os

    elementos seguintes so acrescidos do passo (ou incremento), de tal maneira que nuncaultrapasse o valor final. Caso o incremento seja omitido, ele ser entendido como igual a1.

    >> 1:5:20ans =

    1 6 11 16

    >> 2.71 : 5.71ans =

    2.7100 3.7100 4.7100 5.7100

    Uma terceira forma de criar vetores utiliza a funo linspace, que espaa linearmenteum determinado nmero de elementos entre um valor final e um inicial. Sua sintaxe :

    linspace(valor_inicial, valor_final, nmero_de_elementos)

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

    0 2.5000 5.0000 7.5000 10.0000

    A funo logspace similar, porm espaa os elementos logaritmicamente na base10. Uma diferena muito importante em sua sintaxe que os valores iniciais e finais sopotncias de 10, devendo ser escritos apenas seus expoentes.

    >> logspace(0,1,5)ans =

    1.0000 1.7783 3.1623 5.6234 10.0000

    Existem muitas outras formas de se criar uma matriz. Apenas a ttulo de curiosidade,a funo xlsread l uma matriz a partir de um arquivo XLS gerado pelo programaMicrosoft Excelr .

    UFF PETTele))

  • 10 Captulo 3. Nmeros e matrizes

    3.4 IndexaoO padro de indexao matricial no Matlabr a forma tradicional intuitiva (r, c), onder representa o nmero da linha e c representa o nmero da coluna.

    >> m=[.1 .2 .3 .4 .5 ; .6 .7 .8 .9 1 ; 1.1 1.2 1.3 1.4 1.5]m =

    0.1000 0.2000 0.3000 0.4000 0.50000.6000 0.7000 0.8000 0.9000 1.00001.1000 1.2000 1.3000 1.4000 1.5000

    >> m(2,5)ans =

    1

    Os elementos da matriz tambm podem ser indexados seqencialmente, conforme ilus-trado na Tabela 3.2.

    1 2 3 4 51 (1) 0.1 (4) 0.2 (7) 0.3 (10) 0.4 (13) 0.52 (2) 0.6 (5) 0.7 (8) 0.8 (11) 0.9 (14) 1.03 (3) 1.1 (6) 1.2 (9) 1.3 (12) 1.4 (15) 1.5

    Tabela 3.2: Indexao de elementos de uma matriz.

    >> m(5)ans =

    0.7000

    possvel selecionar mais de uma linha ou coluna, usando-se dois-pontos : entreos ndices inicial e final para indicar o intervalo. Quando os ndices inicial e final soomitidos, indica-se o intervalo inteiro. A palavra reservada end indica o fim da linha ouda coluna.

    >> m(3,1:4)ans =

    1.1000 1.2000 1.3000 1.4000

    >> m(:,5)ans =

    0.50001.00001.5000

    >> m(1,3:end)ans =

    0.3000 0.4000 0.5000

    PETTele)) UFF

  • 3.4. Indexao 11

    O conceito de indexao pode ser ampliado quando no lugar dos ndices colocam-sevetores ou matrizes de ndices.

    >> m([1 3],[2 4])ans =

    0.2000 0.40001.2000 1.4000

    >> m([1 5 9; 4 8 12])ans =

    0.1000 0.7000 1.30000.2000 0.8000 1.4000

    Caso se coloque um ndice que exceda as dimenses da matriz, o resultado ser umamensagem de erro. Por outro lado, se for definido um novo elemento que exceda essasmesmas dimenses, ento a matriz ser redimensionada de forma a incluir esse novoelemento, sendo as novas posies preenchidas com 0.

    >>m(4,6)=2.1ans =

    0.1000 0.2000 0.3000 0.4000 0.5000 00.6000 0.7000 0.8000 0.9000 1.0000 01.1000 1.2000 1.3000 1.4000 1.5000 0

    0 0 0 0 0 2.1000

    UFF PETTele))

  • 12 Captulo 3. Nmeros e matrizes

    PETTele)) UFF

  • Captulo 4

    Operaes com matrizes

    4.1 Operaes aritmticas

    As operaes aritmticas no Matlabr podem ser de dois tipos: matricial ou escalar.As operaes do tipo matricial referem-se s operaes matemticas sobre matrizes. Asoperaes escalares so tambm denominadas de operaes sobre conjuntos. Essas ltimasso realizadas elemento a elemento de cada matriz, aplicando-se o operador em questoapenas entre elementos de mesma posio matricial.

    Definindo-se x = [23; 57] e y = [16; 24], pode-se associ-los pelos seguintes operadores:

    + : adio (matricial e escalar).Ex.: x+ y = [3 9; 7 11]

    : subtrao (matricial e escalar).Ex.: x y = [1 3; 3 3]

    : multiplicao matricial.Ex.: x y = [8 24; 19 58]

    / : diviso matricial direita.Ex.: x/y = (x y1) = x inv(y) = [0.2500 1.1250;0.7500 2.8750] , onde:

    inv(m) uma funo que ser explicada na Seo 5.2.

    \ : diviso matricial esquerda.Ex.: x\y = (x1 y) = inv(x) y = [1.0000 30.0000; 1.0000 22.0000]

    : potenciao matricial.Ex.: x2 = x2 = (x x) = [19 27; 45 64]

    : transposio matricial.Ex.: x = xT = [2 5; 3 7]

    . : multiplicao escalar.Ex.: x. y = [2 18; 10 28]

    13

  • 14 Captulo 4. Operaes com matrizes

    ./ : diviso escalar direita.Ex.: x./y = (x. y.1) = [2.0000 0.5000; 2.5000 1.7500]

    .\ : diviso escalar esquerda.Ex.: x.\y = (x.1. y) = [0.5000 2.0000; 0.4000 0.5714]

    . : potenciao escalar.Ex.: x.2 = [4 9; 25 49]

    Observaes:

    1. Para operaes entre matriz e nmero escalar, o programa faz uma expanso escalardo nmero, executando a operao entre o nmero e cada elemento da matriz.

    Ex.: x+ 3 = x+ [3 3; 3 3] = [5 6; 8 10]

    2. A precedncia de operaes pode ser controlada utilizando-se parnteses.

    Ex.: ((x+ 3) x) = [28 46; 67 110]

    4.2 Operaes lgicas e relacionaisOs operadores relacionais e lgicos so usados em expresses lgicas booleanas para im-plementar testes de tomadas de deciso, fornecendo respostas do tipo verdadeiro/falso aperguntas. Para oMatlabr , qualquer nmero diferente de zero representa o valor lgicoverdadeiro, e zero representa o valor lgico falso.

    Os operadores relacionais e lgicos so apresentados na Tabela 4.1.

    Operador Descrio< Menor que Maior que>= Maior ou igual a== Igual a (no confundir com = )~= Diferente de& E| OU~ NO

    Tabela 4.1: Operadores relacionais e lgicos.

    interessante ressaltar que noMatlabr os operadores podem ser usados no somentecom escalares, mas tambm com vetores e matrizes, sendo a operao realizada elementoa elemento.

    PETTele)) UFF

  • 4.2. Operaes lgicas e relacionais 15

    >> a=-3; b=7;>> a> a> x=1:10x =

    1 2 3 4 5 6 7 8 9 10

    >> y=x>=5y =

    0 0 0 0 1 1 1 1 1 1

    UFF PETTele))

  • 16 Captulo 4. Operaes com matrizes

    PETTele)) UFF

  • Captulo 5

    Funes matriciais

    Qualquer funo no Matlabr tem como sintaxe geral o seguinte padro:

    [Sada1, ... , SadaN] = Nome (Entrada1, ... , EntradaN)

    Os parmetros de entrada devem ser postos na ordem adequada e representam osdados fornecidos pelo usurio. Eles so processados pela funo, que gera os parmetrosde sada, os quais so armazenados nas variveis definidas pelo usurio no comando dechamada da funo. Deve-se ressaltar que os parmetros de entrada so escritos dentro deparnteses e os de sada dentro de colchetes, segundo a sintaxe geral de funes e matrizes,respectivamente.

    Os parmetros de entrada podem ser fornecidos de duas formas: escrevendo-se dire-tamente o nmero ou matriz, ou escrevendo-se o nome da varivel correspondente.

    Caso as variveis de sada no sejam fornecidas pelo usurio, o programa retornaapenas a primeira sada (Sada1 ) na varivel padro ans.

    Abaixo, so apresentadas algumas das funes mais utilizadas para criao e manipu-lao de matrizes. Matrizes definidas em alguns dos exemplos podero ser utilizadas emexemplos posteriores desse mesmo captulo.

    A maioria das funes no Matlabr apresenta inmeras opes de funcionamento.Para cada funo, ser abordado apenas um exemplo simples. Detalhamento das funespode ser obtido atravs do comando de ajuda help nome_da_funo.

    5.1 Matrizes elementares ones: cria uma matriz cujos elementos so todos iguais a 1, dados o nmero delinhas e colunas da matriz, respectivamente.

    >> ones(2,3)ans =

    1 1 11 1 1

    Para se criar uma matriz com todos os elementos iguais a um nmero qualquer N,basta multiplicar a matriz gerada por N ou multiplicar diretamente o comando porN (N*ones).

    17

  • 18 Captulo 5. Funes matriciais

    zeros: cria uma matriz cujos elementos so todos iguais a 0, dados os nmeros delinhas e colunas.

    >> zeros(3,2)ans =

    0 00 00 0

    eye: cria uma matriz identidade, dada sua ordem.>> eye(3)ans =

    1 0 00 1 00 0 1

    rand: cria uma matriz de elementos pseudo-aleatrios com distribuio uniformeentre 0 e 1, dados os nmeros de linhas e colunas. O comando rand(state,n)reinicia o gerador de nmeros pseudo-aleatrios para o n-simo estado.Para reiniciar em um diferente estado a cada horrio, pode-se usar o comandorand(state,sum(100*clock)). Um comando similar, o randn, funciona de formasimilar, mas com distribuio normal.

    >> rand(2,7)ans =

    0.9501 0.6068 0.8913 0.4565 0.8214 0.6154 0.92180.2311 0.4860 0.7621 0.0185 0.4447 0.7919 0.7382

    Esta funo muito til para, por exemplo, se fazer testes em programas que votrabalhar com dados imprevisveis.

    5.2 lgebra linear det: retorna o determinante da matriz de entrada.

    >> a=[1 2;1 3]a =

    1 21 3

    >> det(a)ans =

    1

    inv: retorna a inversa da matriz de entrada.>> inv(a)ans =

    3 -2-1 1

    PETTele)) UFF

  • 5.3. Informaes matriciais bsicas 19

    eig: retorna um vetor de autovalores da matriz de entrada. Para duas variveis desada, retorna a matriz de autovetores e a matriz diagonal de autovalores.

    >> v=eig(a)v =

    0.26793.7321

    >> [V D]=eig(a)V =

    -0.9391 -0.59070.3437 -0.8069

    D =0.2679 0

    0 3.7321

    5.3 Informaes matriciais bsicas size: retorna um vetor com o nmero de linhas e colunas da matriz de entrada.

    >> size( [11 12 13 ; 21 22 23] )ans =

    2 3

    Este ltimo um exemplo em que se escreve diretamente uma matriz ao invs donome da varivel.

    length: retorna o comprimento do vetor ou a maior dimenso de uma matriz deentrada.

    >> length( [11 12 13 ; 21 22 23] )ans =

    3

    5.4 Manipulao de matrizes reshape: d um novo formato, quando possvel, matriz de entrada, dados a matrize seus novos nmeros de linhas e colunas. Os elementos da matriz so percorridossequencialmente, pelo modo de indexao matriz(i), apresentado na Tabela 3.2.

    >> reshape(1:10,2,5)ans =

    1 3 5 7 92 4 6 8 10

    UFF PETTele))

  • 20 Captulo 5. Funes matriciais

    rot90: rotaciona a matriz de entrada em 90 graus, no sentido anti-horrio.

    >> b=[1 2 3 ; 4 5 6 ; 7 8 9]b =

    1 2 34 5 67 8 9

    >> rot90(b)ans =

    3 6 92 5 81 4 7

    fliplr: troca simetricamente de posio as colunas da esquerda com as da direita,de uma matriz de entrada.

    >> fliplr(b)ans =

    3 2 16 5 49 8 7

    flipud: troca simetricamente de posio as linhas de cima com as de baixo, de umamatriz de entrada.

    >> flipud(b)ans =

    7 8 94 5 61 2 3

    diag: cria um vetor a partir da diagonal principal de uma matriz de entrada ou criauma matriz diagonal a partir de um vetor de entrada.

    >> diag(b)ans =

    159

    >> diag(ans)ans =

    1 0 00 5 00 0 9

    PETTele)) UFF

  • 5.5. Anlise de dados 21

    triu: retorna uma matriz triangular superior, a partir da matriz de entrada.

    >> triu(b)ans =

    1 2 30 5 60 0 9

    tril: retorna uma matriz triangular inferior, a partir da matriz de entrada.

    >> tril(b)ans =

    1 0 04 5 07 8 9

    5.5 Anlise de dados sum: retorna a soma dos elementos de cada coluna de uma matriz de entrada ou asoma dos elementos de um vetor de entrada.

    >> sum(b)ans =

    12 15 18

    >> sum(ans)ans =

    45

    prod: retorna o produto dos elementos de cada coluna de uma matriz de entradaou o produto dos elementos de um vetor de entrada.

    > prod([2 3 1; 2 4 5])ans =

    4 12 5

    >> prod(ans)ans =

    240

    mean: retorna a mdia aritmtica dos elementos de cada coluna de uma matriz deentrada ou a mdia aritmtica dos elementos de um vetor de entrada.

    >> mean( [1 -2 3 -4; 5 -6 7 -8] )ans =

    3 -4 5 -6

    UFF PETTele))

  • 22 Captulo 5. Funes matriciais

    min e max: retornam, respectivamente, o valor mnimo e o valor mximo doselementos de cada coluna de uma matriz de entrada ou o valor mnimo e o valormximo dos elementos de um vetor de entrada.

    >> max( [1 -2 3 -4; 5 -6 7 -8] )ans =

    5 -2 7 -4

    >> min(ans)ans =

    -4

    sort: retorna a matriz de entrada, com cada coluna ordenada em ordem crescente,ou o vetor de entrada, com seus elementos ordenados em ordem crescente.

    >> x=sort( [1 -2 3 -4 5 -6 7 -8] )x =

    -8 -6 -4 -2 1 3 5 7

    >> fliplr(x)ans =

    7 5 3 1 -2 -4 -6 -8

    PETTele)) UFF

  • Captulo 6

    Funes matemticas elementares

    OMatlabr possui diversas funes matemticas elementares, as quais podem ser listadaspelo comando help elfun. Abaixo, esto listadas as mais comumente utilizadas.

    6.1 Funes trigonomtricasAs funes trigonomtricas do Matlabr trabalham com valores de ngulos expressos emradianos.

    sin seno sec secantesinh seno hiperblico sech secante hiperblicaasin arco seno asec arco secantecos cosseno csc cossecantecosh cosseno hiperblico csch cossecante hiperblicaacos arco cosseno acsc arco cossecantetan tangente cot cotangentetanh tangente hiperblica coth cotangente hiperblicaatan arco tangente acot arco cotangente

    >> cos(pi)ans =

    -1

    >> acos(ans)ans =

    3.1416

    6.2 Funes exponenciais

    exp exponencial (ex)log logaritmo neperiano ou natural (lnx)log10 logaritmo na base 10 (log10 x)log2 logaritmo na base 2 (log2 x)sqrt raiz quadrada (

    x)

    23

  • 24 Captulo 6. Funes matemticas elementares

    >> log(exp(10))ans =

    10

    >> sqrt(log10(ans))ans =

    1

    6.3 Funes complexas

    abs valor absoluto do nmero (mdulo)angle ngulo de fase do nmero, em radianosconj conjugado do nmeroreal parte real do nmeroimag parte imaginria do nmero

    >> z=4-3*iz =

    4.0000 - 3.0000i

    >> abs(z)ans =

    5

    >> real(z)+imag(z)*ians =

    4.0000 - 3.0000i

    >> conj(z)ans =

    4.0000 + 3.0000i

    6.4 Funes de arredondamento e resto

    fix: Aproxima para o inteiro de menor valor absoluto, ignorando as casas decimais. floor: Aproxima para o inteiro antecessor. ceil: Aproxima para o inteiro sucessor. round: Arredonda para o inteiro mais prximo. rem (remainder after division): Resto de diviso inteira, dados respectivamente odividendo e o divisor. Para dividendos negativos, sendo x e y inteiros positivos,rem(-x,y)=-rem(x,y). Mais detalhes em help rem.

    PETTele)) UFF

  • 6.4. Funes de arredondamento e resto 25

    mod (modulus after division): Resto de diviso inteira, dados respectivamente di-videndo e o divisor. Para dividendos negativos, sendo x e y inteiros positivos,mod(-x,y)=y-mod(x,y) se mod(x,y) 6=0, ou mod(-x,y)=0 caso contrrio. Mais de-talhes em help mod.

    sign: Retorna +1 para nmeros positivos, 1 para nmeros negativos e 0 paranmeros iguais a zero.

    >> x=[-4:4]x =

    -4 -3 -2 -1 0 1 2 3 4

    >> rem(x,3)ans =

    -1 0 -2 -1 0 1 2 0 1

    >> mod(x,3)ans =

    2 0 1 2 0 1 2 0 1

    >> sign(x)ans =

    -1 -1 -1 -1 0 1 1 1 1

    Observaes:

    1. REM(x,y) tem o mesmo sinal de x, enquanto MOD(x,y) tem o mesmo sinal de y.

    2. REM(x,y) e MOD(x,y) so iguais se x e y possuem o mesmo sinal, mas diferem dey se x e y possuem sinais opostos.

    UFF PETTele))

  • 26 Captulo 6. Funes matemticas elementares

    PETTele)) UFF

  • Captulo 7

    Funes polinomiais

    No Matlabr , um vetor pode ser interpretado como um polinmio quando cada um deseus elementos associado a cada um dos coeficientes do polinmio, comeando peloscoeficientes dos termos de maior grau. Assim, por exemplo, [2 -7 1] ser interpretadocomo 2x2 7x+ 1.

    Tendo isso em conta, listam-se abaixo algumas das funes que trabalham com po-linmios. Vetores definidos em alguns exemplos podero ser utilizados em exemplos pos-teriores.

    roots: Retorna um vetor com as razes de um polinmio de entrada.

    >> a=[1,5,6]a =

    1 5 6

    >> roots(a)ans =

    -3-2

    polyval: Retorna o valor ou a imagem de um polinmio, dados respectivamente opolinmio e o valor de sua varivel independente.

    >> polyval(a,2)ans =

    20

    Isto o mesmo que 1(2)2 + 5(2) + 6 = 20.

    poly: Cria um polinmio a partir de um vetor de entrada contendo suas razes.

    >> poly([-3,-2])ans =

    1 5 6

    27

  • 28 Captulo 7. Funes polinomiais

    conv: Convolui dois polinmios. Na prtica, isso o mesmo que multiplicar deforma distributiva dois polinmios (mas no dois vetores).

    >> b=[2 4];>> conv(a,b)ans =

    2 14 32 24

    Neste exemplo, mostra-se que (x2 + 5x+ 6)(2x+ 4) = 2x3 + 14x2 + 32x+ 24.

    PETTele)) UFF

  • Captulo 8

    Grficos

    8.1 Grficos de duas dimenses

    O Matlabr um software muito eficiente na criao e manipulao de grficos, apre-sentando diversas funes que auxiliam essas operaes.

    Basicamente, os grficos so construdos conforme os passos abaixo:

    1. Cria-se um vetor X com as coordenadas do eixo das abscissas;

    2. Escreve-se a funo desejada, a partir do vetor X, a qual criar um novo vetor Y dasordenadas;

    3. Desenha-se o grfico, o que ser ensinado mais adiante.

    Os pares ordenados (x,y) assim criados so marcados no grfico e ligados por segmen-tos retas (interpolao linear). Observa-se, portanto, que, quanto menor for o incrementodo vetor X, mais pares ordenados sero criados e, conseqentemente, melhor ser a precisodo grfico. Em compensao, uma maior quantidade de memria utilizada.

    Entre as inmeras funes existentes, esto listadas abaixo apenas as mais usadas.

    plot: Desenha grficos de duas dimenses, dados o vetor de abscissas e o vetor deordenadas.

    >> X=[0:0.2:10];>> Y=X.^2;>> plot(X,Y)

    A funo plot pode ser tambm usada no desenho de mais de um grfico em umamesma figura. Para isso, usa-se a seguinte notao:

    plot(X1, Y1, X2, Y2, ... , Xn, Yn) ,

    onde X1 e Y1 correspondem s coordenadas do grfico 1, X2 e Y2 correspondems coordenadas do grfico 2, e assim sucessivamente.

    29

  • 30 Captulo 8. Grficos

    Figura 8.1: Grfico do comando plot(X,Y).

    Cor Marcador Tipo de linhay amarela . ponto - slidam magenta o crculo : pontilhadac azul-claro x xis -. trao-pontor vermelha + cruz -- tracejadag verde * estrelab azul s quadradow branca d losangok preta v tringulo p/ baixo

    ^ tringulo p/ cima< tringulo p/ esquerda> tringulo p/ direitap pentagramah hexagrama

    Tabela 8.1: Formatao, em grficos, de cor, marcador e tipo de linha.

    A formatao de cor, marcador e tipo de linha dos grficos tambm pode ser confi-gurada pelo usurio. Para isso usa-se a seguinte notao:

    plot(X1, Y1, Conf1, X2, Y2, Conf2, ... , Xn, Yn, Confn) ,

    onde, no lugar de Conf1, Conf2, ... , Confn, usam-se os caracteres especificadospela Tabela 8.1.

    >> plot(X,Y,ko--,X,10*X,*)

    Para criar grficos em janelas diferentes, usa-se o comando figure(n) antes docomando plot, onde n o nmero da janela de figuras. Caso contrrio, cada novogrfico criado ser plotado na ltima janela aberta (grfico corrente). Para apagaro grfico da janela corrente sem fech-la, escreve-se o comando clf .

    PETTele)) UFF

  • 8.1. Grficos de duas dimenses 31

    Figura 8.2: Grfico de plot(X,Y,ko,X,10*X,*).

    subplot: Divide a janela de figuras em uma matriz m x n de sub-janelas, selecio-nando uma das sub-janelas pelo seu nmero correspondente. Esses nmeros estoordenados sucessivamente ao longo das linhas. As entradas dessa funo so res-pectivamente o nmero de linhas e colunas da janela e a posio do par de eixoscorrente.

    >> subplot(2,2,1)>> plot(X,X.^2)>> subplot(2,2,2)>> plot(X,10*X)>> subplot(2,2,3)>> plot(X,log10(X+1))

    Figura 8.3: Par de eixos 1, 2 e 3 da janela de figuras.

    semilogx: Plota grficos com o eixo x em escala logartmica na base 10. semilogy: Plota grficos com o eixo y em escala logartmica na base 10. loglog: Plota grficos com ambos os eixos em escala logartmica na base 10.

    UFF PETTele))

  • 32 Captulo 8. Grficos

    >> clf>> semilogx(X,10*X)

    Figura 8.4: Reta representada com eixo x em escala logartmica.

    plotyy: Plota duas curvas no mesmo grfico com diferentes escalas para o eixo y.A primeira delas tem escala esquerda, e a segunda tem escala direita.

    >> plotyy(X,Y,X,cos(X))

    Figura 8.5: Parbola e cosseno com diferentes escalas para o eixo y.

    polar: Plota grficos em coordenadas polares segundo a seguinte sintaxe:polar(theta, raio, Conf) ,

    onde theta o vetor de valores angulares em radianos, raio o vetor de mesmadimenso que theta, contendo os valores radiais correspondentes e Conf segue asmesmas configuraes da funo plot.

    >> ang=[0:.1:2*pi];>> raio=10*ang;>> polar(ang,raio);

    PETTele)) UFF

  • 8.2. Grficos de trs dimenses 33

    Figura 8.6: Grfico da funo polar.

    8.2 Grficos de trs dimenses

    O Matlabr apresenta diversos recursos para apresentao de grficos em 3D. As princi-pais funes so listadas abaixo.

    plot3: Plota pontos e linhas em 3D, a partir de trs vetores de coordenadas demesmo tamanho.

    >> t = 0:0.1:10*pi;>> plot3(t.*sin(t),t.*cos(t),t);

    Figura 8.7: Grfico do comando plot3.

    meshgrid: Cria duas matrizes X e Y , a partir de dois vetores x e y, onde as linhasda matriz X so cpias do vetor x, e as colunas da matriz Y so cpias do vetory, sendo feitas tantas cpias quanto forem necessrias para que ambas as matrizestenham as mesmas dimenses. Essa funo importante para a criao de malhase superfcies em trs dimenses.

    UFF PETTele))

  • 34 Captulo 8. Grficos

    >> x=[0 1]x =

    0 1

    >> y=[2 3 4]y =

    2 3 4

    >> [X,Y]=meshgrid(x,y)X =

    0 10 10 1

    Y =2 23 34 4

    mesh: Cria uma malha em 3D, a partir de trs matrizes.>> [X,Y] = meshgrid(-2:.2:2, -2:.2:2);>> Z = X .* exp(-X.^2 - Y.^2);>> mesh(X,Y,Z);

    Figura 8.8: Grfico do comando mesh.

    surf : Cria uma superfcie em 3D, a partir de trs matrizes.>> surf(X,Y,Z);

    As cores, tanto da superfcie quanto da malha em 3D, esto codificadas de acordo coma altura relativa dos pontos no eixo z. Quanto maior for z, mais avermelhada ser a cor,e quanto menor for z, mais azulada ela ser.

    PETTele)) UFF

  • 8.3. Funes auxiliares 35

    Figura 8.9: Grfico do comando surf.

    8.3 Funes auxiliares

    Existem diversas funes que auxiliam a visualizao e a formatao dos grficos. As maisimportantes so apresentadas abaixo.

    title: Adiciona um ttulo ao grfico corrente. Esse ttulo um texto que deve serescrito entre aspas simples, conforme a sintaxe:

    title(Ttulo do Grfico)

    xlabel: Adiciona um texto ao eixo das abscissas do grfico corrente. ylabel: Adiciona um texto ao eixo das ordenadas do grfico corrente. text: Cria um texto posicionado na coordenada fornecida, conforme a sintaxe:

    text(X, Y, Texto)

    grid: Mostra linhas de grade no grfico corrente. axis: Delimita os intervalos dos eixos de acordo com a sintaxe:

    axis([Xmin Xmax Ymin Ymax])

    Essa funo ajusta o grfico para os intervalos delimitados pelo usurio. Outrasaplicaes podem ser vistas em help axis.

    hold on: Permite que novos grficos sejam criados na janela corrente sem que osgrficos anteriores sejam apagados.

    hold off : Desabilita o comando anterior.

    UFF PETTele))

  • 36 Captulo 8. Grficos

    whitebg: Configura a cor de fundo da janela de figura, de acordo com a sintaxe:

    whitebg(n,[red green blue]) ,

    onde n o nmero da janela desejada e [red green blue] o vetor com as compo-nentes primrias da cor. O vetor [0 0 0] corresponde ao preto e o vetor [1 1 1] aobranco.

    >> x=[-5*pi:0.1:5*pi];>> y=sin(x)./x;>> plot(x,y);>> title(\it{Sample})>> xlabel(x);>> ylabel(sin(x)/x);>> axis([-15 15 -0.3 1.1]);>> text(-2*pi, 0, -2\pi);>> text(2*pi, 0, 2\pi);>> whitebg([0.4057 0.9355 0.9169]);

    Figura 8.10: Exemplo de funes auxiliares de plotagem.

    A cor do plano de fundo volta a ser branca quando a figura exportada doMatlabr .Nos textos inseridos nela, possvel mudar o tipo e o tamanho da fonte, escrever emnegrito, itlico, subscrito, sobrescrito e ainda representar letras gregas. Isso podeser compreendido pela Tabela 8.2.

    clf : Apaga todos os grficos da janela corrente. close: Fecha a janela corrente. Para fechar a n-sima janela, utiliza-se o comandoclose(n). O comando close all fecha todas as janelas.

    PETTele)) UFF

  • 8.3. Funes auxiliares 37

    Propriedade Sintaxe ExemploTipo de fonte \fontname{} \fontname{Arial}Tamanho de fonte \fontsize{} \fontsize{14}Negrito \bf{} \bf{Negrito}Itlico \it{} \it{Itlico}Subscrito _{} R_{1}Sobrescrito ^{} x^{2}Letra grega \letra \pi

    Tabela 8.2: Formatao de fonte de texto inserido em grfico.

    UFF PETTele))

  • 38 Captulo 8. Grficos

    PETTele)) UFF

  • Captulo 9

    Funes polinomiais racionaiscomplexas

    Uma funo polinomial racional complexa definida como uma razo de polinmios devariveis complexas, conforme a equao

    H(s) =NH(s)

    DH(s)=

    bmsm + ...+ b1s+ b0

    ansn + ...+ a1s+ a0= (k)

    (s+ z1)(s+ z2)...(s+ zm)

    (s+ p1)(s+ p2)...(s+ pn),

    onde os coeficientes a1, a2, , an e b1, b2, , bm sero considerados reais e constantes, ek = bm

    an.

    As razes do numerador e do denominador so chamadas, respectivamente, de zeros epolos da funo H(s). A constante k denominada ganho.

    tf2zp: Encontra zeros, polos e ganho, dados o numerador e denominador da funo.

    >> num=[1,1]num =

    1 1

    >> den=[1,5,6]den =

    1 5 6

    >> [z,p,g]=tf2zp(num,den)z =

    -1

    p =-3-2

    g =1

    39

  • 40 Captulo 9. Funes polinomiais racionais complexas

    zp2tf : Encontra o numerador e denominador da funo, dados zeros, polos e ganho.

    >> [N,D]=zp2tf(z,p,g)N =

    0 1 1

    D =1 5 6

    tf : Cria uma funo de transferncia e a armazena em um objeto apropriado, dadoso numerador e denominador.

    >> H=tf(N,D)

    Transfer function:s + 1

    -------------s^2 + 5 s + 6

    pzmap: Apresenta o diagrama de polos e zeros, dado o objeto da funo de trans-ferncia. Cada raiz do numerador (zero) representada no plano complexo por umcrculo (), enquanto cada raiz do denominador (polo) representada por um xis().

    >> pzmap(H)

    Figura 9.1: Diagrama de polos e zeros.

    PETTele)) UFF

  • 41

    bode: Desenha os grficos de mdulo |H(j)|dB e ngulo de fase H(j) da res-posta em frequncia H(j) = H(s)|s=j, dado o objeto relativo funo de trans-ferncia H(s).

    >> bode(H)

    O comando bode(H,) desenha o grfico para um dado vetor de frequncias ,enquanto o comando bode(H,{min,max}) desenha-o para a faixa de frequncias[min;max].

    >> bode(H,{1e-1,1e2})

    Figura 9.2: Grficos de mdulo e ngulo de fase da resposta em freqncia.

    freqs: Retorna um vetor complexo com a resposta em frequnciaH(j) = H(s)|s=j,dados o seu numerador, o seu denominador e um vetor de frequncias . Caso sejaomitida a varivel de retorno, esta funo simplesmente exibe os grficos de mduloe de ngulo de fase.

    >> clf;>> w=logspace(-1,2,101);>> Hjw=freqs(num,den,w);>> moddb=20*log10(abs(Hjw));>> fase=180*angle(Hjw)/pi;>> subplot(2,1,1), semilogx(w,moddb);>> title(Resposta em freqncia), ylabel(|H(j\omega)|_{dB});>> subplot(2,1,2), semilogx(w,fase);>> ylabel(\angle H(j\omega) (graus)), xlabel(\omega (rad/s));

    UFF PETTele))

  • 42 Captulo 9. Funes polinomiais racionais complexas

    Figura 9.3: Grfico de mdulo e fase.

    PETTele)) UFF

  • Captulo 10

    Programao

    10.1 Funes e scriptsFunes e scripts so sequncias de comandos do Matlabr armazenadas em arquivosdo tipo texto com extenso .m (m-files), que tm por finalidade automatizar processosrepetitivos e implementar clculos e comandos lgicos. A diferena bsica entre ambos que as funes aceitam parmetros de entrada e retornam parmetros de sada, enquantoos scripts unicamente executam a sequncia de comandos.

    As funes e os scripts podem ser criados escrevendo edit na linha de comando ouclicando na barra de ferramentas em File > New > M-file. Por ficarem armazenados emarquivos texto, eles podem ser editados em qualquer editor de textos.

    Os mesmos comandos que o usurio escreveria no prompt da Janela de Comando sousados para a implementao do script. Para que o m-file seja interpretado como funo,deve ser escrita a seguinte expresso no cabealho do arquivo:

    function [Sada1, ... , SadaN ] = Nome(Entrada1, ... ,EntradaM)

    onde Sada1, ... , SadaN so os parmetros de sada, Entrada1, ... , EntradaM so osparmetros de entrada e Nome o prprio nome da funo.

    Depois dessa expresso, seguem-se os comandos usados para estruturar a funo.Tanto na funo quanto no script, os comentrios so escritos nas linhas iniciais. Nocaso da funo, a primeira sequncia de comentrios aparecer quando for digitado helpnome_da_funo na linha de comandos.

    Abaixo segue um exemplo de funo.

    function[a,b,c,d,e] = complexo(x)

    % COMPLEXO% [r,i,m,a,c] = COMPLEXO(x) retorna em cinco% variveis as partes real e imaginria,% o mdulo, o argumento e o conjugado de% um nmero complexo.

    a=real(x); b=imag(x);c=abs(x); d=angle(x);e=conj(x);

    43

  • 44 Captulo 10. Programao

    Aps escrito o cdigo, o arquivo dever ser salvo com o mesmo nome da funo e coma extenso .m (no exemplo, complexo.m).

    Uma condio necessria para a execuo de arquivos M que eles estejam no dire-trio corrente do Matlabr . Para execuo de um script, feita na barra de ferramentasda janela de edio pela opo Debug>Run ou File>Run Script (dependendo da versodo Matlabr ), a mudana de diretrio corrente automtica, sendo desnecessria ainterveno do usurio.

    A mudana de diretrio corrente pode ser feita clicando-se no boto da janela prin-cipal do programa contendo ..., ao lado de Current Directory, ou por um dos seguintescomandos.

    dir - lista diretrios e arquivos do diretrio corrente;

    cd nome_diretrio - muda diretrio corrente para nome_diretrio;

    cd .. - retorna ao diretrio pai, um nvel acima;

    edit nome - edita uma funo ou um script no diretrio corrente;

    nome_script - executa um script, caso esteja no diretrio corrente;

    [s1,s2]=nome_funo(e1,e2) - chama uma funo, caso esteja no diretrio correnteou na biblioteca do Matlabr .

    cd - muda para o diretrio raiz (root)

    10.2 Controle de fluxo

    As linguagens imperativas de programao de computadores caracterizam-se pela execu-o sequencial de comandos. Elas possuem ainda recursos que permitem o controle defluxo de execuo de comandos com base em estruturas de tomada de deciso. Nestaseo, sero vistas as estruturas mais comuns.

    10.2.1 Estruturas condicionais

    Uma estrutura condicional permite a seleo de um conjunto de comandos a serem execu-tados quando uma dada condio for ou no satisfeita, podendo assim modificar o fluxonatural de comandos. As trs estruturas condicionais bsicas do Matlabr esto listadasa seguir.

    PETTele)) UFF

  • 10.2. Controle de fluxo 45

    Estrutura if 1 Estrutura if 2 Estrutura if 3if condio if condio1 if condio1

    comandos comandos1 comandos1end else elseif condio2

    comandos2 comandos2end elseif condio3

    comandos3...else

    comandosNend

    As estruturas 1 e 2 so casos particulares da estrutura 3. As condies so formadaspelos operadores lgicos e relacionais. Abaixo mostrado um exemplo de um script comuma estrutura if.

    A=2; B=3;if A==B

    display(A e B iguais.) % Exibe texto na Janela de Comando.else

    display(A e B diferentes.)end

    Quando se faz uso repetido de testes de igualdade com apenas um argumento comum,costuma-se usar a estrutura switch-case. Essa estrutura tem a seguinte forma:

    switch var_testecase expresso_teste1

    comandos1case {expresso_teste2, expresso_teste3, expresso_teste4}

    comandos2otherwise

    comandos3end

    Se os testes de igualdade resultarem em falso para todos os casos, os comandos deotherwise (que opcional) sero executados. O exemplo abaixo demonstra uma aplicaoda estrutura switch-case.

    UFF PETTele))

  • 46 Captulo 10. Programao

    clear allnum=input(Escreva um inteiro: ); % Exibe texto e l valor para a varivel.switch num

    case 1y=1

    case {2, 2.5}y=2

    case tresy=3

    case {quatro, Quatro, QUATRO }y=4

    otherwisey=0

    end

    10.2.2 Estruturas de repetio

    Uma estrutura de repetio faz com que uma sequncia de comandos seja executada repe-tidamente enquanto se satisfaa uma dada condio. O Matlabr possui duas estruturasde repetio: for e while.

    Estrutura for Estrutura whilefor varivel=inic:incr:fim while condio

    comandos comandosend end

    A condio da estrutura for que varivel seja menor ou igual a fim. Enquantosatisfeita essa condio, ao trmino de cada loop de comandos, varivel incrementadade incr. O incremento incr considerado unitrio caso seja omitido.

    Abaixo, segue um exemplo de clculo de mdia, usando-se, de forma comparativa, asduas estruturas.

    PETTele)) UFF

  • 10.2. Controle de fluxo 47

    clear allx=input(Vetor de amostras: );compr=length(x); % retorna o comprimento do vetorsoma_f=0;for k=1:compr

    soma_f=soma_f+x(k);endmedia_f=soma_f./compr;

    soma_w=0;k=1;while k

  • 48 Captulo 10. Programao

    PETTele)) UFF

  • Apndice A

    Funes relativas a aproximaes parafiltros seletores em frequncia

    Este captulo contm os principais comandos do Matlabr , para o projeto de filtrosanalgicos e digitais. Existem vrias tcnicas de aproximao para a construo de filtros.Cada tcnica usada de acordo com as especificaes do sistema a ser projetado.

    A seguir, so apresentados os comandos com as opes utilizadas no projeto de filtrosanalgicos. Para os filtros digitais, consulte o manual, atravs do comando help comando.

    A.1 Butterworth

    BUTTORD calcula a ordem de um filtro Butterworth.

    [N, Wn] = buttord(Wp, Ws, Rp, Rs,s) Este comando retorna a ordem dofiltro Butterworth que tenha, no mximo, Rp dB de atenuao na banda de passa-gem e, no mnimo, Rs dB na banda de rejeio. Wp and Ws so as frequncias dabanda de passagem e rejeio, respectivamente. W deve ser dado em rad/sec.

    Exemplo:

    passa-baixa: Wp = x Ws = ypassa-alta: Wp = y Ws = xbanda de passagem: Wp = [x1 x2] Ws = [y1 y2]banda de rejeio: Wp = [y1 y2] Ws = [x1 x2]

    A frequncia retornada Wn a frequncia onde ocorre uma atenuao de 3 dB.

    BUTTER calcula os coeficientes de um filtro Butterworth.

    [num,dem] = butter(N,Wn,s) Este comando retorna os coeficientes do nume-rador (num) e denominador (dem) da funo de transferncia do filtro Butterworthpassa-baixa. N a ordem do filtro e Wn a frequncia de corte.

    SeWn for um vetor contendo duas frequnciasWn = [W1 W2] este comando retornaa funo de transferncia do filtro passa-banda Butterworth de ordem 2N tendoBanda de passagem com W1 < W < W2.

    49

  • 50 Apndice A. Funes relativas a aproximaes para filtros seletores em frequncia

    [num,dem] = butter(N,Wn,high,s) Calcula um filtro passa-alta.[num,dem] = butter(N,Wn,stop,s) Calcula um filtro rejeita-banda, seWn =[W1W2].

    [Z,P,K] = butter(...) Retorna zeros, polos e ganho escalar K.

    A.2 Chebyshev

    CHEB1ORD calcula a ordem de um filtro Chebyshev Tipo I .

    [N, Wn] = cheb1ord(Wp, Ws, Rp, Rs,s) Este comando retorna a ordem dofiltro Chebyshev que tenha, no mximo, Rp dB de atenuao na banda de passageme, no mnimo, Rs dB na banda de rejeio. Wp andWs so as frequncias da bandade passagem e rejeio, respectivamente. W deve ser dado em rad/sec.

    Exemplo:

    passa-baixa: Wp = x Ws = ypassa-alta: Wp = y Ws = xbanda de passagem: Wp = [x1 x2] Ws = [y1 y2]banda de rejeio: Wp = [y1 y2] Ws = [x1 x2]

    A frequncia retornada Wn a frequncia onde ocorre uma atenuao de 3 dB.

    CHEBY1 calcula os coeficientes de um filtro Chebyshev Tipo I.

    [num,dem] = cheby1(N,R,s) Este comando retorna os coeficientes do nume-rador (num) e denominador (dem) da funo de transferncia do filtro chebyshevpassa-baixa. N a ordem do filtro , R a atenuao mxima na banda de passageme Wn a frequncia de corte.

    SeWn for um vetor contendo duas frequnciasWn = [W1 W2] este comando retornaa funo de transferncia do filtro passa-banda Chebyshev de ordem 2N tendo bandade passagem com W1 < W < W2.[num,dem] = cheby1(N,R,Wn,high,s) Calcula um filtro passa-alta.[num,dem] = cheby1(N,R,Wn,stop,s) Calcula um filtro rejeita-banda, seWn = [W1W2].

    [Z,P,K] = cheby1(...) Retorna zeros, polos e ganho escalar K.

    CHEB2ORD calcula a ordem de um filtro Chebyshev Tipo II .

    [N, Wn] = cheb2ord(Wp, Ws, Rp, Rs,s) Este comando retorna a ordem dofiltro Chebyshev que tenha, no mximo, Rp dB de atenuao na banda de passageme, no mnimo, Rs dB na banda de rejeio. Wp andWs so as frequncias da bandade passagem e rejeio respectivamente. W deve ser dado em rad/sec.

    Exemplo:

    passa-baixa: Wp = x Ws = y

    PETTele)) UFF

  • A.3. Elptico (Cauer) 51

    passa-alta: Wp = y Ws = xbanda de passagem: Wp = [x1 x2] Ws = [y1 y2]banda de rejeio: Wp = [y1 y2] Ws = [x1 x2]

    A frequncia retornada Wn a frequncia onde ocorre uma atenuao de 3 dB.

    CHEBY2 calcula os coeficientes de um filtro Chebyshev Tipo II.

    [num,dem] = cheby2(N,R,s) Este comando retorna os coeficientes do nume-rador (num) e denominador (dem) da funo de transferncia do filtro Chebyshevpassa-baixa. N a ordem do filtro , R a atenuao mnima na banda de rejeio eWn a freqncia de corte da banda de rejeio.

    SeWn for um vetor contendo duas frequnciasWn = [W1 W2] este comando retornaa funo de transferncia do filtro passa-banda Chebyshev de ordem 2N tendo bandade passagem com W1 < W < W2.[num,dem] = cheby2(N,R,Wn,high,s) calcula um filtro passa-alta.[num,dem] = cheby2(N,R,Wn,stop,s) calcula um filtro rejeita-banda, seWn = [W1W2].

    [Z,P,K] = cheby2(...) Retorna zeros, polos e ganho escalar K.

    A.3 Elptico (Cauer)ELLIPORD calcula a ordem de um filtro Elptico .

    [N, Wn] = buttord(Wp, Ws, Rp, Rs,s) Este comando retorna a ordem dofiltro Elliptic que tenha, no mximo, Rp dB de atenuao na banda de passagem e,no mnimo, Rs dB na banda de rejeio. Wp and Ws so as frequncias da bandade passagem e rejeio respectivamente. W deve ser dado em rad/sec.

    Exemplo:

    passa-baixa: Wp = x Ws = ypassa-alta: Wp = y Ws = xbanda de passagem: Wp = [x1 x2] Ws = [y1 y2]banda de rejeio: Wp = [y1 y2] Ws = [x1 x2]

    A frequncia retornada Wn a frequncia onde ocorre uma atenuao de 3 dB.

    ELLIP calcula os coeficientes de um filtro Elptico.

    [num,dem] = ellip(N,Rp,Rs,Wn,s) Este comando retorna os coeficientes donumerador (num) e denominador (dem) da funo de transferncia do filtro Ellipticpassa-baixa. N a ordem do filtro, Wn a frequncia de corte, Rp dB de atenuaona banda de passagem e Rs dB na banda de rejeio.

    SeWn for um vetor contendo duas frequnciasWn = [W1 W2] este comando retornaa funo de transferncia do filtro passa-banda Elliptic de ordem 2N tendo Bandade passagem com W1 < W < W2.

    UFF PETTele))

  • 52 Apndice A. Funes relativas a aproximaes para filtros seletores em frequncia

    [num,dem] = ellip(N,Rp,Rs,Wn,high,s) Calcula um filtro passa-alta.[num,dem] = ellip(N,Rp,Rs,Wn,stop,s) Calcula um filtro rejeita-banda,se Wn = [W1W2].

    [Z,P,K] = ellip(...) Retorna zeros, polos e ganho escalar K.

    PETTele)) UFF

    PrefcioIntroduoInformaes iniciaisJanelasAjudaBibliotecas do Matlab"472

    VariveisDeclaraoManipulaoVariveis pr-definidas

    Nmeros e matrizesRepresentao numricaFormatos de visualizao de nmerosDefinio de matrizesIndexao

    Operaes com matrizesOperaes aritmticasOperaes lgicas e relacionais

    Funes matriciaisMatrizes elementareslgebra linearInformaes matriciais bsicasManipulao de matrizesAnlise de dados

    Funes matemticas elementaresFunes trigonomtricasFunes exponenciaisFunes complexasFunes de arredondamento e resto

    Funes polinomiaisGrficosGrficos de duas dimensesGrficos de trs dimensesFunes auxiliares

    Funes polinomiais racionais complexasProgramaoFunes e scriptsControle de fluxoEstruturas condicionaisEstruturas de repetio

    Funes relativas a aproximaes para filtros seletores em frequnciaButterworthChebyshevElptico (Cauer)