Você está na página 1de 58

Universidade Federal Fluminense

Escola de Engenharia
Curso de Engenharia de Telecomunicaes
Programa de Educao Tutorial
Grupo PET-Tele

Apostila de Introduo ao Octave/Matlab

(Verso: A2011M11D01)

Niteri - RJ
Novembro / 2011

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 no esto presentes em nenhuma das 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 - linguagem de programao para hipertextos, empregada, principalmente, na
construo de pginas da Internet (webpages).
LaTeX - sistema de edio de texto largamente utilizado em meios acadmicos e cientficos, bem como por editoras nacionais e internacionais.
Linux - introduo ao sistema operacional LINUX.
Linguagem C - linguagem de programao amplamente utilizada em problemas de engenharia e computao.
MATLAB - ambiente de simulao matemtica, utilizado em diversas reas profissionais.
Spice - 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 Matlabr .
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. Ela destina-se a introduzir, de forma sucinta, o usurio ao ambiente do programa, mostrando e exemplificando as ferramentas bsicas de utilizao do mesmo. Para
maiores informaes e um estudo mais aprofundado, consulte as referncias bibliogrficas
no fim do documento.
muito importante, para um melhor aprendizado, que o leitor esteja em frente a
um computador com o software instalado. medida 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, organizadas em
sees relativas a suas aplicaes.

Verso atual:
ltimas atualizaes:

Carina Ribeiro Barbio Corra


Mariana da Costa Santos
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 Informaes iniciais . . . . . . .
1.2 Janelas . . . . . . . . . . . . . .
1.3 Ajuda . . . . . . . . . . . . . .
1.4 Bibliotecas do Matlabr . . .

.
.
.
.

1
1
1
2
3

2 Variveis
2.1 Declarao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 Manipulao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3 Variveis pr-definidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5
5
5
6

3 Nmeros e matrizes
3.1 Representao numrica
3.2 Formatos de visualizao
3.3 Definio de matrizes . .
3.4 Indexao . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

. . . . . . .
de nmeros
. . . . . . .
. . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

7
7
7
8
10

4 Operaes com matrizes


13
4.1 Operaes aritmticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Operaes lgicas e relacionais . . . . . . . . . . . . . . . . . . . . . . . . . 14
5 Funes matriciais
5.1 Matrizes elementares . . . . .
5.2 lgebra linear . . . . . . . . .
5.3 Informaes matriciais bsicas
5.4 Manipulao de matrizes . . .
5.5 Anlise de dados . . . . . . .

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

17
17
18
19
19
21

6 Funes matemticas elementares


6.1 Funes trigonomtricas . . . . . .
6.2 Funes exponenciais . . . . . . . .
6.3 Funes complexas . . . . . . . . .
6.4 Funes de arredondamento e resto

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

23
23
23
24
24

.
.
.
.
.

.
.
.
.
.

7 Funes polinomiais

27

iii

iv

Sumrio

8 Grficos
29
8.1 Grficos de duas dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . 29
8.2 Grficos de trs dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
8.3 Funes auxiliares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
9 Funes polinomiais racionais complexas

39

10 Programao
10.1 Funes e scripts
10.2 Controle de fluxo
10.2.1 Estruturas
10.2.2 Estruturas

43
43
44
44
46

. . . . . . .
. . . . . . .
condicionais
de repetio

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

A Funes relativas a aproximaes para filtros seletores em


A.1 Butterworth . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.2 Chebyshev . . . . . . . . . . . . . . . . . . . . . . . . . . . .
A.3 Elptico (Cauer) . . . . . . . . . . . . . . . . . . . . . . . . .

PET
Tele))

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

frequncia 49
. . . . . . . . 49
. . . . . . . . 50
. . . . . . . . 51

UFF

Captulo 1
Introduo
1.1

Informaes iniciais

