Introdução ao MATLAB
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
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Expressões Booleanas
Para o MATLAB:
-
0 (zero) ou nil (nulo, vazio) indica condição falsa (F-false)
4
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
6
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
8
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Vetorização
Vetorização significa converter loops de repetição como for e
while em vetores ou matrizes equivalentes.
A vetorização pode não somente ajudar no ganho de
velocidade mas também na leitura do código.
Exemplo de vetorização 1D – cálculo do seno
Resolver a função seno entre 0 e 2pi (usando for):
Note que f(x) é um
vetor, logo a
variável x (indice da
vária’vel f) não pode
iniciar com zero
10
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Exemplo de vetorização 1D – cálculo do seno
Vetor:
x=0,0.5,1,1.5,2,…,255
f é o vetor que contém o
valor do seno para cada
valor de x.
Tente acessá-los usando a
notação
Plotar mais de uma curva no mesmo gráfico
Vamos fazer um seno um pouco
mais elaborado para mudarmos a
fase:
12
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Exercício: Plotar o gráfico da função Gaussiana:
Trace o gráfico da função Gaussiana para um
intervalo genérico qualquer:
−
⋅
=
2
2
σ
2
x
e
c
g(x)
Exercício: Plotar o gráfico da função Gaussiana:
Note que o vetor g, possui
indices de 0 a 256 e não
de -127 a 128 !
14
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
meshgrid
MATLAB provê a função meshgrid para avaliação vetorizada de
funções 2D. A sintaxe:
[C, R] = meshgrid(c, r);
c = [1 2] e r = [1 2 3]
C = 1 2
R= 1 1
1 2
2 2
1 2
3 3
Caso tenhamos o interesse em calcular a soma dos quadrados das
coodenadas (c,r), basta escrever
h = R.^2 + C.^2;
h= 1 5
5 8
10 13
16
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Avalie a função
meshgrid
Função Gaussiana em 2D
Considere que o seu objetivo seja resolver uma
função Gaussiana em 2D, para um intervalo
genérico qualquer:
+
−
⋅
=
2
2
2
σ
2
y
x
e
c
y)
g(x,
18
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Funções
Função é uma seqüência de comandos do MATLAB que:
-
aceita parâmetros de entrada
-
retorna parâmetro de saída
-
utiliza espaço de memória próprio para armazenar
20
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Funções
Sintaxe:
function
[variáveis de retorno] = nomedafunção(lista de variáveis)
lista de comandos
Função para plotar calcular os valores de uma Gaussiana 2D
Nome do arquivo “.m” tem
ser o mesmo nome da função
22
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Funções: exemplo 2
Vamos construir outra função, dessa vez para ajustar a escala de
cinzas de uma imagem.
A função deve:
receber o nome do arquivo imagem,
ler a imagem e
processar a imagem de acordo com a função gamma.
Faremos isso usando o comando de repetição for e por meio de
vetorização.
24
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Funções: exemplo 2
Power Law Transformation
Uma das técnicas de Processamento de Imagem chamada
Power Law Transformation permite a correção da escala de
cinzas de uma imagem.
s = c (r)
γ
onde:
r é a escala de entrada
s é a escala de saída
L é o número de níveis de
cinza na imagem
c é fator de escala (c=1)
Imagem:
764 x 768 pixels
Grayscale
0-255
Baixar do site o arquivo:
aerial_image.jpg
Funções: exemplo 2
26
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Funcões: exemplo 2
usando o comando de repetição for
Nome do arquivo “.m”
tem ser o mesmo
nome da função
Coloque o mouse sobre
a linha e faça as
correções indicadas.
Os comentários inseridos
na linhas seguintes após a
linha da especificação da
função são impressos a
partir do comando de help.
Funcões: exemplo 2
28
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Funcões: exemplo 2
eliminando o comando
for
Nome do arquivo “.m” tem
ser o mesmo nome da função
figure handle e subplot
O camando subplot divide a figura em uma matriz m x n e
ativa uma determinada região.
Sintaxe:
subplot(m,n,p);
divide a área da figura em “m” linhas e “n” colunas e ativa a
p-ésima área, dessa forma pode-se escrever em cada uma das
áreas da figure.
30
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
figure handle e subplot
Com a função figure cria-se uma janela de figura que retorna
um handle da janela, por exemplo:
h = figure(1), subplot(m,n,p);
A partir do handle e do comando subplot pode-se:
-
Inserir várias imagens na mesma janela;
-
Inserir imagens e gráficos
figure handle e subplot
Divide a figura em 1 linha 2
colunas e ativa a área 1
32
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Retornando mais de um parâmetro numa função.
Sintaxe:
function
[a1, b1, c1, d1] minhafuncao (a, b, c, d)
lista de variáveis
Funcões : exemplo 2
34
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
figure handle e subplot
36
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
imwrite: salvar imagem processada
Sintaxe
imwrite(matriz, ‘filename’, ‘formato’);
Formato: ‘bmp’ ‘gif’ ‘tif’ ‘png’ e outros
ou ainda:
38
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
imwrite: salvar imagem processada
Pergunta: como gravar ambas as matrizes
imagens (entrada e saída) no mesmo arquivo
Funções: Exercício 1
Implemente uma função para inverter a escala de cinzas de uma
imagem, ou seja aplique na matriz a seguinte equação:
s(i,j) = max(in(:)) – in(i,j);
Nome da função: InvertScale
A função deve:
- receber o nome do arquivo imagem com parâmetro
- retornar a matriz imagem invertida
- retornar os valores máximos e mínimos da imagem de entrada
e saída
- salvar a imagem no formato ‘bmp’
40
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Exercício 2:
Implemente um programa em Matlab para selecionar os seis
números com maior probabilidade de ocorrência na
mega-sena.
-
Baixe os resultados do site da Caixa Econômica Federal:
http://www1.caixa.gov.br/loterias/loterias/megasena/download.asp#
-
A CEF disponibiliza os resultados em uma página html. Será
necessário abrir com o Excel, selecionar as colunas dos resultados,
copiar e colar em outra planilha e salvar no formato csv.
-
Utilize a função:
resultados=csvread(‘filename.csv’);
para ler o arquivo csv no Matlba
42
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Exercício 2:
Escopo de variáveis:
O MATLAB armazena suas variáveis em uma área da memória
denominade de workspace
Funções trabalham com variáveis locais, isto é, em uma área
de memória própria, independente do workspace
Portanto:
-
Variáveis do workspace não são acessíveis pelas funções
-
Variáveis de funções (locais) não são reconhecídas pelo
workspace
A transferência de valores entre funções e o workspace tem
de ser feita por meio dos parâmetros da função.
44
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Subfunções
Subfunções são funções auxiliares com as seguintes
características:
-
Seguem a mesma sintaxe das funções principais;
-
Cada subfunção possui seu próprio workspace (as
variáveis utilizadas em uma subfunção só existem dentro
deste deste escopo;
-
m-file é o escopo de uma subfunção, e somente podem
ser chamadas por outras funções de dentro de um mesmo
m-file.
46
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica
Recurso para depuração de programas
Os menus Debug contêm recursos auxiliares para depuração de
programas
Breakpoint
- Para inserir um breakpoint basta clicar com o mouse no canto
esquerdo com o mouse:
48
Introdução ao MATLAB
Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica