You are on page 1of 70

Introduo ao MATLAB

(Aula 3)

Curso de Especializao em Teleinformtica e Redes de Computadores Departamento Acadmico de Eletrnica Universidade Tecnol ica do !aran

Uso da placa de som do PC


sound"#$ %s$ &its' envia o sinal contido em um vetor amostrado com um !re"#$ncia %s e resoluo &its para o placa de som do computador% !ai&a do sinal' (1 )* + )* ,1 valores !ora dessa !ai&a so cei!ados (clipped)% -amos dividir esse e&emplo em duas partes' ( .erar uma !orma de onda senoidal ( reprodu/ir o som0tom da senoide .erada%
Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

1nda senoidal

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"

AP tuner
Bai&e e instale o 2AP tuner3 para o4servar a !re"#$ncia do sinal .erado' 5ttp'00666%aptuner%com0c.i(4in0aptuner0apmain%5tml 14serve a ta4ela de !re"#$ncias das notas musicais

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

7eprodu/ir o som de uma onda senoidal

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

Modulando a amplitude de um sinal

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

7u8do uni!orme

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

Ler e reprodu/ir um ar"uivo 2%6av3

14serve o valor de %s(in ve9a "ue cada ar"uivo 6ave tem um !re"#$ncia de amostra.em di!erente%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

&

Ler e reprodu/ir um ar"uivo 2%6av3


7eprodu/ir canal da es"uerda ou direita%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

'

:o4re a !re"#$ncia de amostra.em


A !re"#$ncia de amostra.em corresponde ; ta&a de amostras com a "ual o sinal !oi .ravado% :em essa in!ormao no < poss8vel a correta reproduo do ar"uivo di.itali/ado%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

(0

=ravando sons com um micro!one usando Matla4


r * audiorecorder(>re"?amostra.em n4its ncanais)@ r * audiorecorder(AA1BB 1C 1)@ p * pla+(r)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

((

Tra4al5o para ser entre.ue


Produ/ir as !re"#$ncias correspondentes as notas musicais

a4ai&o'

Tocar a mDsica' 2dE re mi !F !F !F dE r< dE r< r< r< dE sol !F mi mi mi dE r< mi !F !F !F3 Com tempos de cada nota indicada pelo usuFrio%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

(2

Criando um menu de e&ecuo'


>aa o do6nload e&ecute e analise o ar"uivo GGG%m do site da disciplina% 14serve os se.uintes recursos' >unHes' input() e&ist() clc Controle de !lu&o' s6itc5

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

("

Criando um menu de e&ecuo'


Pro.rama' pla#)as%s*m Parte 1 de I Jispon8vel no site da disciplina%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

(#

Criando um menu de e&ecuo'


Pro.rama' pla#)as%s*m Parte I de I Jispon8vel no site da disciplina%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

($

K&erc8cio'
Creio o a"uivo pla#)av%s+*m com os se.uintes adicionais'
( (

Mostrar o tempo de reproduo 1po' LiM inverter sentido das amostras

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

(%

=rF!icos IJ ( plot"'

plot(G N)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

(7

=rF!icos IJ ( plot"'

plot(G N Line:pec)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

(&

=rF!icos IJ ( plot"'

plot(G N Line:pec OPropert+PameO Propert+-alue)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

('

=rF!icos IJ ( plot"'

a&is() set() .rid &la4el() +la4el() title

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

20

=rF!icos IJ ( plot"'

a&is() set() .rid &la4el() +la4el() title

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2(

=rF!icos IJ ( plot"'

MDltiplas curvas no mesmo .rF!ico

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

22

=rF!icos IJ ( plot"'

MDltiplas curvas no mesmo .rF!ico

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2"

=rF!icos IJ ( plot"'

le.end()

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2#

=rF!icos IJ ( plot"'

le.end()

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2$

=rF!icos 3J ( plot,"'

plot3(G N Q Line:pec)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2%

mes- rid"'
=era matri/es G e N para .rF!icos 3J LG NM * mes5.rid(& +)

Converte o dom8nio especi!icado pelos vetores & e + nos vetores G e N os "uais so utili/ados na avaliao de .rF!icos 3J% As lin5as de G so cEpias do vetor & As colunas de N so cEpias do vetor +

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

27

mes- rid"'

As lin5as de G so cEpias do vetor 1'3

As colunas de N so cEpias do vetor 1B'1A

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2&

Mes5 plots R mes-"'


mes-".$/$0' Cria uma wireframe surface especi!icada por G N com cor determinada por Q assim a cor < proporcional a altura da super!8cie%

g(i, j) = e

i 2+ j 2 2 2

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

2'

Mes5 plots R surf"'

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"0

s5adin.(SoptionsT) options* !lat interp !aceted

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"(

mes5c()

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"2

Pode(se tam4<m plotar uma matri/ em um .rF!ico 3J

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

""

Pode(se tam4<m plotar uma matri/ em um .rF!ico 3J

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"#

Manipulao de matri/es 3J' e&emplos para ima.ens

R12' componentes Red Green Blue Truecolor' cada pi&el de cada componente tem U 4its (24 bits por pixel) 3o matla&4 img < uma matri/ de 1I lin5as & 1I colunas & 3 Exemplo: !a/endo o pi&el p amarelo'
im.(I 3 5) * IVV@ WR im.(I 3 +) * IVV@ W1 im.(I 3 ,) * B@ W2

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"$

Manipulao de matri/es
Exemplo: Matri/es 7 = e B de uma ima.em%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"%

Matri/es 7 = e B

colorida

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"7

Manipulao de matri/es
Exemplo: Matri/es 7 = e B de uma ima.em concatenadas em uma Dnica matri/%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"&

Matri/es 7 = e B

1536 colunas (512*3) 1152 linhas (384*3)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

"'

Manipulao de matri/es

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#0

imtool"' L14s%' !uno anti.a' imvie6() M


>erramenta interativa "ue para o4ter a coordenada de um pi&el e seu valor% Exemplo:

!en"#o:

".$/'

col ro$

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#(

imvie6"'
%oom &

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#2

Tools !i7el Re ion

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#"

Manipulao de matri/es
Exemplo: CEpia de uma re.io de uma ima.em 7=B (as coordenadas da re.io !oram o4tidas atrav<s do imtool())%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

##

CEpia de uma re.io 7=B

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#$

K&erc8cio
>aa o do6nload da ima.em colorida veiculo1.jpg% Utili/ando o imtool(), locali/e as coordenadas de uma re.io retan.ular "ue cu4ra somente a placa% Kscreva um script c5amado re 8eiculo5*m para preenc5er esta re.io da ima.em com a cor a/ul%

666%la4iem%cp.ei%ce!etpr %4r0mem4ers05um4ertoI0t eac5in.0pdi0ima.ens

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#%

Tipo de dado struct "estrutura'


Permite o arma/enamento de elementos de di!erentes tipos% Cada elemento < um campo (field) da estrutura% Ytil na or.ani/ao dos dados% Para criar uma esturtura' >uno struct

m+:truct * struct(S!ield1T data1 S!ieldIT dataI X S!ieldnT datan)@

1s campos so acessados da se.uinte !orma' var * m+:truct%!ieldI@ WstructPame%!ieldPame

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#7

Tipo de dado struct "estrutura'


Pode(se criar um vetor de estruturas'

1s campos so acessados da se.uinte !orma' var * m+:truct(1)%!ieldI@ WstructPame(k)%!ieldPame

ndice da estrutura #&

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

Tipo de dado struct "estrutura'


xemplo! Um vetor de estruturas para arma/enar al.uns dados dos clientes de uma locadora e a movimentao de cada um em nDmero de 8tens locados nos Dltimos V meses%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

#'

Tipo de dado struct "estrutura'


"riando a estrutura! :cript 4uild:truct%m

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$0

Tipo de dado struct "estrutura'


-isuali/ao da estrutura cliente no #rra$ ditor

%uplo cli&ue para expandir cada struct do vetor %uplo cli&ue na vari'vel

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$(

Tipo de dado struct "estrutura'


Acessando os campos das estruturas

VZ elemento do vetor

movim

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$2

Tipo de dado struct "estrutura'


xemplo! uma !uno "ue rece4e um ms como par[metro de entrada varre as estruturas do vetor e devolve o cadastro do usuFrio com maior movimentao neste m$s%
%igite e c(digo e salve. )embre*se &ue o nome do ar&uivo .m deve ser id+ntico ao da fun,-o. .este exemplo! clienteMaiorMov.m

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$"

Jepurao do cEdi.o "de&u '


Pode(se inserir breakpoints no cEdi.o e e&ecutF(lo passo a passo% As variFveis aparecem no workspace. Exemplo:

/ara inserir um breakpoint, basta clicar na lin0a.

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$#

Jepurao do cEdi.o "de&u '


ApEs inserir o breakpoint, e&ecute a !uno para o m$s A'

1 prompt altera*se (K>>) e o Kditor0Je4u..er 2 ativado!

#s vari'veis &ue est-o no escopo da fun,-o aparecem no 3orskspace

# flec0a verde indica a lin0a de programa na &ual a execu,-o se encontra (neste caso no 4rea\point con!orme esperado)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$$

Jepurao do cEdi.o "de&u '


-eri!icando'
strutura de entrada. As movimentaHes do m$s A so na se"#$ncia' I A C I% Jentro do vetor de estruturas o cliente com maior movimentao no m$s A < o cliente(9) com C locaHes% :eu cadastro < 194:% 9 esse o valor de sa:da ;ue esperamos da funo "varivel cad'*

145 6odos as movimente,7es do m+s 4 foram cerregadas no vetor movim8es.

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$%

Jepurao do cEdi.o "de&u '


Ji!erentes opHes para a depurao esto dispon8veis no menu De&u '
# tecla ;1< (=tep) executa passo*a*passo, a partir do ponto atual

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$7

Jepurao do cEdi.o "de&u '

%5<

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$&

Jepurao do cEdi.o "de&u '


%5<

%5< '() %5< "finaliza'


Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

$'

Teste da !uno para outros valores de mes

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%0

1utro casoX
K se 5ouver clientes empatados na movimentao mF&ima da"uele m$s] m outras palavras! Um ou mais clientes com a mesma movimentao mF&ima no mesmo m$s] -amos criar esta situao e o4servar o comportamento da !uno% >a/er um =ave #s... do script 4uild:truct%m criando o script &uild=cript+*m K&ecute este script%
Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%(

1utro casoX
=itua,-o exemplo! neste novo con9unto de dados o cliente"5' e o cliente",' tiveram a mesma movimentao mF&ima no mes,% Com isso a !uno deveria retornar os cadastros destes dois clientes' 5,>? e 5,>@ xecutando a fun,-o!

' resul!ado n#o * o dese+ado)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%2

>uno ma7"'
Pa nossa !uno < a !uno ma7"' do MATLAB "ue encontra o 8ndice do cliente com mF&ima movimentao na"uele m$s'

Po entanto a !uno ma7"' retorna apenas A mF&imo% Testando a !uno ma7"'' 14servar "ue ma&() retorna o 8ndice do 2primeiro mF&imo3
Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%"

>uno find"'
Para encontrar os 8ndices de todos os mF&imos pode(se utili/ar o se.uinte al.oritmo' :upondo o vetor v v B C5 + , , > 5 > +D valor do mF&imo' m * A m B ma7"v' i B find"v BB m' 8ndices dos mF&imos' i * LV ^M im5 B i"5' 8ndice do mF&imo 1' im1 * V im+ B i"+' 8ndice do mF&imo I' imI * ^

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%#

7eescrevendo a !uno cliente8aior8ov()


>a/er um =ave #s... do ar"uivo clienteMaiorMov%m criando o ar"uivo clienteMaiorMovI%m'

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%$

Teste da !uno cliente8aior8ov2()

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%%

>uno error"'
A !uno cliente8aior8ov2() aceita I par[metros como entrada% Pa sua c5amada esta condio deve ser respeitada% Caso contrFrio ocorrerF um erro'

Ja mesma !orma o valor de mes especi!icado na entrada deve estar dentro da !ai&a 5***E (considerando o vetor de estruturas 2cliente3 do e&emplo)

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%7

>uno error"'
A !uno error"' pode ser utili/ada nesses casos para mostrar uma mensa.em e a4ortar a !uno% A !uno nar in tam4<m < Dtil nestas situaHes% Jentro do corpo da !uno ela indica o nDmero de ar.umentos de entrada% Exemplo para a !uno clien!e,aior,o-2"'4

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%&

>uno error"'
=erando as mesmas situaHes de erro anteriores'

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

%'

K&erc8cio
Kla4ore uma !uno c5amada clien!e,aior,o-.(): 7ece4e o vetor de estruturas criado pelo script /uild0!ruc!1m e devolve o cadastro do cliente com maior movimentao na soma de todos os meses%

Introduo ao MATLAB Copyright@2007 Prof. Gusta o B. Bor!a

70

You might also like