O Matlabr (abreviatura de MATrix LABoratory - Laboratrio de Matrizes) um software de simulao matemtica que realiza operaes matriciais, constri grficos 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 tcnica e cientfica, o software tem funes de
tratamento numrico de alto desempenho, capazes de resolver problemas computacionais
tcnicos de forma mais eficiente do que as tradicionais linguagens de programao.
Alm do ambiente interativo, outra facilidade do Matlabr a possibilidade de execuo 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 fora
do seu ambiente.

1.2

Janelas

Atravs de objetos grficos denominados janelas, o usurio opera as funcionalidades do


programa 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 Enter
ser pressionada, o programa os processa imediatamente e expe na tela o resultado. Os
comandos digitados so armazenados em um buffer 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 =
1
c =
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-file 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 Matlabr . 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.

PET
Tele))

UFF

1.4. Bibliotecas do Matlabr

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

O Matlabr apresenta uma srie de comandos, operadores e funes primitivas, organizadas por categorias, assim como rotinas especficas 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:
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

PET
Tele))

PET
Tele))

Captulo 1. Introduo

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 dimensionadas antes do uso, pois so geradas automaticamente ao serem utilizadas. Para criar
e/ou armazenar informaes em variveis definidas 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 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 expresso no haja uma atribuio do resultado para alguma varivel definida pelo usurio, o
resultado ser armazenado na varivel ans, pr-definida pelo ambiente.

2.2

Manipulao

Existem comandos prprios para manipulao de variveis. Abaixo esto listados os mais
utilizados.
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 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: Recupera as variveis previamente salvas em arquivo pelo comando save.
clc: Limpa a janela de comandos.

2.3

Variveis pr-definidas

No Matlabr , existem algumas variveis pr-definidas 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 flutuante, ou distncia entre o 1 e o prximo nmero real.
Infinito (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-definidas.

Caso o usurio defina e utilize uma varivel com o mesmo nome de alguma das variveis
ou das funes pr-definidas, ela funcionar como uma varivel comum, perdendo seu
significado original. Quando apagada, ela retornar ao seu comportamento pr-definido.
>> i=999
i =
999
>> clear i
>> i
ans =
0 + 1.0000i

PET
Tele))

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 ser
interpretado como uma matriz de dimenso 11.
Nmeros negativos, com casas decimais, complexos e sob a forma de notao cientfica
podem 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 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 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. A


visualizao dos nmeros nas janelas Command Window e Workspace, entretanto, pode
ser feita em diversos formatos. Por definio, o Matlabr exibe os resultados em trs
formatos 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, ou
simplesmente digitando na Janela de Comando a instruo format
seguida do formato
especfico. A Tabela 3.1 ilustra cada um deles, exibindo o nmero 2 como exemplo.

Captulo 3. Nmeros e matrizes

Comando
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

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

Comentrio
5 dgitos (ponto fixo).
15 dgitos (ponto fixo).
5 dgitos e expoente (ponto flutuante).
15 dgitos e expoente (ponto flutuante).
O melhor entre short e short e.
O melhor entre long e long e.
Hexadecimal em ponto flutuante.
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

Definio 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 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, tornase fcil a tarefa de definir uma matriz. Uma matriz montada linha aps linha, onde
espao ou vrgula indicam transio de coluna e ponto-e-vrgula indica transio de linha.

PET
Tele))

UFF

3.3. Definio de matrizes

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

5
6

Outra maneira de definir matrizes consiste em criar vetores-linha com elementos em


progresso 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 nunca
ultrapasse o valor final. Caso o incremento seja omitido, ele ser entendido como igual a
1.
>> 1:5:20
ans =
1
6

11

>> 2.71 : 5.71


ans =
2.7100
3.7100

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


10. Uma diferena muito importante em sua sintaxe que os valores iniciais e finais 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 Excelr .

UFF

PET
Tele))

10

3.4

Captulo 3. Nmeros e matrizes

Indexao

O padro de indexao matricial no Matlabr 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
1
2
3

(1)
(2)
(3)

