Você está na página 1de 58

Universidade Federal Fluminense Centro Tecnolgico Escola de Engenharia Curso de Engenharia de Telecomunicaes Programa de Educao Tutorial Grupo PET-Tele

Apostila de Introduo ao Matlab


(Verso: 2k80801)

Niteri - RJ Julho / 2008

Prefcio
Tendo em vista as diretrizes do MEC em Pesquisa, Ensino e Extenso, o Programa de Educao Tutorial (PET) do curso de Engenharia de Telecomunicaes da Universidade Federal Fluminense (UFF) desenvolveu um projeto de elaborao de apostilas e cursos voltados para a graduao. O intuito desse trabalho auxiliar alunos no aprendizado de temas importantes para sua formao, que esto ausentes em quaisquer ementas de disciplinas; e, alm disso, servir de material didtico para cursos de capacitao ministrados pelos bolsistas do Programa aos corpos discente e docente da graduao. Abaixo segue a lista de apostilas preparadas nesse projeto.

HTML LaTeX Linux

Linguagem de programao para hipertextos, principalmente empregada na construo de pginas da Internet (webpages ). Sistema de edio de texto largamente utilizado em meios acadmicos e cientcos, bem como por editoras nacionais e internacionais. Introduo ao sistema operacional LINUX.

Linguagem C MATLAB Spice

Linguagem de programao amplamente utilizada em problemas de engenharia e computao. Ambiente de simulao matemtica, utilizado em diversas reas prossionais.

Ambiente de simulao de circuitos eltricos (analgicos e digitais), utilizado em projeto de circuitos discretos e integrados.

Este documento destina-se a introduzir o usurio ao ambiente do Matlab . Sabendo-se da imensa quantidade de funes e da existncia de um acervo de documentao prprio includo no programa, esta apostila no pretende esgotar o tema como um manual. Antes, pelo contrrio, ela destina-se a introduzir, de forma sucinta, o usurio ao ambiente do programa, mostrando e exemplicando as ferramentas bsicas de utilizao do mesmo. Para maiores informaes e um estudo mais aprofundado, consulte as referncias bibliogrcas no m do documento. muito importante, para uma melhor aprendizado, que o leitor esteja em frente a um computador com o software instalado. medida em que se l a apostila, comandos e operaes devem ser testados no programa. Interessa ainda mencionar que sero destacados, ao longo das pginas, comandos e funes teis s disciplinas do curso de Engenharia de Telecomunicaes, organizados em sees relativas a suas aplicaes.

Autor atual: ltimas atualizaes:

Isabella Frana e Frana Beatriz Costa Ribeiro Vitor de Souza Lima Alexandre Santos de la Vega

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

Sumrio
Prefcio 1 Introduo
1.1 1.2 1.3 1.4 2.1 2.2 2.3 3.1 3.2 3.3 3.4 4.1 4.2 5.1 5.2 5.3 5.4 5.5 6.1 6.2 6.3 6.4 Informaes iniciais . . . . . . . Janelas . . . . . . . . . . . . . . Ajuda . . . . . . . . . . . . . . Bibliotecas do Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i 1
1 1 2 3 5 5 6

2 Variveis

Declarao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Manipulao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variveis pr-denidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Representao numrica Formatos de visualizao Denio de matrizes . . Indexao . . . . . . . . . . . . . . . de nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 Nmeros e matrizes

. 7 . 7 . 8 . 10

4 Operaes com matrizes 5 Funes matriciais

Operaes aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Operaes lgicas e relacionais . . . . . . . . . . . . . . . . . . . . . . . . . 14 Matrizes elementares . . . . . lgebra linear . . . . . . . . . Informaes matriciais bsicas Manipulao de matrizes . . . Anlise de dados . . . . . . . Funes Funes Funes Funes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

17

17 18 19 19 21 23 23 24 24

6 Funes matemticas elementares

trigonomtricas . . . . . . exponenciais . . . . . . . . complexas . . . . . . . . . de arredondamento e resto

23

7 Funes polinomiais
iii

27

iv

Sumrio

8 Grcos
8.1 8.2 8.3

Grcos de duas dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Grcos de trs dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Funes auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

29

9 Funes polinomiais racionais complexas 10 Programao


10.1 Funes e scripts 10.2 Controle de uxo 10.2.1 Estruturas 10.2.2 Estruturas . . . . . . . . . . . . . . condicionais de repetio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39 43
43 44 44 46

A Funes relativas a aproximaes para ltros seletores em freqncia

