1
Introdução ao MATLAB (Aula 3)
Curso de Especialização em Teleinformática e
Redes de Computadores
Departamento Acadêmico de Eletrônica
Universidade Tecnológica do Paraná
2
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Uso da placa de som do PC
sound(y, Fs, bits)
envia o sinal contido em um vetor, amostrado com um
freqüência Fs e resolução bits para o placa de som do
computador.
faixa do sinal: -1 <= y <= +1, valores fora dessa faixa
são ceifados (clipped).
Vamos dividir esse exemplo em duas partes:
- gerar uma forma de onda senoidal
3
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
4
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
AP tuner
Baixe e instale o “AP tuner” para observar a freqüência do
sinal gerado:
http://www.aptuner.com/cgi-bin/aptuner/apmain.html
Observe a tabela de freqüências das notas musicais
5
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
6
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
7
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
8
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Ler e reproduzir um arquivo “.wav”
Observe o valor de Fs_in, veja que cada arquivo wave tem um freqüência
de amostragem diferente.
9
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Ler e reproduzir um arquivo “.wav”
10
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Sobre a freqüência de amostragem
A freqüência de amostragem corresponde à taxa de
amostras com a qual o sinal foi gravado. Sem essa
informação não é possível a correta reprodução do arquivo
digitalizado.
11
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gravando sons com um microfone usando Matlab
r = audiorecorder(Freq_amostragem, nbits, ncanais);
r = audiorecorder(44100, 16, 1);
12
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Trabalho para ser entregue
Produzir as freqüências correspondentes as notas musicais
abaixo:
Tocar a música:
“dó re mi fá fá fá, dó ré dó ré ré ré, dó sol fá mi mi mi, dó ré mi fá fá
fá”
13
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Criando um menu de execução:
Faça o download, execute e analise o arquivo XXX.m do site
da disciplina.
Observe os seguintes recursos:
Funções:
input()
exist()
clc
Controle de fluxo:
switch
14
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Criando um menu de execução:
Programa:
playWasFs.m
Parte 1 de 2
Disponível no site
da disciplina.
15
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Criando um menu de execução:
Programa:
playWasFs.m
Parte 2 de 2
Disponível no site
da disciplina.
16
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Exercício:
Creio o aquivo playWavFs2.m com os seguintes adicionais:
-
Mostrar o tempo de reprodução
17
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
18
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
19
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
20
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
21
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
axis(),
set(),
grid,
xlabel(),
ylabel(),
title
22
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
23
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
24
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
legend()
25
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 2D - plot()
legend()
26
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Gráficos 3D - plot3()
plot3(X,Y,Z,LineSpec)
27
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
meshgrid()
Gera matrizes X e Y para gráficos 3D
[X,Y] = meshgrid(x,y)
Converte o domínio especificado pelos vetores x e y nos
vetores X e Y, os quais são utilizados na avaliação de
gráficos 3D.
As linhas de X são cópias do vetor x
As colunas de Y são cópias do vetor y
28
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
meshgrid()
As linhas de X
são cópias do
vetor 1:3
As colunas de Y
são cópias do
vetor 10:14
29
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Mesh plots – mesh()
mesh(X,Y,Z) Cria uma wireframe surface especificada por X, Y com cor
determinada por Z, assim a cor é proporcional a altura da superfície.
+
−
=
2
2
2
σ
2
j
i
e
j)
g(i,
30
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
31
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
32
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
33
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
34
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
35
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Manipulação de matrizes 3D: exemplos para imagens
RGB: componentes
Red
Green
Blue
Truecolor: cada pixel de cada
componente tem 8 bits (24 bits por pixel)
No matlab: img é uma matriz de 12 linhas x 12 colunas x 3
Exemplo:
fazendo o
pixel p amarelo:
img(2,3,1) = 255;
%R
img(2,3,2) = 255;
%G
36
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Manipulação de matrizes
Exemplo:
Matrizes R,
G e B de
uma
imagem.
37
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Matrizes R, G e B
38
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Manipulação de matrizes
Exemplo:
Matrizes R, G
e B de uma
imagem
concatenadas
em uma
única matriz.
39
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Matrizes R, G e B
1536 colunas
(512*3)
1152 linhas
(384*3)
40
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
41
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
imtool() [Obs.: função antiga: imview() ]
Ferramenta interativa que para
obter a coordenada de um pixel e
seu valor.
Exemplo:
Atenção:
(X,Y)
42
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
imview()
43
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
44
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Manipulação de matrizes
Exemplo: Cópia de uma região de uma imagem RGB (as coordenadas
45
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
46
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Exercício
Faça o download da imagem colorida veiculo1.jpg. Utilizando o
imtool(), localize as coordenadas de uma região retangular que
cubra somente a placa. Escreva um script chamado regVeiculo1.m
para preencher esta região da imagem com a cor azul.
www.labiem.cpgei.cefetpr
.br/members/humberto2/t
eaching/pdi/imagens
47
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
Para criar uma esturtura:
Função struct
myStruct = struct(‘field1’, data1, ‘field2’, data2, …, ‘fieldn’, datan);
Os campos são acessados da seguinte forma:
var = myStruct.field2;
%structName.fieldName
Permite o armazenamento de
elementos de diferentes tipos.
Cada elemento é um campo
(field) da estrutura.
48
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
Pode-se criar um vetor de estruturas:
índice da estrutura
Os campos são acessados da seguinte forma:
49
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
Exemplo: Um vetor de estruturas para armazenar alguns dados
dos clientes de uma locadora e a movimentação de cada um
em número de ítens locados, nos últimos 5 meses.
50
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
51
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
Visualização da estrutura cliente no ArrayEditor
Duplo clique
na variável
Duplo clique para expandir
cada struct do vetor
52
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
Acessando os campos das estruturas
5º elemento do
vetor
movim
53
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Tipo de dado struct (estrutura)
Exemplo: uma função que recebe um mês como parâmetro de
entrada, varre as estruturas do vetor e devolve o cadastro do
usuário com maior movimentação neste mês.
Digite e código e
salve. Lembre-se que
o nome do
arquivo .m deve ser
idêntico ao da
função.
Neste exemplo:
54
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Depuração do código (debug)
Pode-se inserir breakpoints no código e executá-lo passo a
passo. As variáveis aparecem no workspace.
Exemplo:
Para inserir um
breakpoint,
basta clicar na
linha.
55
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Depuração do código (debug)
Após inserir o breakpoint, execute a função para o mês 4:
O prompt altera-se
(K>>)
e o Editor/Debugger é ativado:
As variáveis que
estão no escopo da
função aparecem
no Worskspace
A flecha verde indica
a linha de programa
na qual a execução
se encontra (neste
caso, no breakpoint,
conforme esperado)
56
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Depuração do código (debug)
Verificando:
OK! Todos as movimenteções
do mês 4 foram cerregadas no
vetor movimMes.
Estrutura de entrada.
As movimentações do mês 4 são, na
seqüência: 2, 4, 6, 2.
Dentro do vetor de estruturas, o cliente
com maior movimentação no mês 4 é o
cliente(3), com 6 locações.
Seu cadastro é 1349.
É esse o valor de saída que
esperamos da função
57
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Depuração do código (debug)
Diferentes opções para a depuração estão disponíveis,
no menu Debug:
A tecla F10 (Step)
executa passo-a-passo,
a partir do ponto atual
58
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Depuração do código (debug)
59
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Depuração do código (debug)
F10
F10
F10 (finaliza)
60
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
61
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Outro caso…
E se houver clientes
empatados na
movimentação
máxima daquele mês?
Em outras palavras:
Um ou
mais clientes com a
mesma movimentação
máxima no mesmo
mês?
Vamos criar esta
situação e observar o
comportamento da
função.
Fazer um Save As... do
script buildStruct.m,
criando o script
buildScript2.m
62
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Outro caso…
Situação exemplo: neste novo
conjunto de dados, o
cliente(1) e o cliente(3)
tiveram a mesma
movimentação máxima no
mes3.
Com isso, a função deveria
retornar os cadastros destes
dois clientes:
1347
e
1349
Executando a função:
63
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Função max()
Na nossa função, é a função max() do MATLAB que encontra o
índice do cliente com máxima movimentação naquele mês:
No entanto,a função max()
retorna apenas O máximo.
Testando a função max():
Observar que max() retorna o
índice do “primeiro
máximo”
64
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Função find()
Para encontrar os índices de todos os máximos, pode-se
utilizar o seguinte algoritmo:
Supondo o vetor v
v = [1 2 3 3 4 1 4 2]
m = max(v)
i =
find(
v == m
)
im1 = i(1)
im2 = i(2)
valor do máximo:
m = 4
índices dos máximos:
i = [5 7]
índice do máximo 1:
im1 = 5
65
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Reescrevendo a função clienteMaiorMov()
Fazer um Save As...
do arquivo
clienteMaiorMov.m,
criando o arquivo
66
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
67
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Função error()
A função clienteMaiorMov2() aceita
2 parâmetros como entrada.
Na sua chamada, esta condição
deve ser respeitada. Caso
contrário, ocorrerá um erro:
Da mesma forma, o valor de mes especificado na entrada deve estar
dentro da faixa 1...5 (considerando o vetor de estruturas “cliente” do
exemplo)
68
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Função error()
A função error() pode ser utilizada nesses casos, para mostrar uma
mensagem e abortar a função.
A função nargin também é útil nestas situações. Dentro do corpo da
função, ela indica o número de argumentos de entrada.
69
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba
Função error()
70
Introdução ao MATLAB
Copyright@2007 Prof. Gustavo B. Borba