2
0.1
0.6
1.1

(4)
(5)
(6)

3
0.2
0.7
1.2

(7)
(8)
(9)

4
0.3
0.8
1.3

(10)
(11)
(12)

5
0.4
0.9
1.4

(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 final para indicar o intervalo. Quando os ndices inicial e final so
omitidos, indica-se o intervalo inteiro. A palavra reservada end indica o fim da linha ou
da coluna.
>> m(3,1:4)
ans =
1.1000

1.2000

1.3000

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

0.5000

1.4000

>> m(:,5)
ans =
0.5000
1.0000
1.5000

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

UFF

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

PET
Tele))

12

PET
Tele))

Captulo 3. Nmeros e matrizes

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. 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.
Definindo-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.: x0 = 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) x0 )0 = [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 Matlabr , 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 Matlabr os operadores podem ser usados no somente
com escalares, mas tambm com vetores e matrizes, sendo a operao realizada elemento
a elemento.

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

10

>> y=x>=5
y =
0

UFF

PET
Tele))

16

PET
Tele))

Captulo 4. Operaes com matrizes

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 os
dados fornecidos pelo usurio. Eles so processados pela funo, que gera os parmetros
de sada, os quais so armazenados nas variveis definidas 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 definidas em alguns dos exemplos podero ser utilizadas em
exemplos 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 funes
pode 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 de
linhas e colunas da matriz, respectivamente.
>> 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.2311

0.6068
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

PET
Tele))

UFF

5.3. Informaes matriciais bsicas

19

eig: 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.
>> 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

5.3

0
3.7321

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.
length: retorna o comprimento do vetor ou a maior dimenso de uma matriz de
entrada.
>> 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
sequencialmente, pelo modo de indexao matriz(i), apresentado na Tabela 3.2.
>> reshape(1:10,2,5)
ans =
1
3
5
2
4
6

UFF

7
8

9
10

PET
Tele))

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
3
4
5
6
7
8
9
>> rot90(b)
ans =
3
6
2
5
1
4

9
8
7

fliplr: 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

flipud: 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

PET
Tele))

0
0
9

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

5.5

0
0
9

Anlise de dados

sum: retorna a soma dos elementos de cada coluna de uma matriz de entrada ou a
soma 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 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

PET
Tele))

22

Captulo 5. Funes matriciais

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

PET
Tele))

-2

-4

-6

-8

UFF

Captulo 6
Funes matemticas elementares
O Matlabr 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 Matlabr trabalham com valores de ngulos expressos em


radianos.
sin
sinh
asin
cos
cosh
acos
tan
tanh
atan

sec
sech
asec
csc
csch
acsc
cot
coth
acot

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

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

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

valor absoluto do nmero (mdulo)


ngulo de fase do nmero, em radianos
conjugado do nmero
parte real do nmero
parte imaginria do nmero

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

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

PET
Tele))

UFF

6.4. Funes de arredondamento e resto

25

mod (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)6=0, ou mod(-x,y)=0 caso contrrio. Mais detalhes em help mod.
sign: Retorna +1 para nmeros positivos, 1 para nmeros negativos e 0 para
nmeros iguais a zero.
>> x=[-4:4]
x =
-4
-3

-2

-1

>> rem(x,3)
ans =
-1
0

-2

-1

>> mod(x,3)
ans =
2
0

>> sign(x)
ans =
-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 de
y se x e y possuem sinais opostos.

UFF

PET
Tele))

26

PET
Tele))

Captulo 6. Funes matemticas elementares

UFF

Captulo 7
Funes polinomiais
No Matlabr , um vetor pode ser interpretado como um polinmio quando cada um de
seus elementos associado a cada um dos coeficientes do polinmio, comeando pelos
coeficientes dos termos de maior grau. Assim, por exemplo, [2 -7 1] ser interpretado
como 2x2 7x + 1.
Tendo isso em conta, listam-se abaixo algumas das funes que trabalham com polinmios. Vetores definidos 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.