A.1 Butterworth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 A.2 Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 A.3 Elptico (Cauer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

49

Grupo PET-Tele

UFF

Captulo 1 Introduo
1.1 Informaes iniciais
(abreviatura de MATrix LABoratory - Laboratrio de Matrizes) um software de simulao matemtica que realiza operaes matriciais, constri grcos em duas ou trs dimenses, auxilia no processamento de sinais, alm de manipular outras funes especializadas. Ele trabalha com uma linguagem de programao de alto-nvel, em um ambiente interativo, para o desenvolvimento de algoritmos, anlise e visualizao de dados e computao numrica. Prprio para as reas tcnicas e cientcas, o software tem funes de tratamento numrico de alto desempenho, capazes de resolver problemas computacionais tcnicos de forma mais eciente do que as tradicionais linguagens de programao. Alm do ambiente interativo, outra facilidade do Matlab a possibilidade de execuo de arquivos texto contendo uma seqncia de instrues denidas pelo usurio. Esses arquivos texto, que tm extenso `.m', podem ser criados e editados dentro ou fora do seu ambiente. O

Matlab

1.2 Janelas
Atravs de objetos grcos denominados janelas, o usurio opera as funcionalidades do programa de forma interativa. A janela principal do Matlab chama-se Command Window (Janela de Comando), onde os dados e instrues so digitados no prompt `>>' pelo usurio e, aps a tecla Enter ser pressionada, o programa os processa imediatamente e expe na tela o resultado. Os comandos digitados so armazenados em um buer de comandos, no qual pode-se navegar usando as teclas seta-para-cima `' e seta-para-baixo `'. Alm disso, teclando-se o texto `str', por exemplo, e usando-se as setas `' e `', navega-se por todos os comandos iniciados com 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, ou quando a impresso muito extensa como, por exemplo, para uma matriz 1000 1000. Deve-se ressaltar que, apesar da impresso ser suspensa, o comando executado pelo programa. Vrios comandos podem ser digitados na mesma linha, desde que estejam separados

Captulo 1. Introduo

por vrgula ou ponto-e-vrgula . Comandos muito longos para uma linha podem ser interrompidos 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 = c = 1 3

importante apontar que a Janela de Comando normalmente usada para testes de comandos e funes ou simples operaes. Quando se deseja implementar algum programa, projeto ou trabalho, utiliza-se o M-File Editor. Neste editor, cria-se um arquivo texto `.m' com os comandos desejados. Para abrir um novo arquivo-M, clique em File > New > M-le ou simplesmente digite o comando edit. Aps escrever o programa, pode-se execut-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 relacionadas com ajuda, histrico dos ltimos comandos digitados, diretrio corrente do programa e o espao de trabalho onde se visualizam dados e variveis. Essas janelas podem ser mantidas fechadas ou abertas dependendo da necessidade ou gosto do usurio. Essas outras janelas no so detalhadas nesse documento.

1.3 Ajuda
Atravs do comando help, o usurio pode consultar a ajuda do Matlab . Escrevendose help e o nome da funo, mostrado um pequeno resumo da funo (normalmente de uma linha) seguido de uma descrio mais detalhada da mesma.

>> help ones ONES 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 palavrachave. Para isto, basta digitar o comando lookfor seguido da palavra desejada. Caso se queira interromper a busca, deve-se teclar CTRL+C.

Grupo PET-Tele

UFF

1.4. Bibliotecas do Matlab

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

1.4 Bibliotecas do

O Matlab apresenta uma srie de comandos, operadores e funes primitivas, organizadas por categorias, assim como rotinas especcas de diversas reas da engenharia, organizadas em bibliotecas denominadas Toolboxes. Estas categorias e bibliotecas so designadas por tpicos primrios. Para a visualizao de todos estes tpicos, basta digitar o comando help. Alguns desses tpicos primrios so:

Matlab

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 de imagem, bio-informtica, telecomunicaes, lgica difusa e realidade virtual. Para se aprofundar mais em qualquer biblioteca, basta digitar o comando help tpico.

UFF

Grupo PET-Tele

Captulo 1. Introduo

Grupo PET-Tele

UFF

Captulo 2 Variveis
2.1 Declarao
Dado que o programa oferece um ambiente de execuo de uma linguagem interpretada, uma caracterstica conveniente do Matlab que as variveis no precisam ser dimensionadas antes do uso, pois so geradas automaticamente ao serem utilizadas. Para criar e/ou armazenar informaes em variveis denidas pelo usurio, basta digitar o nome da varivel seguido do sinal de igual `=' e da expresso desejada. Na escolha dos nomes das variveis, devem ser obedecidos os seguintes critrios:

os caracteres podem ser alfanumricos (letras e nmeros), desde que iniciados por letras; letras maisculas e minsculas denem 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 expresso, no haja uma atribuio do resultado para alguma varivel denida pelo usurio, o resultado ser armazenado na varivel ans, pr-denida pelo ambiente.

2.2 Manipulao
Existem comandos prprios para manipulao de variveis. Abaixo esto listados os mais utilizados.

who: clear:

Lista os nomes das variveis. Lista o nome e o tipo das variveis.

whos:

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

Captulo 2. Variveis

save:

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

load: clc:

Recupera as variveis previamente salvas em arquivo pelo comando

save.

Limpa a janela de comandos.

2.3 Variveis pr-denidas


No Matlab , existem algumas variveis pr-denidas que podem ser teis ao usurio, as quais so listadas na Tabela 2.1.

Varivel

ans pi eps inf NaN ou nan i ou j nargin nargout realmin realmax bitmax

Representao
Varivel padro para armazenar resultados. Razo entre o permetro da circunferncia e o seu dimetro. Preciso de ponto utuante, ou distncia entre 1 e prximo nmero real. Innito (por exemplo, resultado da diviso 1/0). Not-a-Number ou valor no-numrico (exemplo: resultado de 0/0). Unidade numrica imaginria, igual a 1. Nmero de argumentos de entrada de uma funo. Nmero de argumentos de sada de uma funo. Menor nmero real positivo utilizvel. Maior nmero real positivo utilizvel. Maior nmero inteiro positivo utilizvel. Tabela 2.1: Variveis pr-denidas.

Caso o usurio dena e utilize uma varivel com o mesmo nome de alguma das variveis ou das funes pr-denidas, ela funcionar como uma varivel comum, perdendo seu signicado original. Quando apagada, ela retornar ao seu comportamento pr-denido.

>> i=999 i = 999 >> clear i >> i ans = 0 + 1.0000i

Grupo PET-Tele

UFF

Captulo 3 Nmeros e matrizes


3.1 Representao numrica
Todas as informaes numricas do Matlab so armazenadas sob a forma de matrizes. Se, por exemplo, for digitado o nmero 5 no ambiente do programa, este valor ser interpretado como uma matriz de dimenso 11. Nmeros negativos, com casas decimais, complexos e sob a forma de notao cientca podem ser representados no Matlab usando-se a seguinte simbologia:

nmeros negativos: `' ;


Ex.: 5

nmeros com casas decimais: `.' ;


Ex.: 3.2

nmeros complexos: `i' ou `j ' (como suxos, direita da parte imaginria, ou como funes, 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) e 3 + sqrt(1) 5.

notao cientca: `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 Matlab com aritmtica de dupla preciso. A visualizao dos nmeros nas janelas Command Window e Workspace, entretanto, pode ser feita em diversos formatos. Por denio, o Matlab exibe os resultados em trs formatos diferentes: inteiro, real com quatro casas decimais ou em notao cientca, adotando aquela que melhor convir. Esse comportamento padro pode ser alterado clicando-se em File > Preferences, ou simplesmente digitando na Janela de Comando a instruo format seguida do formato especco. A Tabela 3.1 ilustra cada um deles, exibindo o nmero 2 como exemplo.

Captulo 3. Nmeros e matrizes

format short format long format short e format long e format short g format long g format hex format + format bank format rat format debug

Comando

2 1.4142 1.41421356237310 1.4142e+000 1.414213562373095e+000 1.4142 1.4142135623731 36a09e667f3bcd + 1.41 1393/985 Structure address = 12ac208 m=1 n=1 pr = 12600c0 pi = 0 1.4142

Comentrio
5 dgitos (ponto xo). 15 dgitos (ponto xo). 5 dgitos e expoente (ponto utuante). 15 dgitos e expoente (ponto utuante). O melhor entre short e short e. O melhor entre long e long e. Hexadecimal em ponto utuante. Positivo `+', negativo `' ou zero ` '. 2 casas decimais representando moeda. Aproximao racional. short g e informaes sobre armazenagem interna.

Tabela 3.1: Formatao da visualizao de resultado numrico.

3.3 Denio de matrizes


Existem diversas formas de se montar uma matriz. A mais simples delas utiliza elementos denominados aglutinadores, representados simbolicamente por colchetes, `[' e `]' . A funo dos aglutinadores consiste em concatenar (encadear), horizontalmente ou verticalmente, dados de um mesmo tipo, podendo formar matrizes numricas ou vetores de caracteres (strings ). O exemplo abaixo mostra a concatenao de duas palavras com um espao no meio, todos denidos 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, tornase fcil a tarefa de denir uma matriz. Uma matriz montada linha aps linha, onde espao ou vrgula indicam transio de coluna e ponto-e-vrgula indica transio de linha.

Grupo PET-Tele

UFF

3.3. Denio de matrizes


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

5 6

Uma outra maneira de denir matrizes consiste em criar vetores-linha com elementos em progresso aritmtica atravs da simples sintaxe:

valor_inicial : incremento : valor_nal


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 nunca ultrapasse o valor nal. Caso o incremento seja omitido, ele ser entendido como igual a 1.

>> 1:5:20 ans = 1 6

11

16

>> 2.71 : 5.71 ans = 2.7100 3.7100

4.7100

5.7100

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

linspace(valor_inicial, valor_nal, 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 base 10. Uma diferena muito importante em sua sintaxe que os valores iniciais e nais so potncias 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 programa Microsoft Excel .

UFF

Grupo PET-Tele

10

Captulo 3. Nmeros e matrizes

3.4 Indexao
O padro de indexao matricial no Matlab a forma tradicional intuitiva (r, c), onde r 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.5000 0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 >> m(2,5) ans = 1
Os elementos da matriz tambm podem ser indexados seqencialmente, conforme ilustrado na Tabela 3.2. 1 2 3 1
(1) (2) (3)

0.1 0.6 1.1

2
(4) (5) (6)

0.2 0.7 1.2

3
(7) (8) (9)

0.3 0.8 1.3

4
(10) (11) (12)

0.4 0.9 1.4

5
(13) (14) (15)

0.5 1.0 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 `:' entre os ndices inicial e nal para indicar o intervalo. Quando os ndices inicial e nal so omitidos, indica-se o intervalo inteiro. A palavra reservada `end' indica o m da linha ou da coluna.

>> m(3,1:4) ans = 1.1000 >> m(:,5) ans = 0.5000 1.0000 1.5000

1.2000

1.3000

1.4000

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

0.5000

Grupo PET-Tele

UFF

3.4. Indexao

11

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

>> m([1 3],[2 4]) ans = 0.2000 0.4000 1.2000 1.4000 >> m([1 5 9; 4 8 12]) ans = 0.1000 0.7000 0.2000 0.8000

1.3000 1.4000

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

>>m(4,6)=2.1 ans = 0.1000 0.6000 1.1000 0

0.2000 0.7000 1.2000 0

0.3000 0.8000 1.3000 0

0.4000 0.9000 1.4000 0

0.5000 1.0000 1.5000 0

0 0 0 2.1000

UFF

Grupo PET-Tele

12

Captulo 3. Nmeros e matrizes

Grupo PET-Tele

UFF

Captulo 4 Operaes com matrizes


4.1 Operaes aritmticas
As operaes aritmticas no Matlab podem ser de dois tipos: matricial ou escalar. As operaes do tipo matricial referem-se s operaes matemticas sobre matrizes. As operaes escalares so tambm denominadas de operaes sobre conjuntos. Essas ltimas so realizadas elemento-a-elemento de cada matriz, aplicando-se o operador em questo apenas entre elementos de mesma posio matricial. Denindo-se x = [2 3; 5 7] e y = [1 6; 2 4], 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 y 1 ) = 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 escalar do 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 relacionais


Os operadores relacionais e lgicos so usados em expresses lgicas booleanas para implementar testes de tomadas de deciso, fornecendo respostas do tipo verdadeiro/falso a perguntas. Para o Matlab , qualquer nmero diferente de zero representa o valor lgico verdadeiro, e zero representa o valor lgico falso. Os operadores relacionais e lgicos so apresentados na Tabela 4.1.

Operador Descrio
< <= > >= == ~= &
Menor que Menor ou igual a 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 no Matlab os operadores podem ser usados no somente com escalares, mas tambm com vetores e matrizes, sendo a operao realizada elemento a elemento.

Grupo PET-Tele

UFF

4.2. Operaes lgicas e relacionais

15

>> a=-3; b=7; >> a<b ans = 1 >> a<b & a==b ans = 0 >> x=1:10 x = 1 2 >> y=x>=5 y = 0 0

10

UFF

Grupo PET-Tele

16

Captulo 4. Operaes com matrizes

Grupo PET-Tele

UFF

Captulo 5 Funes matriciais


Qualquer funo no

Matlab

tem como sintaxe geral o seguinte padro:

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


Os parmetros de entrada devem ser postos na ordem adequada e representam os dados fornecidos pelo usurio. Eles so processados pela funo, que gera os parmetros de sada, os quais so armazenados nas variveis denidas pelo usurio no comando de chamada da funo. Deve-se ressaltar que os parmetros de entrada so escritos dentro de parnteses 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 diretamente o nmero ou matriz, ou escrevendo-se o nome da varivel correspondente. Caso as variveis de sada no sejam fornecidas pelo usurio, o programa retorna apenas a primeira sada (Sada1 ) na varivel padro ans. Abaixo, so apresentadas algumas das funes mais utilizadas para criao e manipulao de matrizes. Matrizes denidas em alguns dos exemplos podero ser utilizadas em exemplos posteriores desse mesmo captulo. A maioria das funes no Matlab apresenta inmeras opes de funcionamento. Para cada funo, ser abordado apenas um exemplo simples. Detalhamento das funes pode ser obtido atravs do comando de ajuda help nome_da_funo.

5.1 Matrizes elementares

cria uma matriz cujos elementos so todos iguais a 1, dados o nmero de linhas e colunas da matriz, respectivamente.

ones:

>> ones(2,3) ans = 1 1 1 1

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 por N (N*ones).

17

18

Captulo 5. Funes matriciais

zeros:

cria uma matriz cujos elementos so todos iguais a 0, dados os nmeros de linhas e colunas.

>> zeros(3,2) ans = 0 0 0 0 0 0

eye:

cria uma matriz identidade, dada sua ordem.

>> eye(3) ans = 1 0 0 1 0 0

0 0 1

rand:

cria uma matriz de elementos pseudo-aleatrios com distribuio uniforme entre 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 comando rand(`state',sum(100*clock)). Um comando similar, o randn, funciona de forma similar, mas com distribuio normal.

>> rand(2,7) ans = 0.9501 0.6068 0.2311 0.4860

0.8913 0.7621

0.4565 0.0185

0.8214 0.4447

0.6154 0.7919

0.9218 0.7382

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

5.2 lgebra linear

det:

retorna o determinante da matriz de entrada.

>> a=[1 2;1 3] a = 1 2 1 3 >> det(a) ans = 1

inv:

retorna a inversa da matriz de entrada.

>> inv(a) ans = 3 -2 -1 1

Grupo PET-Tele

UFF

5.3. Informaes matriciais bsicas

19

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

eig:

>> v=eig(a) v = 0.2679 3.7321 >> [V D]=eig(a) V = -0.9391 -0.5907 0.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 do nome da varivel.

entrada.

length:

retorna o comprimento do vetor ou a maior dimenso de uma matriz de

>> 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 matriz


e seus novos nmeros de linhas e colunas. Os elementos da matriz so percorridos seqencialmente, pelo modo de indexao matriz (i), apresentado na Tabela 3.2.

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

7 8

9 10

UFF

Grupo PET-Tele

20

Captulo 5. Funes matriciais

rot90:

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

>> b=[1 2 3 ; 4 5 6 ; 7 8 9] b = 1 2 3 4 5 6 7 8 9 >> rot90(b) ans = 3 6 2 5 1 4

9 8 7

iplr:

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

>> fliplr(b) ans = 3 2 6 5 9 8

1 4 7

ipud:

troca simetricamente de posio as linhas de cima com as de baixo de uma matriz de entrada.

>> flipud(b) ans = 7 8 4 5 1 2

9 6 3

diag:

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

>> diag(b) ans = 1 5 9 >> diag(ans) ans = 1 0 0 5 0 0

0 0 9

Grupo PET-Tele

UFF

5.5. Anlise de dados

21

triu:

retorna uma matriz triangular superior a partir da matriz de entrada.

>> triu(b) ans = 1 2 0 5 0 0

3 6 9

tril:

retorna uma matriz triangular inferior a partir da matriz de entrada.

>> tril(b) ans = 1 0 4 5 7 8

0 0 9

5.5 Anlise de dados

retorna a soma dos elementos de cada coluna de uma matriz de entrada ou a soma dos elementos de um vetor de entrada.

sum:

>> sum(b) ans = 12 15 >> sum(ans) ans = 45

18

prod:

retorna o produto dos elementos de cada coluna de uma matriz de entrada ou 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 de entrada 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

Grupo PET-Tele

22

Captulo 5. Funes matriciais

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

min

>> 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 >> fliplr(x) ans = 7 5

-2

-4

-6

-8

Grupo PET-Tele

UFF

Captulo 6 Funes matemticas elementares


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

6.1 Funes trigonomtricas


As funes trigonomtricas do Matlab trabalham com valores de ngulos expressos em radianos.

sin sinh asin cos cosh acos tan tanh atan


>> cos(pi) ans = -1 >> acos(ans) ans = 3.1416

seno seno hiperblico arco seno cosseno cosseno hiperblico arco cosseno tangente tangente hiperblica arco tangente

sec sech asec csc csch acsc cot coth acot

secante secante hiperblica arco secante cossecante cossecante hiperblica arco cossecante cotangente cotangente hiperblica arco cotangente

6.2 Funes exponenciais


exp log log10 log2 sqrt
exponencial (ex ) logaritmo neperiano ou natural (ln x) logaritmo na base 10 (log10 x) logaritmo na base 2 (log2 x) 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 angle conj real imag
>> z=4-3*i z = 4.0000 - 3.0000i >> abs(z) ans = 5 >> real(z)+imag(z)*i ans = 4.0000 - 3.0000i >> conj(z) ans = 4.0000 + 3.0000i
valor absoluto do nmero (mdulo) ngulo de fase do nmero, em radianos conjugado do nmero parte real do nmero parte imaginria do nmero

6.4 Funes de arredondamento e resto


x: ceil:

Aproxima para o inteiro de menor valor absoluto, ignorando as casas decimais. Aproxima para o inteiro antecessor.

oor:

Aproxima para o inteiro sucessor. Arredonda para o inteiro mais prximo.

round:

rem (remainder after division):

Resto de diviso inteira, dados respectivamente o dividendo e o divisor. Para dividendos negativos, sendo x e y inteiros positivos, rem(-x,y)=-rem(x,y). Mais detalhes em help rem.

Grupo PET-Tele

UFF

6.4. Funes de arredondamento e resto

25

(modulus after division): Resto de diviso inteira, dados respectivamente dividendo e o divisor. Para dividendos negativos, sendo x e y inteiros positivos, mod(-x,y)=y-mod(x,y) se mod(x,y)=0, ou mod(-x,y)=0 caso contrrio. Mais detalhes em help mod. Retorna +1 para nmeros positivos, 1 para nmeros negativos e 0 para nmeros iguais a zero.

mod

sign:

>> x=[-4:4] x = -4 -3 >> rem(x,3) ans = -1 0 >> mod(x,3) ans = 2 0 >> sign(x) ans = -1 -1
Observaes:

-2

-1

-2

-1

-1

-1

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 de y se x e y possuem sinais opostos.

UFF

Grupo PET-Tele

26

Captulo 6. Funes matemticas elementares

Grupo PET-Tele

UFF

Captulo 7 Funes polinomiais


No Matlab , um vetor pode ser interpretado como um polinmio quando cada um de seus elementos associado a cada um dos coecientes do polinmio, comeando pelos coecientes dos termos de maior grau. Assim, por exemplo, [2 -7 1] ser interpretado como 2x2 7x + 1. Tendo isso em conta, lista-se abaixo algumas das funes que trabalham com polinmios. Vetores denidos em alguns exemplos podero ser utilizados em exemplos posteriores.

roots:

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

>> a=[1,5,6] a = 1 5 >> roots(a) ans = -3 -2

polyval: Retorna o valor ou a imagem de um polinmio, dados respectivamente o polinmio 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 de forma 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.

Grupo PET-Tele

UFF

Captulo 8 Grcos
8.1 Grcos de duas dimenses
O Matlab um software muito eciente na criao e manipulao de grcos, apresentando diversas funes que auxiliam essas operaes. Basicamente, os grcos 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 das ordenadas; 3. Desenha-se o grco, o que ser ensinado mais adiante. Os pares ordenados (x,y) assim criados so marcados no grco e ligados por segmentos retas (interpolao linear). Observa-se, portanto, que, quanto menor for o incremento do vetor X, mais pares ordenados sero criados e, conseqentemente, melhor ser a preciso do grco. Em compensao, uma maior quantidade de memria utilizada. Entre as inmeras funes existentes, esto listadas abaixo apenas as mais usadas.

plot:

Desenha grcos de duas dimenses, dados o vetor de abscissas e o vetor de ordenadas.

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


A funo plot pode ser tambm usada no desenho de mais de um grco em uma mesma gura. Para isso, usa-se a seguinte notao:

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


onde X1 e Y1 correspondem s coordenadas do grco 1, s coordenadas do grco 2, e assim sucessivamente.

X2 e Y2 correspondem

29

30

Captulo 8. Grcos

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

Cor
y m c r g b w k amarela magenta azul-claro vermelha verde azul branca preta . o x + * s d v

Marcador
ponto crculo xis cruz estrela quadrado losango tringulo p/ tringulo p/ tringulo p/ tringulo p/ pentagrama hexagrama

Tipo de linha
: -. slida pontilhada trao-ponto tracejada

--

^ < > p h

baixo cima esquerda direita

Tabela 8.1: Formatao, em grcos, de cor, marcador e tipo de linha. A formatao de cor, marcador e tipo de linha dos grcos tambm pode ser congurada pelo usurio. Para isso usa-se a seguinte notao:

plot(X1, Y1, `Conf1', X2, Y2, `Conf2', ... , Xn, Yn, `Confn') ,
onde, no lugar de pela Tabela 8.1.

`Conf1', `Conf2', ... , `Confn', usa-se os caracteres especicados

>> plot(X,Y,`ko--',X,10*X,`*')
Para criar grcos em janelas diferentes usa-se o comando gure(n) antes do comando plot, onde n o nmero da janela de guras. Caso contrrio, cada novo grco criado ser plotado na ltima janela aberta (grco corrente). Para apagar o grco da janela corrente sem fech-la, escreve-se o comando clf .

Grupo PET-Tele

UFF

8.1. Grcos de duas dimenses

31

Figura 8.2: Grco de plot(X,Y,`ko',X,10*X,`*').

Divide a janela de guras em uma matriz m x n de sub-janelas, selecionando uma das sub-janelas pelo seu nmero correspondente. Esses nmeros esto ordenados sucessivamente ao longo das linhas. As entradas dessa funo so respectivamente o nmero de linhas e colunas da janela e a posio do par de eixos corrente.

subplot:

>> >> >> >> >> >>

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 guras.


UFF

semilogx: semilogy: loglog:

Plota grcos com o eixo x em escala logartmica na base 10. Plota grcos com o eixo y em escala logartmica na base 10.

Plota grcos com ambos os eixos em escala logartmica na base 10. Grupo PET-Tele

32

Captulo 8. Grcos

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

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

plotyy:

Plota duas curvas no mesmo grco 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 grcos em coordenadas polares segundo a seguinte sintaxe:

polar(theta, raio, `Conf') ,


onde theta o vetor de valores angulares em radianos, raio o vetor de mesma dimenso que theta contendo os valores radiais correspondentes e Conf segue as mesmas conguraes da funo plot.

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

Grupo PET-Tele

UFF

8.2. Grcos de trs dimenses

33

Figura 8.6: Grco da funo polar.

8.2 Grcos de trs dimenses


O Matlab apresenta diversos recursos para apresentao de grcos em 3D. As principais funes so listadas abaixo.

plot3:

Plota pontos e linhas em 3D a partir de trs vetores de coordenadas de mesmo tamanho.

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

Figura 8.7: Grco do comando plot3.

meshgrid:

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

UFF

Grupo PET-Tele

34

Captulo 8. Grcos

>> x=[0 1] x = 0 >> y=[2 3 4] y = 2

>> [X,Y]=meshgrid(x,y) X = 0 1 0 1 0 1 Y = 2 3 4 2 3 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: Grco 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 codicadas de acordo com a 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.

Grupo PET-Tele

UFF

8.3. Funes auxiliares

35

Figura 8.9: Grco do comando surf.

8.3 Funes auxiliares


Existem diversas funes que auxiliam a visualizao e a formatao dos grcos. As mais importantes so apresentadas abaixo.

title:

Adiciona um ttulo ao grco corrente. Esse ttulo um texto que deve ser escrito entre aspas simples, conforme a sintaxe:

title(`Ttulo do Grco')

xlabel: ylabel: text:

Adiciona um texto ao eixo das abscissas do grco corrente. Adiciona um texto ao eixo das ordenadas do grco corrente.

Cria um texto posicionado na coordenada fornecida, conforme a sintaxe:

text(X, Y, `Texto')

grid: axis:

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

axis([Xmin Xmax Ymin Ymax])


Essa funo ajusta o grco para os intervalos delimitados pelo usurio. Outras aplicaes podem ser vistas em help axis.

hold on:

Permite que novos grcos sejam criados na janela corrente sem que os grcos anteriores sejam apagados.

hold o :

Desabilita o comando anterior.

UFF

Grupo PET-Tele

36

Captulo 8. Grcos

whitebg:

Congura a cor de fundo da janela de gura 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 componentes primrias da cor. O vetor [0 0 0] corresponde ao preto e o vetor [1 1 1] ao branco.

>> >> >> >> >> >> >> >> >> >>

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 gura exportada do Matlab . Nos textos inseridos nela, possvel mudar o tipo e o tamanho da fonte, escrever em negrito, itlico, subscrito, sobrescrito e ainda representar letras gregas. Isso pode ser compreendido pela Tabela 8.2.

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

Grupo PET-Tele

UFF

8.3. Funes auxiliares

37

Propriedade
Tipo de fonte Tamanho de fonte Negrito Itlico Subscrito Sobrescrito Letra grega

Sintaxe

\fontname{} \fontsize{} \bf{} \it{} _{} ^{} \letra

Exemplo

\fontname{`Arial'} \fontsize{14} \bf{Negrito} \it{Itlico} R_{1} x^{2} \pi

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

UFF

Grupo PET-Tele

38

Captulo 8. Grcos

Grupo PET-Tele

UFF

Captulo 9 Funes polinomiais racionais complexas


Uma funo polinomial racional complexa denida como uma razo de polinmios de variveis complexas, conforme a equao

H (s) =

bm sm + ... + b1 s + b0 (s + z1 )(s + z2 )...(s + zm ) NH (s) = = (k ) , n DH (s) an s + ... + a1 s + a0 (s + p1 )(s + p2 )...(s + pn )

onde os coecientes a1 , a2 , , an e b1 , b2 , , bm sero considerados reais e constantes, e m k=b . an As razes do numerador e do denominador so chamadas, respectivamente, de zeros e plos da funo H (s). A constante k denominada ganho.

tf2zp:

Encontra zeros, plos e ganho, dados o numerador e denominador da funo.

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

>> [z,p,g]=tf2zp(num,den) z = -1 p = -3 -2 1

g =

39

40

Captulo 9. Funes polinomiais racionais complexas

zp2tf :

Encontra o numerador e denominador da funo, dados zeros, plos 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, dados o numerador e denominador.

>> H=tf(N,D) Transfer function: s + 1 ------------s^2 + 5 s + 6

pzmap:

Apresenta o diagrama de plos e zeros, dado o objeto da funo de transferncia. Cada raiz do numerador (zero) representada no plano complexo por um crculo (), enquanto cada raiz do denominador (plo) representada por um xis ().

>> pzmap(H)

Figura 9.1: Diagrama de plos e zeros.

Grupo PET-Tele

UFF

41

bode:

Desenha os grcos de mdulo |H (j )|dB e ngulo de fase H (j ) da resposta em freqncia H (j ) = H (s)|s=j , dado o objeto relativo funo de transferncia H (s).

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

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

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

freqs: Retorna um vetor complexo com a resposta em freqncia H (j) = H (s)|s=j ,


dados o seu numerador, o seu denominador e um vetor de freqncias . Caso seja omitida a varivel de retorno, esta funo simplesmente exibe os grcos de mdulo e 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

Grupo PET-Tele

42

Captulo 9. Funes polinomiais racionais complexas

Figura 9.3: Grco de mdulo e fase.

Grupo PET-Tele

UFF

Captulo 10 Programao
10.1 Funes e scripts
Funes e scripts so seqncias de comandos do Matlab armazenadas em arquivos do tipo texto com extenso `.m' (m-les ), que tm por nalidade automatizar processos repetitivos e implementar clculos e comandos lgicos. A diferena bsica entre ambos que as funes aceitam parmetros de entrada e retornam parmetros de sada, enquanto os scripts unicamente executam a seqncia de comandos. As funes e os scripts podem ser criados escrevendo edit na linha de comando ou clicando na barra de ferramentas em File > New > M-le. Por carem armazenados em arquivos texto, eles podem ser editados em qualquer editor de textos. Os mesmos comandos que o usurio escreveria no prompt da Janela de Comando so usados para a implementao do script. Para que o m-le 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 os parmetros 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. No caso da funo, a primeira seqncia de comentrios aparecer quando for digitado help nome_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 com a extenso `.m' (no exemplo, `complexo.m'). Uma condio necessria para a execuo de arquivos M que eles estejam no diretrio corrente do Matlab . Para execuo de um script, feita na barra de ferramentas da janela de edio pela opo Debug>Run ou File>Run Script (dependendo da verso do Matlab ), a mudana de diretrio corrente automtica, sendo desnecessria a interveno do usurio. A mudana de diretrio corrente pode ser feita clicando-se no boto da janela principal do programa contendo `...', ao lado de Current Directory, ou por um dos seguintes comandos.

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 corrente ou na biblioteca do Matlab . cd - muda para o diretrio raiz (root )

10.2 Controle de uxo


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

10.2.1

Estruturas condicionais

Uma estrutura condicional permite a seleo de um conjunto de comandos a serem executados quando uma dada condio for ou no satisfeita, podendo assim modicar o uxo natural de comandos. As trs estruturas condicionais bsicas do Matlab esto listadas a seguir.

Grupo PET-Tele

UFF

10.2. Controle de uxo


Estrutura if 1 if condio end Estrutura if 2 if condio1 else Estrutura if 3 if condio1 elseif

45

comandos

comandos1 condio2 comandos2 comandos2 end elseif condio3 comandos3


... else end

comandos1

comandosN

As estruturas 1 e 2 so casos particulares da estrutura 3. As condies so formadas pelos operadores lgicos e relacionais. Abaixo mostrado um exemplo de um script com uma 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_teste case expresso_teste1

otherwise end

comandos1 case {expresso_teste2, expresso_teste3, expresso_teste4 } comandos2 comandos3

otherwise (que opcional) sero executados. O exemplo abaixo demonstra uma aplicao da estrutura switch-case.
UFF Grupo PET-Tele

Se os testes de igualdade resultarem em falso para todos os casos, os comandos de

46

Captulo 10. Programao

clear all num=input('Escreva um inteiro: '); % Exibe texto e l valor para a varivel. switch num case 1 y=1 case {2, 2.5} y=2 case 'tres' y=3 case {'quatro', 'Quatro', 'QUATRO' } y=4 otherwise y=0 end

10.2.2

Estruturas de repetio

Uma estrutura de repetio faz com que uma seqncia de comandos seja executada repetidamente enquanto se satisfaa uma dada condio. O Matlab possui duas estruturas de repetio: for e while.

Estrutura for for varivel =inic:incr:m end

comandos

Estrutura while while condio end

comandos

A condio da estrutura for que varivel seja menor ou igual a m. Enquanto satisfeita essa condio, ao trmino de cada loop de comandos, varivel incrementada de incr. O incremento incr considerado unitrio caso seja omitido. Abaixo, segue um exemplo de clculo de mdia usando-se, de forma comparativa, as duas estruturas. Grupo PET-Tele UFF

10.2. Controle de uxo

47

clear all x=input('Vetor de amostras: '); compr=length(x); % retorna o comprimento do vetor soma_f=0; for k=1:compr soma_f=soma_f+x(k); end media_f=soma_f./compr; soma_w=0; k=1; while k<=compr soma_w=soma_w+x(k); k=k+1; end media_w=soma_w./compr; disp('Media do for: '); % Exibe string disp(media_f); % Exibe valor da varivel disp('Media do while: '); disp(media_w);

UFF

Grupo PET-Tele

48

Captulo 10. Programao

Grupo PET-Tele

UFF

Apndice A Funes relativas a aproximaes para ltros seletores em freqncia


Este captulo contm os principais comandos do Matlab para o projeto de ltros analgicos e digitais. Existem vrios tcnicas de aproximaes para a construo de ltros. Cada tcnica usada de acordo com as especicaes do sistema a ser projetado. A seguir, so apresentados os comandos com as opes utilizadas no projeto de ltros analgicos. Para os ltros digitais, consulte o manual, atravs do comando help comando.

A.1 Butterworth
BUTTORD
calcula a ordem de um ltro

Butterworth.

[N, Wn] = buttord(Wp, Ws, Rp, Rs,`s')  Este comando retorna a ordem do ltro Butterworth que tenha, no mximo, Rp dB de atenuao na banda de passagem e, no mnimo, Rs dB na banda de rejeio. W p and W s so as freqncias da banda de passagem e rejeio, respectivamente. W deve ser dado em rad/sec.
Exemplo:

passa-baixa: passa-alta: banda de passagem: banda de rejeio:

Wp Wp Wp Wp

= = = =

x y [x1 x2] [y1 y2]

Ws Ws Ws Ws

= = = =

y x [y1 y2] [x1 x2]

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

BUTTER

calcula os coecientes de um ltro

Butterworth.

[num,dem] = butter(N,Wn,`s')  Este comando retorna os coecientes do numerador (num ) e denominador (dem ) da funo de transferncia do ltro Butterworth passa-baixa. N a ordem do ltro e Wn a freqncia de corte.
Se Wn for um vetor contendo duas freqncias W n = [W1 W2 ] este comando retorna a funo de transferncia do ltro passa-banda Butterworth de ordem 2N tendo Banda de passagem com W 1 < W < W 2.

49

50

Apndice A. Funes relativas a aproximaes para ltros seletores em freqncia


[num,dem] = butter(N,Wn,`high',`s')  Calcula um ltro passa-alta. [num,dem] = butter(N,Wn,`stop',`s')  Calcula um ltro rejeita-banda, se W n = [W 1 W 2]. [Z,P,K] = butter(...)  Retorna zeros, plos e ganho escalar K .

A.2 Chebyshev
CHEB1ORD
calcula a ordem de um ltro

Chebyshev Tipo I .

[N, Wn] = cheb1ord(Wp, Ws, Rp, Rs,`s')  Este comando retorna a ordem do ltro Chebyshev que tenha, no mximo, Rp dB de atenuao na banda de passagem e, no mnimo, Rs dB na banda de rejeio. W p and W s so as freqncias da banda de passagem e rejeio respectivamente. W deve ser dado em rad/sec.
Exemplo:

passa-baixa: passa-alta: banda de passagem: banda de rejeio:

Wp Wp Wp Wp

= = = =

x y [x1 x2] [y1 y2]

Ws Ws Ws Ws

= = = =

y x [y1 y2] [x1 x2]

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

CHEBY1

calcula os coecientes de um ltro

Chebyshev Tipo I.

[num,dem] = cheby1(N,R,`s')  Este comando retorna os coecientes do numerador (num ) e denominador (dem ) da funo de transferncia do ltro chebyshev passa-baixa. N a ordem do ltro , R a atenuao mxima na banda de passagem e Wn a freqncia de corte.
Se Wn for um vetor contendo duas freqncias W n = [W1 W2 ] este comando retorna a funo de transferncia do ltro passa-banda Chebyshev de ordem 2N tendo banda de passagem com W 1 < W < W 2. [num,dem] = cheby1(N,R,Wn,`high',`s')  Calcula um ltro passa-alta. [num,dem] = cheby1(N,R,Wn,`stop',`s')  Calcula um ltro rejeita-banda, se W n = [W 1 W 2].

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

CHEB2ORD

calcula a ordem de um ltro

Chebyshev Tipo II .

[N, Wn] = cheb2ord(Wp, Ws, Rp, Rs,`s')  Este comando retorna a ordem do ltro Chebyshev que tenha, no mximo, Rp dB de atenuao na banda de passagem e, no mnimo, Rs dB na banda de rejeio. W p and W s so as freqncias da banda de passagem e rejeio respectivamente. W deve ser dado em rad/sec.
Exemplo:

passa-baixa:

Wp = x

Ws = y

Grupo PET-Tele

UFF

A.3. Elptico (Cauer)


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

51

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

CHEBY2

calcula os coecientes de um ltro

Chebyshev Tipo II.

[num,dem] = cheby2(N,R,`s')  Este comando retorna os coecientes do numerador (num ) e denominador (dem ) da funo de transferncia do ltro Chebyshev passa-baixa. N a ordem do ltro , R a atenuao mnima na banda de rejeio e Wn a freqncia de corte da banda de rejeio.
Se Wn for um vetor contendo duas freqncias W n = [W1 W2 ] este comando retorna a funo de transferncia do ltro passa-banda Chebyshev de ordem 2N tendo banda de passagem com W 1 < W < W 2. [num,dem] = cheby2(N,R,Wn,`high',`s')  calcula um ltro passa-alta. [num,dem] = cheby2(N,R,Wn,`stop',`s')  calcula um ltro rejeita-banda, se W n = [W 1 W 2].

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

A.3 Elptico (Cauer)


ELLIPORD
calcula a ordem de um ltro

Elptico .

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

passa-baixa: passa-alta: banda de passagem: banda de rejeio:

Wp Wp Wp Wp

= = = =

x y [x1 x2] [y1 y2]

Ws Ws Ws Ws

= = = =

y x [y1 y2] [x1 x2]

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

ELLIP

calcula os coecientes de um ltro

Elptico.

[num,dem] = ellip(N,Rp,Rs,Wn,`s')  Este comando retorna os coecientes do numerador (num ) e denominador (dem ) da funo de transferncia do ltro Elliptic passa-baixa. N a ordem do ltro, Wn a freqncia de corte, Rp dB de atenuao na banda de passagem e Rs dB na banda de rejeio.
Se Wn for um vetor contendo duas freqncias W n = [W1 W2 ] este comando retorna a funo de transferncia do ltro passa-banda Elliptic de ordem 2N tendo Banda de passagem com W 1 < W < W 2.

UFF

Grupo PET-Tele

52

Apndice A. Funes relativas a aproximaes para ltros seletores em freqncia


[num,dem] = ellip(N,Rp,Rs,Wn,`high',`s')  Calcula um ltro passa-alta. [num,dem] = ellip(N,Rp,Rs,Wn,`stop',`s')  Calcula um ltro rejeita-banda, se W n = [W 1 W 2]. [Z,P,K] = ellip(...)  Retorna zeros, plos e ganho escalar K .

Grupo PET-Tele

UFF

Você também pode gostar