Professional Documents
Culture Documents
PDS
PROCESSAMENTO DIGITAL DE SINAIS
(LEEC, LEBM, MEEC)
Laboratrios
Introduo ao MatLab
Joo Sanches
2 Semestre
2004/2005
Os relatrios dos trabalhos de laboratrio devem ser entregues no final da sesso sob a forma de
comentrios nos ficheiros de Matlab de extenso *.m
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
1) Introduo
O Matlab um pacote de processamento cientifico especialmente vocacionado para
lidar com vectores e matrizes. Alm de um conjunto limitado de primitivas de
processamento, que constituem o ncleo da linguagem Matlab, a maior parte das
operaes realizada atravs de funes.
As funes esto encapsuladas em ficheiros de texto, de extenso .m, contendo
comandos Matlab. Estes comandos so constitudos por primitivas Matlab e por
chamadas a outras funes.
O processamento pode ser realizado atravs da chamada de funes, como j foi
referido, por ficheiros de comandos e por linha de comandos.
Existem disponveis no Matlab um quantidade enorme de funes organizadas por
reas cientficas e organizadas em diferentes directorias. Cada conjunto de funes
designa-se toolbox. Para listar o todo o conjunto de toolbox:
Experimente:
>>help
A ajuda do Matlab um elemento fundamental j que a quantidade de comandos e
funes existentes extremamente elevada. A ajuda pode ser obtida atravs da
interface HTML ou atravs da linha de comando:
Experimente:
>>help sqrt
a) Operaes bsicas
A forma mais simples de executar comandos no Matlab atravs da interface de
desenvolvimento, escrevendo os comandos frente da prompt do sistema:
>> comando
(Enter)
Sempre que o comando executado o resultado da operao ecoa no ecr. Se
quisermos evitar este comportamento devemos terminar o comando com o ;. Todas as
linhas que comeam pelo carcter % so linhas de comentrios. Escreva os relatrios
sob a forma de linhas de comentrio introduzidas nos locais adequados do seu
ficheiro de comandos.
>>3*4
>>4+3/2
>>3*2^3
>>7 & 0
>>9 | 0
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
Experimente:
>>a=5;
>>b=34;
>>c=a/b;
>>c
b) Vectores e matrizes
i)
Conceitos bsicos
O Matlab foi especialmente concebido para lidar com matrizes. A grande maioria de
valores numricos ou alfanumricos podem ser tratados como matrizes, por exemplo o
nmero 6 uma matriz de 1x1 elementos, o vector linha [1 5 3 1] uma matriz de
dimenso 1x4 (1 linha por 4 colunas), a matriz
(2 linhas por 3 colunas) e a palavra Matlab um vector de 1x6 elementos em que cada
elemento um dos caracteres da palavra.
Experimente os seguintes comandos:
Dimenses?
>>vl =[3 4 1 7 8]
>>vc =[3;4;1;7;8]
>>m=[2 5;7 1;9 5]
>>s=Matlab
elmat ):
Transposio:
Transconjugado:
Dimenso
Comprimento de vectores
Inverso de matrizes
Determinante
>>size(m)
>>length(v)
>>inv(m)
>>det(m)
Experimente:
>>m=[1 5 3;3 2 1;7 2 9]
>>iv=inv(m)
>>m*iv
O resultado o que esperava?
As operaes sobre matrizes so realizadas, por defeito, utilizando as regras aplicveis
a matrizes.
Experimente:
>>a=[1 2 3; 4 5 6;7 8 9];
>>r1=a*a
>>r2=a.*a
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
A diferena est na forma como o Matlab multiplicou ambas as matrizes. No primeiro
caso, cada elemento
=<
> obtido atravs do produto
interno da linha i pela coluna j. No segundo caso o produto das duas matrizes (que
neste caso so iguais) feita multiplicando os elementos homlogos.
Experimente:
>>a=[1 2 3];
>>b=[4 5 6];
Explique a diferena entre os seguintes resultados:
>>a.*b
>>a*b
>>a*b
ii) Acesso aos elementos de um vector ou matriz
Os elementos de um vector ou de uma matriz podem ser acedidos individualmente ou
em grupo. No caso dos vectores, os seus elementos acedem-se colocando entre
parntesis o ndice do elemento a que se pretende aceder. Para aceder a um conjunto
de elementos utilizam-se os ndices inicial e final separados por :. As matrizes
funcionam da mesma maneira mas agora a duas dimenses. Se numa das dimenses
omitirmos os ndices, e utilizarmos apenas o sinal :, acedemos a todos os elementos da
respectiva dimenso.
Experimente:
>>c=a*b
>>a(2)
>>b(1:2)
>>c(2,1)
>>c(1:2,2:3)
>>c(2:2,1:2)
>>c(1:2,:)
iii) Gerao de vectores e matrizes
Existe no matlab um conjunto bastante vasto de funes que permitem gerar os vectores
e matrizes mais utilizados
Experimente
>>t=zeros(3,5)
>>ones(3)
>>3*ones(1,6)
>>7*ones(3,1)
>>t=4:.25:10;
>>r=rand(10)
c) Criao de grficos
O MATLAB disponibiliza uma grande quantidade de funes que permitem visualizar
diferentes tipos de grficos. Algumas dessas funes, mas no todas, esto agrupadas
na toolbox graph2d,
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
Experimente:
>>help graph2d
Vamos apenas exemplificar a utilizao da funo de visualizao de grficos mais
comum, isto , a funo plot. Comecemos por gerar dados para visualizao e que vai
ser constituda por uma sinuside degradada por rudo aditivo e Gaussiano. Faa
>>t=0:2*pi/500:2*pi;
>>y=10*sin(t)+randn(1,length(t)) ;
>>plot(t,y) ;
Vrios atributos do grfico resultante podem ser configurados. Por exemplo, para juntar
uma grelha experimente:
>>grid
Faa >>help plot, para conhecer todos os atributos do grfico e experimente alguns
deles. Se na janela grfica, seleccionar o modo de edio do grfico, pode configurar
quase todos os parmetros utilizando a interface grfica disponibilizada pelo ambiente
de desenvolvimento. Por exemplo, seleccionando o modo de edio e premindo duas
vezes o boto esquerdo do rato sobre o eixo horizontal tem acesso a uma janela de
parmetros que lhe permite configurar completamente este eixo.
Outras funes grficas comuns so surf e mesh que se encontram disponveis na
toolbox graph3d.
Experimente:
>>help graph3d
d) Criao de funes e ficheiros de comandos
O MATLAB permite executar comandos armazenados num ficheiro de comandos, de
forma a evitar repeties exaustivas de comandos na linha de comandos. No menu do
ambiente de desenvolvimento escolha a File->New->M-File. Este comando abre uma
nova janela de edio de ficheiro de texto de extenso *.m. Neste ficheiro introduza as
seguintes linhas, que geram e visualizam um sinal de teste,
M=1;
N=500;
x=-M*pi:2*M*pi/N:M*pi;
y=x;
t=x'
*y;
z=sinc(t);
mesh(x,y,z);
Este conjunto de instrues gera uma superfcie, cuja forma exacta depende do
parmetro M. Depois de ter introduzido esta sequncia de comandos grave o ficheiro,
com o nome, por exemplo, teste.m. Na linha de comando faa
>>teste
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
Como pode verificar, a sequncia de comandos contida no ficheiro executada e o
grfico gerado. O ficheiro de comandos tambm pode ser executado a partir da barra de
ferramentas no editor, premindo o boto RUN. Neste caso, deve ter ateno s
mensagens que surgem na janela do ambiente de desenvolvimento, pois para a que o
MATLAB envia as mensagens de aviso (warning) ou de erro que surgem durante a
execuo do programa.
Experimente agora alterar o valor de M para 0.5, grave novamente o ficheiro e executeo. Como pode verificar no foi preciso reescrever o cdigo, quando o que se pretendia
era apenas alterar um parmetro.
Vamos agora alterar o ficheiro de comandos de forma a transform-lo numa funo.
Para isso, substitua a linha M=1 pelo seguinte conjunto de instrues:
function [x,y,z]=teste(M)
Esta instruo declara que o contedo deste ficheiro pode ser acedido atravs da funo
teste(M). A funo aceita como parmetros de entrada a varivel M e devolve os
vectores e matrizes, x, y e z.
Na linha de comando escreva
>>teste(0.75);
Note que o nome da funo deve coincidir com o nome do ficheiro. De facto, este o
mecanismo que o MATLAB utiliza para descobrir se uma funo est definida ou no,
isto , se existe ou no um ficheiro com o nome da funo invocada. As funes aceitam
um nmero indeterminado de parmetros de entrada assim como permite fazer sair um
nmero indeterminado de parmetros de sada, de qualquer espcie, isto , escalares,
vectores, matrizes, cadeias de caracteres, etc. Dentro das funes ou ficheiro de
comandos possvel correr outras funes bastando para isso invocar o seu nome.
As variveis definidas nos ficheiros de comando so variveis globais, isto , conhecidas
em todo o ambiente MATLAB, funes ou ficheiros de comandos. As variveis definidas
dentro das funes so variveis locais, conhecidas apenas dentro da funo.
Finalmente, o nmero de funes, o seu funcionamento interno, nmero de parmetros
de entrada e de parmetros de sada pode ser difcil de memorizar, principalmente a
longo prazo. Portanto, fundamental comentar adequadamente as funes.
O MATLAB facilita-nos a tarefa permitindo a introduo de linhas de comentrio
imediatamente a seguir linha contendo a palavra reservada function. Estas linhas de
comentrio so apresentadas quando o help invocado com o nome da funo.
Experimente introduzir as seguintes linhas de comando a seguir linha que contm a
palavra function:
>>help teste
O resultado a apresentao das linhas de comentrios anteriormente introduzidas.
Esta funcionalidade fundamental para facilmente sabermos o que que uma
determinada funo implementa e quais so os parmetros de entrada e sada.
A funes e ficheiros de comandos admitem a utilizao instrues de programao
tpicas de outras linguagens de programao, como por exemplo, if, while, etc. Para ver
a listagem deste tipo de instrues faa
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
>>help lang
2)
Lista de Funes
a)
Audio support.
b)
Filter analysis.
abs
angle
filternorm
freqs
freqspace
freqz
fvtool
grpdelay
impz
phasez
phasedelay
unwrap
zerophase
Joo Sanches
- Magnitude.
- Phase angle.
- Compute the 2-norm or inf-norm of a digital filter.
- Laplace transform frequency response.
- Frequency spacing for frequency response.
- Z-transform frequency response.
- Filter Visualization Tool.
- Group delay.
- Discrete impulse response.
- Digital filter phase response.
- Phase delay of a digital filter.
- Unwrap phase.
- Zero-phase response of a real filter.
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
zplane
- Convolution.
- 2-D convolution.
- Convolution matrix.
- Deconvolution.
- Overlap-add filter implementation.
- Filter implementation.
- Two-dimensional digital filtering.
- Zero-phase version of filter.
- Determine filter initial conditions.
- Lattice filter implementation.
- 1-Dimensional median filtering.
- Savitzky-Golay filter implementation.
- Second-order sections (biquad) filter implementation.
- Up sample, FIR filter, down sample.
Discrete
dfilt
iii)
cremez
fir1
fir2
fircls
fircls1
firgauss
firls
firrcos
intfilt
kaiserord
remez
remezord
sgolay
iv)
butter
cheby1
cheby2
ellip
maxflat
yulewalk
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
vi)
besselap
buttap
cheb1ap
cheb2ap
ellipap
vii)
besself
butter
cheby1
cheby2
ellip
viii)
lp2bp
lp2bs
lp2hp
lp2lp
ix)
bilinear
impinvar
bartlett
barthannwin
blackman
blackmanharris
bohmanwin
Joo Sanches
- Bartlett window.
- Modified Bartlett-Hanning window.
- Blackman window.
- Minimum 4-term Blackman-Harris window.
- Bohman window.
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
chebwin
flattopwin
gausswin
hamming
hann
kaiser
nuttallwin
parzenwin
rectwin
triang
tukeywin
wvtool
window
xii)
- Chebyshev window.
- Flat Top window.
- Gaussian window.
- Hamming window.
- Hann window.
- Kaiser window.
- Nuttall defined minimum 4-term Blackman-Harris window.
- Parzen (de la Valle-Poussin) window.
- Rectangular window.
- Triangular window.
- Tukey window.
- Window Visualization Tool.
- Window function gateway.
Window object.
sigwin
xiii)
bitrevorder
czt
dct
dftmtx
digitrevorder
fft
fft2
fftshift
goertzel
hilbert
idct
ifft
ifft2
xiv)
Cepstral analysis.
cceps
icceps
rceps
xv)
- Complex cepstrum.
- Inverse Complex cepstrum.
- Real cepstrum and minimum phase reconstruction.
Statistical signal processing and spectral analysis.
cohere
corrcoef
corrmtx
cov
csd
pburg
pcov
peig
periodogram
pmcov
pmtm
pmusic
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
psdplot
pwelch
pyulear
rooteig
rootmusic
tfe
xcorr
xcorr2
xcov
xvi)
arburg
arcov
armcov
aryule
ident
invfreqs
invfreqz
prony
stmcb
xvii)
ac2rc
ac2poly
is2rc
lar2rc
levinson
lpc
lsf2poly
poly2ac
poly2lsf
poly2rc
rc2ac
rc2is
rc2lar
rc2poly
rlevinson
schurrc
xviii)
decimate
- Resample data at a lower sample rate.
downsample
- Downsample input signal.
interp
- Resample data at a higher sample rate.
interp1
- General 1-D interpolation. (MATLAB Toolbox)
resample
- Resample sequence with new sampling rate.
spline
- Cubic spline interpolation.
upfirdn
- Up sample, FIR filter, down sample.
upsample
- Upsample input signal.
xix)
Waveform generation.
chirp
Joo Sanches
2 Semestre 2004/2005
PDS
Processamento Digital de Sinais
(LEEC,MEE,LEBM)
Guia de Laboratrio
diric
gauspuls
gmonopuls
pulstran
rectpuls
sawtooth
sinc
square
tripuls
vco
xx)
Specialized operations.
buffer
cell2sos
cplxpair
demod
dpss
dpssclear
dpssdir
dpssload
dpsssave
eqtflength
modulate
seqperiod
sos2cell
specgram
stem
strips
udecode
uencode
xxi)
fdatool
fvtool
sptool
wintool
wvtool
Joo Sanches
2 Semestre 2004/2005