PET
Tele))

UFF

Captulo 8
Grficos
8.1

Grficos de duas dimenses

O Matlabr um software muito eficiente na criao e manipulao de grficos, apresentando 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 das
ordenadas;
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 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 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 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 grfico em uma
mesma 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 correspondem
s coordenadas do grfico 2, e assim sucessivamente.

29

30

Captulo 8. Grficos

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


Cor
y amarela
m magenta
c azul-claro
r vermelha
g verde
b azul
w branca
k preta

Marcador
. ponto
o crculo
x xis
+ cruz
* estrela
s quadrado
d losango
v tringulo p/ baixo
^ tringulo p/ cima
< tringulo p/ esquerda
> tringulo p/ direita
p pentagrama
h hexagrama

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

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 configurada 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 especificados
pela Tabela 8.1.
>> plot(X,Y,ko--,X,10*X,*)
Para criar grficos em janelas diferentes, usa-se o comando figure(n) antes do
comando plot, onde n o nmero da janela de figuras. Caso contrrio, cada novo
grfico criado ser plotado na ltima janela aberta (grfico corrente). Para apagar
o grfico da janela corrente sem fech-la, escreve-se o comando clf .

PET
Tele))

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, 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(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

PET
Tele))

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 mesma
dimenso que theta, contendo os valores radiais correspondentes e 0 Conf 0 segue as
mesmas configuraes da funo plot.
>> ang=[0:.1:2*pi];
>> raio=10*ang;
>> polar(ang,raio);

PET
Tele))

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 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: Grfico 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

PET
Tele))

34

Captulo 8. Grficos

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

PET
Tele))

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 mais
importantes so apresentadas abaixo.
title: Adiciona um ttulo ao grfico corrente. Esse ttulo um texto que deve ser
escrito 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. Outras
aplicaes podem ser vistas em help axis.
hold on: Permite que novos grficos sejam criados na janela corrente sem que os
grficos anteriores sejam apagados.
hold off : Desabilita o comando anterior.

UFF

PET
Tele))

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 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 figura exportada do Matlabr .
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 grficos 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.

PET
Tele))

UFF

8.3. Funes auxiliares

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

37

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

UFF

PET
Tele))

38

PET
Tele))

Captulo 8. Grficos

UFF

Captulo 9
Funes polinomiais racionais
complexas
Uma funo polinomial racional complexa definida 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 coeficientes a1 , a2 , , an e b1 , b2 , , bm sero considerados reais e constantes, e


k = bamn .
As razes do numerador e do denominador so chamadas, respectivamente, de zeros e
polos 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

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

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

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 polos 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 (polo) representada por um xis
().
>> pzmap(H)

Figura 9.1: Diagrama de polos e zeros.

PET
Tele))

UFF

41

bode: Desenha os grficos de mdulo |H(j)|dB e ngulo de fase H(j) da resposta em frequncia H(j) = H(s)|s=j , dado o objeto relativo funo de transferncia 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 frequncia H(j) = H(s)|s=j ,
dados o seu numerador, o seu denominador e um vetor de frequncias . Caso seja
omitida a varivel de retorno, esta funo simplesmente exibe os grficos de mdulo
e de ngulo de fase.
>>
>>
>>
>>
>>
>>
>>
>>
>>

UFF

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));

PET
Tele))

42

Captulo 9. Funes polinomiais racionais complexas

Figura 9.3: Grfico de mdulo e fase.

PET
Tele))

UFF

Captulo 10
Programao
10.1

Funes e scripts

Funes e scripts so sequncias de comandos do Matlabr armazenadas em arquivos


do tipo texto com extenso .m (m-files), que tm por finalidade 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 sequncia 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-file. Por ficarem 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-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 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 sequncia 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 Matlabr . 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 Matlabr ), 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 Matlabr .
cd - muda para o diretrio raiz (root)

10.2

