• Nenhum resultado encontrado

Curso de Especialização em Teleinformática e Redes de Computadores Departamento Acadêmico de Eletrônica Universidade Tecnológica Federal 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 Federal do Paraná"

Copied!
110
0
0

Texto

(1)

Introdução ao MATLAB (Aula 1)

Curso de Especialização em Teleinformática e

Redes de Computadores

Departamento Acadêmico de Eletrônica

Universidade Tecnológica Federal do Paraná

(2)
(3)

Command Window → área de trabalho na qual as instruções são

digitadas e os resultados exibidos.

; (ponto-e-vírgula) no final

da linha de comando é usado

para suprimir a saída.

(4)

Ambiente MatLab – 1os passos

Workspace

área na qual

são exibidas as

variáveis

utilizadas na

área de

trabalho do

MATLAB.

(5)

Ambiente MatLab – 1os passos

MATLAB é uma linguagem de alto nível desenvolvida para

trabalhos numéricos.

Integra ferramentas de:

Computação,

Visualização e

Programação

em um ambiente de desenvolvimento simples onde os

problemas e soluções são expressos em uma notação

matemática familiar

(6)

Matrizes

MATLAB – Matrix Laboratory – foi desenvolvido para trabalhos

com matrizes, portanto em MATLAB tudo é tratado como

matriz.

No MATLAB matriz é um conjunto de números dispostos na

forma retangular. Exceções são:

escalar: matriz de 1 x 1

vetores: matriz de uma linha ou uma coluna.

Sugestão: A melhor forma de aprender MATLAB é aprender a

lidar com matrizes.

(7)

Gerando matrizes

Existem várias formas de entrar com os elementos de uma

matriz no MATLAB:

A partir de uma lista de elementos;

A partir de dados de um arquivo externo;

Gerar matrizes a partir de funções “built-in”;

Criar matrizes a partir de funções próprias em M-files;

(8)

Assim como no Help do MATLAB

iniciemos analisando a matriz

presente na obra do artista

alemão Albrecht Dürer, chamada

de Melancholia I.

(9)

Entrando com os valores de uma matriz:

No obra existe a matriz:

(10)

Inserindo matriz

(11)

sum( )

Calculando a soma das linhas e colunas da matriz de Dürer:

>> sum(A)

Quando não especificada uma

variável de saída, MATLAB utiliza

a variável ans de answer.

(12)

Transposta A’

Soma das linhas da matriz

de Dürer:

-

Calcula-se a matriz

transposta;

-

Calcula-se a soma das

colunas.

(13)

Comando diag( )

diag ( ) retorna a diagonal principal

da matriz.

Cálculo da soma da diagonal

principal: utiliza-se dois comandos

(14)

Flip left: fliplr( )

Soma da diagonal secundária de

uma matriz:

Utiliza-se o comand

fliplr

