Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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 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.
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
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
23
7 Funes polinomiais
iii
27
iv
Sumrio
8 Grcos
8.1 8.2 8.3
29
39 43
43 44 44 46
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.
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
>> 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:
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:
save.
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.
Grupo PET-Tele
UFF
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.
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.
>> 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
5 6
Uma outra maneira de denir matrizes consiste em criar vetores-linha com elementos em progresso aritmtica atravs da simples sintaxe:
11
16
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 :
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.
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
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)
2
(4) (5) (6)
3
(7) (8) (9)
4
(10) (11) (12)
5
(13) (14) (15)
>> m(3,1:4) ans = 1.1000 >> m(:,5) ans = 0.5000 1.0000 1.5000
1.2000
1.3000
1.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.
0 0 0 2.1000
UFF
Grupo PET-Tele
12
Grupo PET-Tele
UFF
13
14
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
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
Grupo PET-Tele
UFF
Matlab
cria uma matriz cujos elementos so todos iguais a 1, dados o nmero de linhas e colunas da matriz, respectivamente.
ones:
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
zeros:
cria uma matriz cujos elementos so todos iguais a 0, dados os nmeros de linhas e colunas.
eye:
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.
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.
det:
inv:
Grupo PET-Tele
UFF
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
size:
entrada.
length:
7 8
9 10
UFF
Grupo PET-Tele
20
rot90:
9 8 7
iplr:
troca simetricamente de posio as colunas da esquerda com as da direita de uma matriz de entrada.
1 4 7
ipud:
troca simetricamente de posio as linhas de cima com as de baixo de uma matriz de entrada.
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.
0 0 9
Grupo PET-Tele
UFF
21
triu:
3 6 9
tril:
0 0 9
retorna a soma dos elementos de cada coluna de uma matriz de entrada ou a soma dos elementos de um vetor de entrada.
sum:
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.
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
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
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.
-2
-4
-6
-8
Grupo PET-Tele
UFF
seno seno hiperblico arco seno cosseno cosseno hiperblico arco cosseno tangente tangente hiperblica arco tangente
secante secante hiperblica arco secante cossecante cossecante hiperblica arco cossecante cotangente cotangente hiperblica arco cotangente
23
24
x: ceil:
Aproxima para o inteiro de menor valor absoluto, ignorando as casas decimais. Aproxima para o inteiro antecessor.
oor:
round:
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
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
Grupo PET-Tele
UFF
roots:
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:
27
28
conv:
Convolui dois polinmios. Na prtica, isso o mesmo que multiplicar de forma distributiva dois polinmios (mas no dois vetores).
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:
X2 e Y2 correspondem
29
30
Captulo 8. Grcos
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
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.
>> 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
31
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:
UFF
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
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))
polar:
Grupo PET-Tele
UFF
33
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,Y]=meshgrid(x,y) X = 0 1 0 1 0 1 Y = 2 3 4 2 3 4
mesh:
surf :
>> 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
35
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')
Adiciona um texto ao eixo das abscissas do grco corrente. Adiciona um texto ao eixo das ordenadas do grco corrente.
text(X, Y, `Texto')
grid: axis:
Mostra linhas de grade no grco corrente. Delimita os intervalos dos eixos de acordo com a sintaxe:
hold on:
Permite que novos grcos sejam criados na janela corrente sem que os grcos anteriores sejam apagados.
hold o :
UFF
Grupo PET-Tele
36
Captulo 8. Grcos
whitebg:
>> >> >> >> >> >> >> >> >> >>
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
37
Propriedade
Tipo de fonte Tamanho de fonte Negrito Itlico Subscrito Sobrescrito Letra grega
Sintaxe
Exemplo
UFF
Grupo PET-Tele
38
Captulo 8. Grcos
Grupo PET-Tele
UFF
H (s) =
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:
>> [z,p,g]=tf2zp(num,den) z = -1 p = -3 -2 1
g =
39
40
zp2tf :
>> [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.
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)
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})
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
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[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
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.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
45
comandos
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:
otherwise end
otherwise (que opcional) sero executados. O exemplo abaixo demonstra uma aplicao da estrutura switch-case.
UFF Grupo PET-Tele
46
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.
comandos
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
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
Grupo PET-Tele
UFF
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:
Wp Wp Wp Wp
= = = =
Ws Ws Ws Ws
= = = =
BUTTER
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
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:
Wp Wp Wp Wp
= = = =
Ws Ws Ws Ws
= = = =
CHEBY1
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].
CHEB2ORD
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
51
CHEBY2
[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].
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:
Wp Wp Wp Wp
= = = =
Ws Ws Ws Ws
= = = =
ELLIP
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
Grupo PET-Tele
UFF