Sunteți pe pagina 1din 27

Curso Prtico de Treinamento no Software Matlab 6.

Carlos Hall Vectra Technology hall@vectratechnology.com.br (21) 9327-3470

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

Tela Principal do MATLAB

Tela Principal do MATLAB


Janela de Comando

Tela Principal do MATLAB

Janela de Histrico

Tela Principal do MATLAB


Launch Pad

Tela Principal do MATLAB

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)

Ao se acrescentar um ; ao final da linha, a expresso avaliada, mas o resultado no apresentado 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

Definindo Matrizes no MATLAB


H vrias maneiras de se criar uma matriz:
Explicitamente Usando funes built-in do MATLAB Lendo de arquivos em disco Usando m-files prprias

Definindo uma Matriz Explicitamente


Elementos de uma linha so separados por espaos ou vrgulas. espa rgulas O final de cada linha indicado por um ponto-e-vrgula. pontorgula A lista de elementos delimitada por colchetes [ ].

Definindo uma Matriz Explicitamente


No caso do quadrado mgico:
>>
A = 16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1 A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]

11

Funes de Criao de Matrizes


zeros: matriz de zeros zeros ones: matriz de uns ones rand: matriz de nmeros aleatrios rand com distribuio uniforme randn: matriz de nmeros aleatrios randn com distribuio normal (Gaussiana) magic: quadrados mgicos magic

Funes de Criao de Matrizes


>> Z Z = 0 0 0 = zeros(3,5) 0 0 0 0 0 0 0 0 0 0 0 0

Funes de Criao de Matrizes


>> Q Q = 4 4 4 4 4 = 4*ones(5,5) 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

12

Funes de Criao de Matrizes


>> N = rand(2,4) N = 0.95013 0.60684 0.23114 0.48598

0.8913 0.7621

0.45647 0.018504

Funes de Criao de Matrizes


>> B = magic(4) B = 16 2 3 5 11 10 9 7 6 4 14 15

13 8 12 1

Lendo Matrizes de Arquivos


Crie um arquivo chamado qmagico.txt, contendo as seguintes linhas:
16 5 9 4 3 10 6 15 2 11 7 14 13 8 12 1

13

Lendo Matrizes de Arquivos


Carregue o arquivo :
>> load qmagico.txt >> qmagico qmagico = 16 3 2 5 10 11 9 6 7 4 15 14

13 8 12 1

Lendo Matrizes de Arquivos


Outra forma de leitura:
>> Q = load(qmagico.txt); >> Q Q = 16 3 2 13 5 10 11 8 9 6 7 12 4 15 14 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

>> X = A; >> X(5,5) = 29 X = 16 3 5 10 9 6 4 15 0 0

2 11 7 14 0

13 8 12 1 0

0 0 0 0 29

O Operador : (dois pontos)

>> 1:10 ans = 1 2

10

>> 1:3:27 ans = 1 4 7

10

13

16

19

22

25

19

O Operador : (dois pontos)


>> 60:-7:0 ans = 60 53

46

39

32

25

18

11

>> 0:pi/4:pi ans = 0 0.7854

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

>> A(1:4,1) ans = 16 5 9 4

OU

>> A(:,1) ans = 16 5 9 4

20

O Operador : e Matrizes

>> A(:,4) ans = 13 8 12 1

OU

>> A(:,end) ans = 13 8 12 1

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

>> sum(B) ans =


196 196 196 196 324 324 324 324

Excluso de Linhas ou Colunas


>> X = A; >> X(:,2) = [] X = 16 2 13 5 11 8 9 7 12 4 14 1

Excluso de Linhas ou Colunas

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

Aritmtica x lgebra Linear

>> A = magic(4); >> B = A+A B =


32 10 18 8 4 22 14 28 6 20 12 30 26 16 24 2

>> A = magic(4); >> C = A-A C =


0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

24

Aritmtica x lgebra Linear

>> A = magic(4); >> B = A./A B =


1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

>> A = magic(4); >> C = A/A


Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 9.796086e-018.

C =
1 -0.67 -0.04 0 0 -1 -0.13 0 0 2 1.13 0 0 0.67 0.04 1

Aritmtica x lgebra Linear

>> A = magic(4); >> B = A.*A B =


256 4 9 169 25 121 100 64 81 49 36 144 16 196 225 1

>> A = magic(4); >> C = A*A C =


345 257 281 273 257 313 305 281 281 305 313 257 273 281 257 345

Aritmtica x lgebra Linear

>> A = magic(4); >> B = A.^2 B =


256 4 9 169 25 121 100 64 81 49 36 144 16 196 225 1

>> A = magic(4); >> C = A^2 C =


345 257 281 273 257 313 305 281 281 305 313 257 273 281 257 345

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

S-ar putea să vă placă și