(flip left

(15)
(16)
(17)

Rotacionando matrizes

Avaliar as funções

fliplr, flipup, tril, triu

flipud

(18)

Elementos da matriz

Os elementos da matriz são acessados pela notação

A( i , j ) i=linha e j=coluna, sempre i e j > 0.

O cálculo da soma da 4a-coluna seria expressa por:

A(1,4) + A(2,4) + A(3,4) + A(4,4)

(19)

A(k)

Pode-se referir aos elementos de uma

matriz com um único indice:

A(k)

nesse caso a matriz é tratada como um

vetor coluna formado pelas colunas da

matriz.

(20)

Erro no acesso aos elementos da matriz:

Caso tente-se acessar uma posição

fora da matriz, o MATLAB retorna

uma mensagem de erro:

(21)

Aumento das dimensões de uma matriz:

Atribuindo-se valor a uma posição fora

da matriz, as dimensões são

aumentadas para acomodar o novo

elemento:

(22)

Operador : (colon) – vetores seqüênciais

Sintaxe:

[ Vinic : Inc : Vfinal ]

Vinic = valor inicial

Inc = Incremento

Vfinal = valor final

(23)

Operador : (colon) – vetores seqüênciais

Algumas omissões são permitidas:

- [ ]

- se o parâmetro incremento for omitido, o MATLAB assume

incremento 1, por exemplo:

(24)

Operador : (colon) – vetores seqüênciais

Seqüência inválida:

Caso a seqüência solicitada esteja incorreta, o MATLAB

retorna uma matriz “vazia”:

(25)

A função linspace(Vinic , Vfinal , N)

linspace cria um vetor de Vinic a Vfinal com N elementos

(26)

A função linspace(Vinic , Vfinal , N)

Se o número de elementos for omitido, o MATLAB assume

100

elementos

:

(27)
(28)

Acessando linhas e colunas matrizes:

A(1:k,j) seleciona os k-ésimos primeiros

elementos a da j-ésima coluna.

(29)

end

Soma os elementos das

linhas de 1 a 4 da última

coluna.

Para uma matriz

4x4 essas notações

são equivalentes

(30)

Resumo dos comandos vistos até agora:

A=[1 2 3 ; 4 5 6 ; 7 8 9];

sum(A)

% soma das colunas

A’

% calcula a matriz transposta

sum(A’)

% soma das linhas

sum(A’)’

% soma das linhas na forma de um vetor coluna

diag()

% retorna a diagonal principal da matriz

fliplr()

% flip left-right

flipup()

% flip up-down

tril()

%retorna o lower-triangle da matriz

triu()

%retorna o upper-triangle da matriz

v1=[Vini:inc:Vfina];

%cria um vetor seqüêncial

linespace(Vinic,Vfinal,N);

Reshape(matrix,linhas,colunas);

(31)

O comando magic()

Magic é uma built-in function do

MATLAB utilizada para criar

matrizes quadradas com valores

inteiros entre 1 e N

2

com iguais

somas das linhas, colunas e

diagonais (exceto para N=2).

Original:

(32)

Swapping lines & columns A( : , [1 3 2 4]):

Para cada linha da matriz A, re-ordene os elementos na ordem 1,

3, 2, 4.

(33)
(34)
(35)

Variáveis

-

Deve iniciar com caracteres alfanumérico

-

É case-sensitive

-

Aceita o caractere ‘_’ no meio do nome

-

Embora não exista limitação para o tamanho do nome da

variável, o MATLAB utiliza apenas os 31 primeiros

caracteres;

(36)

Comandos de consulta e manipulação do Workspace

who

Lista o nome das variáveis no Workspace

whos

Lista o nome e o tipo das variáveis no Workspace

clear

Elimina todas as variáveis do Workspace

clear var1 var2

(37)

Operadores Aritméticos

Para cada operação arimética

existem dois tipos de

procedimentos:

Operações aritméticas de

matrizes, e

Operações aritméticas

vetoriais.

(38)

A*B e A.*B

por ex:

A*B efetua o produto de

duas matrizes da forma

tradicional.

A .*B calcula o produto

vetorial, i e, elemento por

elemento.

a.’ matriz transposta

normal

(39)
(40)
(41)
(42)
(43)
(44)
(45)
(46)

Número de elementos numel() e o função randn()

A função randn(M)

gera uma matriz

quadrada com valores

obtidos de uma

distribuição normal

N~(μ,

σ

),

(47)
(48)

Para que serve o comando

“barra invertida” \

(49)

Resolvendo um sistema de equações lineares:

Matriz inversa da

matriz coeficientes

-2

-2

-2

-2

(50)

Para resolver sem o MATALB, teríamos:

1) Calcular a matriz inversa:

(51)

2) Calcular da matriz Adjunto, sendo que para isso

precisamos primeiramente dos menores complementos:

Menor complemento:

Menor complemento de um elemento (i j) de uma matriz quadrada

é o determinante da matriz que obtemos ao suprimir a linha e a

coluna (i j). Por exemplo o menor complemento do elemento a

23

(52)
(53)

Resolvendo o sistema de equações lineares com o MATLAB

Note que é a barra invertida e é o

mesmo que inv(C)*b.

A matriz C deve ser quadrada.

Sendo C uma matriz

quadrada

(54)

Exercício: Determinar os valores das correntes no circuito:

=

+

+

=

+

+

=

+

+

0

)

(

0

)

(

)

(

0

)