Controle de fluxo

As linguagens imperativas de programao de computadores caracterizam-se pela execuo sequencial de comandos. Elas possuem ainda recursos que permitem o controle de
fluxo 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 modificar o fluxo
natural de comandos. As trs estruturas condicionais bsicas do Matlabr esto listadas
a seguir.

PET
Tele))

UFF

10.2. Controle de fluxo

Estrutura if 1
if condio
comandos
end

45

Estrutura if 2
if condio1
comandos1
else
comandos2
end

Estrutura if 3
if condio1
comandos1
elseif condio2
comandos2
elseif condio3
comandos3
...
else
comandosN
end

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
comandos1
case {expresso_teste2, expresso_teste3, expresso_teste4 }
comandos2
otherwise
comandos3
end

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


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

PET
Tele))

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 sequncia de comandos seja executada repetidamente enquanto se satisfaa uma dada condio. O Matlabr possui duas estruturas
de repetio: for e while.

Estrutura for
for varivel =inic:incr:fim
comandos
end

Estrutura while
while condio
comandos
end

A condio da estrutura for que varivel seja menor ou igual a fim. 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.
PET
Tele))

UFF

10.2. Controle de fluxo

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

PET
Tele))

48

PET
Tele))

Captulo 10. Programao

UFF

Apndice A
Funes relativas a aproximaes para
filtros seletores em frequncia
Este captulo contm os principais comandos do Matlabr , para o projeto de filtros
analgicos 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 filtros
analgicos. 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 do
filtro 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 frequncias 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 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 numerador (num) e denominador (dem) da funo de transferncia do filtro Butterworth
passa-baixa. N a ordem do filtro e Wn a frequncia de corte.
Se Wn for um vetor contendo duas frequncias W n = [W1 W2 ] este comando retorna
a funo de transferncia do filtro 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 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, se W n =
[W 1 W 2].
[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 do
filtro 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 frequncias 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 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 numerador (num) e denominador (dem) da funo de transferncia do filtro chebyshev
passa-baixa. N a ordem do filtro , R a atenuao mxima na banda de passagem
e Wn a frequncia de corte.
Se Wn for um vetor contendo duas frequncias W n = [W1 W2 ] este comando retorna
a funo de transferncia do filtro 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 filtro passa-alta.
[num,dem] = cheby1(N,R,Wn,stop,s) Calcula um filtro rejeita-banda, se
W n = [W 1 W 2].
[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 do
filtro 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 frequncias da banda
de passagem e rejeio respectivamente. W deve ser dado em rad/sec.
Exemplo:
passa-baixa:

PET
Tele))

Wp = x

Ws = y

UFF

A.3. Elptico (Cauer)

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

51

Wp = y
Wp = [x1 x2]
Wp = [y1 y2]

Ws = x
Ws = [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 numerador (num) e denominador (dem) da funo de transferncia do filtro Chebyshev
passa-baixa. N a ordem do filtro , 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 frequncias W n = [W1 W2 ] este comando retorna
a funo de transferncia do filtro 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 filtro passa-alta.
[num,dem] = cheby2(N,R,Wn,stop,s) calcula um filtro rejeita-banda, se
W n = [W 1 W 2].
[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 do
filtro 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 frequncias 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 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 do
numerador (num) e denominador (dem) da funo de transferncia do filtro Elliptic
passa-baixa. N a ordem do filtro, Wn a frequncia de corte, Rp dB de atenuao
na banda de passagem e Rs dB na banda de rejeio.
Se Wn for um vetor contendo duas frequncias W n = [W1 W2 ] este comando retorna
a funo de transferncia do filtro passa-banda Elliptic de ordem 2N tendo Banda
de passagem com W 1 < W < W 2.

UFF

PET
Tele))

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 W n = [W 1 W 2].
[Z,P,K] = ellip(...) Retorna zeros, polos e ganho escalar K.

PET
Tele))

UFF

Você também pode gostar