Documente Academic
Documente Profesional
Documente Cultură
Bibliografia
Oppenheim, A.V.; Schafer, R.W.: Discrete-Time Signal Processing, Prentice-Hall (1999). McClellan, Burrus, Oppenheim, Parks, Schaffer e Schuessler: Signal Processing Using Matlab 5, PrenticeHall (1998). Oppenheim, A.V., Willsky, A.S., Young I.T.: Signals and Systems, Prentice Hall (1983).
Contedo do Curso
Introduo ao Matlab:
Expresses Matemticas Dicas de interface Matrizes no Matlab Aplicaes de Matrizes no Matlab Outras Estruturas de Dados Estruturas de Programao Funes e Scripts Grficos Bidimensionais Grficos Tridimensionais
Visualizao no Matlab
Anlise de Dados Interpolao Regresso e Ajuste de Curvas Integrao e Diferenciao Minimizao de Funes Seqncias e Sistemas Filtragem Digital Resposta em Freqncia, FFT, PSD Processamento Simblico
Introduo ao Matlab
MATLAB MATrix LABoratory Programao baseada em Matrizes Vetores e escalares tambm podem ser considerados matrizes, 1xN, Nx1, 1x1
Janela de Histrico
Expresses Matemticas
Como a maioria das linguagens de programao, o MATLAB permite a construo de expresses matemticas Diferentemente das outras linguagens, as expresses em MATLAB trabalham diretamente com matrizes
Expresses Matemticas
Principais blocos constituintes das expresses matemticas:
Variveis Nmeros Operadores Funes
Expresses Matemticas
Variveis:
no necessria nenhuma declarao formal de variveis, ou dimensionamento prvio Quando o Matlab encontra um novo nome de varivel, ela automaticamente criada Caso a varivel j exista, seu contedo alterado, com realocao de memria caso necessrio.
Expresses Matemticas
Variveis:
exemplo: >> num_alunos = 10 cria uma matriz 1 x 1 com nome num_alunos armazena neste nico elemento o valor 10
Expresses Matemticas
Nomes de Variveis:
Iniciam por uma letra Seguida por qualquer nmero de letras, dgitos ou underscores Somente os 31 primeiros caracteres so considerados Todas as variveis so case sensitive
num_alunos diferente de Num_Alunos !!!
Expresses Matemticas
Nmeros:
Matlab usa a notao decimal convencional Todos os nmeros so armazenados internamente usando o formato long de ponto flutuante do IEEE Aproximadamente 16 dgitos decimais de preciso Faixa aproximada de -10308 a +10308
Expresses Matemticas
Nmeros:
Notao cientfica: letra e para especificar o expoente Nmeros complexos: letras i ou j Alguns nmeros vlidos: 3 9.6397238 1i -99 1.60210e-20 -3.14159j 0.0001 6.02252e23 3e5i
Expresses Matemticas
Operadores:
Os operadores usuais, com as regras de precedncia mais comuns:
+ * / ^ () : : : : : : : soma subtrao multiplicao diviso potncia complexo conjugado transposto agrupamento de smbolos
Expresses Matemticas
Funes:
O Matlab oferece um conjunto extremamente abrangente de funes, simples e complexas, aplicveis s mais diversas situaes e aplicaes. Algumas funes so built-in, (p.ex. sqrt e sin) e no se tem acesso ao cdigo Outras funes so implementadas em mfiles (p.ex. gamma), podendo-se visualizar e alterar o cdigo, caso necessrio
Expresses Matemticas
Funes:
help elfun: help specfun: help elmat: help: funes elementares funes especializadas funes matriciais help geral do Matlab
Expresses Matemticas
Funes especiais:
Fornecem valores para constantes comumente utilizadas:
pi i j eps 3.14159265 Unidade imaginria, -1 O Mesmo que i Preciso relativa do ponto flutuante, 2-52
Expresses Matemticas
Funes especiais:
Fornecem valores para constantes comumente utilizadas:
realmin Menor nmero em ponto flutuante, 2-1022 realmax Maior nmero em ponto flutuante, (2-e)21023 Inf Infinito NaN Not-a-number
Expresses Matemticas
Exemplos de expresses:
rho = (1+sqrt(5))/2 a = abs(3+4i) z = sqrt(besselk(4/3,rho-i)) huge = exp(log(realmax)) toobig = pi*huge
Expresses Matemticas
Exemplos de expresses:
rho = 1.6180 a=5 z = 0.3730+ 0.3214i huge = 1.7977e+308 toobig = Inf
Dicas de Interface
Comando format
Controla o formato numrico dos valores exibidos pelo Matlab Afeta somente a forma com que os nmeros so apresentados No influencia nos clculos ou armazenamento dos valores
Dicas de Interface
Comando format
Ex: seja x = [4/3 1.2345e-6]
format short
1.3333 0.0000
format short e
1.3333e+000 1.2345e-006
format short g
1.3333 1.2345e-006
format long
1.33333333333333 0.00000123450000
Dicas de Interface
Comando format
Ex: seja x = [4/3 1.2345e-6]
format long e
1.333333333333333e+000 1.234500000000000e-006
format long g
1.33333333333333 1.2345e-006
format bank
1.33 0.00
format rat
4/3 1/810045
format hex
3ff5555555555555 3eb4b6231abfd271
Dicas de Interface
Suprimindo a impresso
Ao se digitar um expresso e pressionar ENTER, o Matlab avalia a expresso e exibe o resultado na tela
A = magic (100)
Dicas de Interface
Linhas de Comando Longas
Caso a expresso no caiba em uma linha, digite reticncias ... ao final da linha, e em seguida ENTER, e continue a expresso na linha seguinte:
>> s = 1 -1/2 + 1/3 -1/4 + 1/5 - 1/6 + 1/7 ... - 1/8 + 1/9 - 1/10 + 1/11 - 1/12;
Matrizes no MATLAB
Quadro Melancholia I, do artista alemo e matemtico amador Albrecht Drer
Quadrado Mgico
10
11
12
0.8913 0.7621
0.45647 0.018504
13 8 12 1
13
13 8 12 1
Operaes em Matrizes
sum: soma dos elementos de cada sum coluna
>> sum(A) ans = 34 34
34
34
14
Operaes em Matrizes
: transposio de uma matriz
>> A A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1
Operaes em Matrizes
: transposio de uma matriz
>> A ans = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
Operaes em Matrizes
sum(A): soma dos elementos de cada sum(A linha
>> sum(A) ans = 34 34 34 34
15
Operaes em Matrizes
diag: elementos da diagonal da matriz diag
>> diag(A) ans = 16 10 7 1
Operaes em Matrizes
sum(diag()) soma dos elementos da sum(diag()): diagonal da matriz
>> sum(diag(A)) ans = 34
Operaes em Matrizes
fliplr: espelhamento horizontal de fliplr matriz
>> A A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1
16
Operaes em Matrizes
fliplr: espelhamento horizontal de fliplr matriz
>> fliplr(A) A = 13 2 8 11 12 7 1 14
3 10 6 15
16 5 9 4
Operaes em Matrizes
flipud: espelhamento vertical de flipud matriz
>> A A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1
Operaes em Matrizes
flipud: espelhamento vertical de flipud matriz
>> flipud(A) A = 4 15 9 6 5 10 16 3
14 7 11 2
1 12 8 13
17
Operaes em Matrizes
diag(fliplr()) antidiagonal de matriz diag(fliplr()):
>> diag(fliplr(A)) ans = 13 11 6 4
Operaes em Matrizes
sum(diag(fliplr())) soma dos sum(diag(fliplr())): elementos da antidiagonal da matriz
>> sum(diag(fliplr(A))) ans = 34
Indexao de Matrizes
Matriz Bidimensional: A(i,j) o elemento da i-sima linha, j-sima coluna
A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1
A(2,3) = 11
18
Indexao de Matrizes
Soma dos Elementos da 2a Linha:
>> A(2,1) + A(2,2) + A(2,3) + A(2,4) ans = 34
Redimensionamento Automtico
2 11 7 14 0
13 8 12 1 0
0 0 0 0 29
10
10
13
16
19
22
25
19
46
39
32
25
18
11
1.5708
2.3562
3.1416
O Operador : e Matrizes
A(1:m, n): primeiros m elementos da n-sima n) coluna A(:, n): todos os elementos da n-sima coluna n) A(:, end): todos os elementos da ltima coluna end) A(m, 1:n): primeiros n elementos da m-sima 1:n) linha A(m, :): todos os elementos da m-sima linha :) A(end,:): todos os elementos da ltima linha A(end,:)
O Operador : e Matrizes
OU
20
O Operador : e Matrizes
OU
Quadrado Mgico
Por que todas as somas no quadrado mgico so iguais a 34? 34
Suponha que se deseja agrupar os nmeros de 1 a 16 em 4 grupos com somas iguais Logo, esta soma tem que ser: >> sum(1:16)/4 ans = 34
Quadrado Mgico
Matlab funo magic: magic
>> B = magic(4) B = 16 2 3 5 11 10 9 7 6 4 14 15
13 8 12 1
21
Quadrado Mgico
Matlab funo magic: magic
Quadrado Mgico de Drer A = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
Quadrado Mgico
Colunas 2 e 3 esto invertidas
>> C = B(:,[1 3 2 4]) C = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 1
Concatenao de Matrizes
>> A = magic(4); >> B = [A A+32; A+48 A+16]
B = 16 5 9 4 64 53 57 52 2 11 7 14 50 59 55 62 3 10 6 15 51 58 54 63 13 8 12 1 61 56 60 49 48 37 41 36 32 21 25 20 34 43 39 46 18 27 23 30 35 42 38 47 19 26 22 31 45
40 44 33 29 24 28 17
22
Concatenao de Matrizes
>> sum(B) ans =
260 260 260 260 260 260 260 260
>> X(1,2) = []
??? Indexed empty matrix assignment is not allowed.
23
lgebra Linear para Matrizes + / * ^ inv : : : : : soma subtrao diviso de matrizes multiplicao de matrizes potncia de uma matriz : inversa de uma matriz
Operadores Aritmticos para Matrizes + : soma - : subtrao ./ : diviso elemento a elemento .* : multiplicao elemento a elemento .^ : potncia elemento a elemento
24
C =
1 -0.67 -0.04 0 0 -1 -0.13 0 0 2 1.13 0 0 0.67 0.04 1
25
Exerccios
1. Escreva as expresses matemticas abaixo na linguagem do Matlab, e execute-as com os valores indicados para as variveis:
a) x =
b b 2 4ac , a = 1, b = 1, c = 2 2a
b) p =
1 2
( x )2
2 2
, = 1, = 2, x = 0
c) B x ( x, y, z ) =
3x 2 r 2 r5
r=
x 2 + y 2 + z 2 , x = 1, y = 2, z = 3
Exerccios
2. Crie, utilizando as funes matriciais (isto , sem defini-la explicitamente), uma matriz com 5 linhas e 5 colunas como a mostrada abaixo: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Exerccios
3. Acrescente colunas matriz anterior, de modo que ela se torne a matriz mostrada abaixo. Em seguida, calcule o valor mdio de cada linha e de cada coluna desta matriz: 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 0 0 1 2 3 4 5
26
Exerccios
4. A partir da matriz do exerccio 3, obtenha novamente a matriz do exerccio 2. 5. Utilizando a funo randn, gere uma matriz com 5 colunas e 100 linhas. Em seguida, calcule a mdia (mean) e o desvio padro (std) de cada coluna, e a mdia e desvio padro globais da matriz, comparando-os com os valores toricos (mdia zero e desvio padro unitrio). Repita o processo para matrizes com 1.000 linhas e com 10.000 linhas.
27