(

2

3

5

2

3

4

3

2

4

2

3

1

2

2

2

1

2

1

1

1

V

i

R

i

i

R

i

i

R

i

R

i

i

R

i

i

R

i

R

V

(55)

=

+

+

=

+

+

+

=

+

+

2

3

5

4

2

4

1

3

4

2

4

3

2

1

2

1

3

2

2

1

2

1

)

(

0

0

)

(

-

0

)

(

V

i

R

R

i

R

i

i

R

i

R

R

R

i

R

V

i

i

R

i

R

R

=

+

+

+

1

2

1

4

4

3

2

2

2

2

1

0

)

(

0

)

(

V

i

i

R

R

R

R

R

R

R

R

(56)

Solução de sistema de equações

Determine os valores das correntes i

1,

i

2

e i

3

dados:

R

1

= R

2

= R

3

= R

4

= R

5

=1 ohm

V

1

=V

2

=5 V

(57)

Comandos para gerar matrizes:

(58)

Comandos para gerar matrizes:

zeros , ones , rand e randn

Crie uma matriz de ordem

120x150 onde todos os

elementos são iguais a 47.

47*ones(120, 150)

(59)

Comandos para gerar matrizes:

zeros , ones , rand e randn

(60)
(61)

Matriz identidade

Além dos comandos zeros, ones, rand e randn existe ainda o comando

(62)
(63)
(64)

plot( )

(65)
(66)
(67)

1

2

(68)
(69)

Exercício:

Tente plotar o gráfico

y = sen(x) . e

x

(70)

Image processing using MATLAB

Aprendendo MATLAB trabalhando com

Processamento de Imagens

(71)

Imagem = matriz !

Uma imagem pode ser tratada como uma matriz de

M (linhas) x N (colunas) elementos onde cada elemento

é um pixel.

(72)

Command line to read an image imread():

>> img =

imread

( ‘filename’ )

filename → string contendo o nome do arquivo, por ex:

f =

imread

(‘rose.jpg’) → lê a imagem jpeg e armazena na matriz

f.

(73)

Command line to read an image imread():

Para ler uma imagem de um diretório específico:

f =

imread

( ‘d:\myimages\rose.jpg’ );

ou

f=

imread

(‘.\myimages\rose.jpg’);

lê uma imagem do subdiretório myimages, a partir do

diretório corrente.

(74)
(75)

Function size(f)

(76)

O comando whos retorna as informações básicas da matriz

imagem:

(77)
(78)
(79)

O comando find()

O comando find()

retorna os “linear

indices” dos

elementos da

matriz que

satisfazem uma

dada

condição/critério:

(80)
(81)

O comando find()

(82)
(83)

Histogramas

O histograma de uma imagem (matriz), com nível de

cinza na faixa de [0, 255], é uma função discreta que

indica o número de pixels que apresentam um

(84)

Histograma de uma imagem

Histograma de uma imagem

( )

n

n

r

p

=

r

onde:

0

r

255, r

é a escala de cinza;

n = número total de pixels na imagem;

p(r) = probabilidade do nível de cinza r;

n

r

= número de pixels cujo nível de cinza corresponde a r.

Histograma normalizado, nesse caso teremos a probabilidade

de cada nível de cinza:

(85)

Através da visualização do histograma de uma

imagem obtemos uma indicação de sua qualidade

quanto ao nível de contraste e quanto ao seu brilho

médio (se a imagem é predominantemente clara ou

escura).

Histograma de uma imagem

(86)
(87)

Exemplos de Histograma

(88)

Exemplos de Histograma

(89)

Exercício:

Implemente uma função para calcular o histograma de uma

matriz com valores

entre 0 e 255.

Nome do arquivo: meuHist.m

Sugestão de código:

1) lê a imagem e armazena a matriz em

img

2) aloca vetor

histog

de 256 posições contendo zeros;

3)

varreimagem

(90)

imhist( )

imhist é a função do MATLAB que calcula o histograma de

uma imagem, por ex.:

f =

imread

(‘filename’);

h=

imhist

(f); ou h=

imhist

(f , b);

onde b= é o número de feixes (bins) usados para formar o

histograma, default = 256

p=

imhist

(f,b)/

numel

(f);

(91)

Visualizando o histograma de uma imagem:

Existem 4 tipos de gráficos que podem representar o

histograma de uma uma imagem:

imhist

bar

stem

