• Nenhum resultado encontrado

Curso de Especialização em Teleinformática e Redes de Computadores Departamento Acadêmico de Eletrônica Universidade Tecnológica do Paraná

N/A
N/A
Protected

Academic year: 2021

Share "Curso de Especialização em Teleinformática e Redes de Computadores Departamento Acadêmico de Eletrônica Universidade Tecnológica do Paraná"

Copied!
49
0
0

Texto

(1)

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)

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)

(3)
(4)

4

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(5)
(6)

6

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(7)
(8)

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.

(9)

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)

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

(11)

Plotar mais de uma curva no mesmo gráfico

Vamos fazer um seno um pouco

mais elaborado para mudarmos a

fase:

(12)

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)

(13)

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)

14

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(15)

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)

16

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

Avalie a função

meshgrid

(17)

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)

18

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(19)

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)

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

(21)

Função para plotar calcular os valores de uma Gaussiana 2D

Nome do arquivo “.m” tem

ser o mesmo nome da função

(22)

22

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(23)

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)

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)

(25)

Imagem:

764 x 768 pixels

Grayscale

0-255

Baixar do site o arquivo:

aerial_image.jpg

Funções: exemplo 2

(26)

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.

(27)

Funcões: exemplo 2

(28)

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

(29)

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)

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

(31)

figure handle e subplot

Divide a figura em 1 linha 2

colunas e ativa a área 1

(32)

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

(33)

Funcões : exemplo 2

(34)

34

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

figure handle e subplot

(35)
(36)

36

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(37)

imwrite: salvar imagem processada

Sintaxe

imwrite(matriz, ‘filename’, ‘formato’);

Formato: ‘bmp’ ‘gif’ ‘tif’ ‘png’ e outros

ou ainda:

(38)

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

(39)

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)

40

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

(41)

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)

42

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

Exercício 2:

(43)

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)

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.

(45)
(46)

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

(47)

Breakpoint

- Para inserir um breakpoint basta clicar com o mouse no canto

esquerdo com o mouse:

(48)

48

Introdução ao MATLAB

Prof. Humberto Gamba & Prof. Gustavo Borba Departamento Acadêmico de Eletrônica

Exercício

A partir da declaração e do help da função, gere o código:

function

[SwN] = gerasinal(SNR,Amp,Freq,NumPontos)

%[SwN]=gerasinal(SNR,Amp,Freq,NumPontos)

%Função para gerar uma sinal senoidal de amplitude Amp (pico),

%frequencia Freq, Número de amostras NumPontos com relação

%sinal ruído igual a SNR.

%Exemplo: [SwN]=gerasinal(50,1.5,5,201);

(49)

Equações:

potência do sinal = ((amplitude de pico)^2)/2

potência do ruído = ((2*amplitude de pico do ruído)^2)/12

SNR = (potência do sinal) / (potência do ruído)

Dica: para gerar ruído uniforme de média zero:

1.

noise=((2*amp_noise)*rand(1,NumPontos)-amp_noise);

2.

SwN=sinal+noise;

Referências

Documentos relacionados

Tese apresentada como requisito parcial para obtenção do título de Doutor pelo Programa de Pós-graduação em Direito da PUC-Rio.. Aprovada pela Comissão Examinadora abaixo

O objetivo deste trabalho foi avaliar épocas de colheita na produção de biomassa e no rendimento de óleo essencial de Piper aduncum L.. em Manaus

Além das espécies selvagens, existem também algumas variedades de tomate da espécie Solanum lycopersicum que podem ser utilizadas como fontes de resistência a algumas pragas, entre

Conforme refere Chiavenato (2000, p.82), os clientes são os elementos que compram ou adquirem os produtos ou serviços prestados, ou seja, absorvem as saídas e os

O efetivo pagamento da(s) RECEITA(S) FIXA(S) estará condicionado ao início da operação comercial da(s) USINA(S), devendo os recursos financeiros associados a este

Considerando a importância do assunto, a variabilidade existente nas características físicas e a ausência de dados na literatura especializada referente a