(92)
(93)

bar(horz, vert, width)

horz=vetor com as mesmas dimensões de v;

(94)

bar(horz, vert, 1) e bar(horz, vert, 0.5)

bar(horz, h1)

(95)

stem(horz, vert, ‘color_linestyle_marker’ , ‘fill’)

color_linestyle_marker= ‘r--s’

(dashed lines & square markers are red)

fill= circulos, quadrados e losangulos são preenchidos com a cor

especificada.

(96)
(97)
(98)
(99)
(100)

Displaying images with MATLAB: imshow(f,G)

imshow(f,G)

f is the image array

G is the number of intensity levels used to display

imshow ( f , [low high] )

low display as black all pixels less than or equal to low

high display as white all pixels greater or equal to high

imshow(f , [ ])

sets variables:

(101)

Displaying images and adjusting the dinamic range:

Se a imagem possui faixa dinâmica pequena, e deseja-se

alterar a faixa apenas com o propósito de visualização,

utiliza-se o utiliza-seguinte comando:

(102)

Function pixelval

Indica a intensidade e as

coordenadas do pixels sobre o

cursor do mouse;

Clicando-se e mantendo-se o

botão direito do mousea

distância Euclediana entre o

início e a posição corrente do

cursos é indicada na tela

(103)

Função imwrite( )

imwrite(f , ‘filename’ )

A extensão do nome do arquivo deve ser um formato reconhecido pelo

MATLAB:

imwrite(f , ‘myxraychest’, ‘tif’)

ou

(104)

Tipos de variáveis na IPT

Importante:

Qualquer computação

numérica no MATLAB

utiliza variáveis do tipo

double;

8-bit images são as

mais comuns;

Uma string the chars é

(105)

Tipos de imagens

IPT trabalha com os seguintes tipos de imagens:

Intensity images

Binary images

Indexed images

RGB images

(106)

Intensity images

Intensity images → são aquelas cujos valores forma ajustados

para representar a intensidade;

uint8 → faixa de [0 , 255]

uint16 → faixa de [0, 65536]

double → valores do tipo “float-point”

Importante, imagens de intensidade da classe double são

sempre ajustadas para a faixa [0, 1], por convenção.

65535

(números reais)

(107)

Binary images

Matrix de 0s e 1s (imagens binárias).

Uma matrix de 0s e 1s da classe uint8, por ex, não é

considerada uma imagem binária pelo MATLAB.

Um matriz numérica é convertida para binária usando a

função logical

B = logical (A);

Se A contém valores diferentes de 0s e 1s, tudo que for

diferente de 0 vira 1 !

(108)

Matriz lógica:

Exemplo para representação de imagens binárias (BW).

Estude o código abaixo:

(109)

Limiarização automática “naive”

Supor que o histograma de uma imagem pode ser dividido em dois

clusters:

S

1

e

S

2

m

1

e

m

2

são

os máximos

dos clusters

(110)

Exercício:

Implementar um arquivo .m denominado

“autoLimNaive.m” para o algoritmo de

limiarização automática “naive”.

Teste com as imagens:

rice.png,

coins.png,

Referências

Documentos relacionados

Estudar: dorso de uma mão batendo na palma da outra Evitar: hang loose polegar na testa e movimento para frente Falar: P com dedo médio passando em baixo do queixo Fechar: contrário

ilustrados na seção 2.. O processo é semelhante ao anterior mas nele não é necessário gerar um ritmo previamente. O primeiro passo seria escolher os ataques que compõem o ritmo,

Todos esses momentos se tornam muito mais fáceis com ajuda de um mediador, ou seja, um profissional/terapeuta que pode ajudar no desenvolvimento de sua família, pois apenas

Estamos redigindo mais 4 artigos utilizando os dados desse estudo, sobre: a avaliação restrospectiva por interrogação dos 190 atletas sobre histórico de concussão;

Diante do exposto, este trabalho visa apresentar uma análise do monitoramento dinâmico de um ponto geodésico materializado sobre a estrutura da passarela que liga os campi

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

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

3 O Quinteto Lisboa é um projeto musical que nasceu da amizade e do traba- lho conjunto de muitos anos de dois grandes nomes da música popular portuguesa: João Monge (autor) e João