Sunteți pe pagina 1din 3

PROCESSAMENTO DIGITAL DE SINAIS (PDS)

LABORATRIO 2 SINAIS E SISTEMAS DISCRETOS


Prof. Marcelo Pellenz

EXERCCIO 1 Decomposio do Sinal em Componente Simtrica (Par)


e Componente Assimtrica (mpar)

Qualquer seqncia discreta real, x[n ] , pode ser decomposta em suas componentes par e mpar:

x[n ] = x par [n] + xmpar [n]

x par [n] = { x[n] + x[ n] } xmpar [n ] = { x[n] x[ n] }


1 1
2 2

O programa a seguir utiliza a funo [xe,xo,m]=evenodd(x,n) do toolbox do livro para decompor a


seqncia discreta x[n ] = u[n] u[n 10] em suas componentes par e mpar. Verifique nos grficos
gerados, que se adicionarmos as seqncias x par [n] + xmpar [n] obteremos a seqncia original x[n] .

n = [0:10];
x = stepseq(0,0,10)-stepseq(10,0,10);
[xe,xo,m] = evenodd(x,n);
subplot(1,1,1)
subplot(2,2,1); stem(n,x); title('Pulso Retangular')
xlabel('n'); ylabel('x(n)'); axis([-10,10,0,1.2])
subplot(2,2,2); stem(m,xe); title('Componente Par')
xlabel('n'); ylabel('xe(n)'); axis([-10,10,0,1.2])
subplot(2,2,4); stem(m,xo); title('Componente Impar')
xlabel('n'); ylabel('xo(n)'); axis([-10,10,-0.6,0.6])

EXERCCIO 2 Convoluo Linear

Para sistemas lineares invariantes no tempo (LTI Linear Time-Invariant Systems), podemos
relacionar os sinais de entrada e sada do sistema atravs da soma de convoluo, definida pela
equao:

y[n ] = x[n ] h[n ] = x[k ] h[n k ] = h[k ] x[n k ]
k = k =
Se conhecermos a resposta ao impulso do sistema (por exemplo um filtro digital) podemos calcular
a sada y[n] fazendo a convoluo do sinal de entrada, x[n] , com a resposta ao impulso do sistema,
h[n ] . Utilize a funo y=conv(x,h) do Matlab para calcular a convoluo linear entre duas
seqncias discretas de durao finita. A funo conv assume que as duas seqncias iniciam no
instante n=0.
x[n] = [ 3 11 7 0 - 1 4 2] - Sinal de entrada do sistema
h[n] = [ 2 3 0 - 5 2 1] - Resposta ao impulso do sistema


y[n ] = x[n]* h[n] = x[k ] h[n k ] - Sada do sistema
k =

No programa trace os grficos das seqncias x[n] , h[n] e y[n] . Interprete graficamente a operao
de convoluo.
EXERCCIO 3 Convoluo Linear

Para se fazer a convoluo entre seqncias genricas

x[n], n xb n n xe
h[n], nhb n nhe
utilize a funo [y,ny]=conv_m(x,nx,h,nh) do toolbox do livro. Esta funo j retorna tambm um
vetor para traar o grfico correto de y[n] . Faa a convoluo linear entre as duas seqncias
discretas abaixo:
x[n] = [ 3 11 7 0 - 1 4 2] , 3 n 3
h[n] = [ 2 3 0 - 5 2 1] , 1 n 4

Trace o grfico de x[n ] , h[n ] e y[n ] = x[n ] h[n ] . Interprete graficamente a convoluo.

EXERCCIO 4 Clculo de Correlao entre Seqncias

A correlao uma operao muito usada em aplicaes de processamento digital de sinais. uma
medida do grau de similaridade entre duas seqncias (sinais).

rxy [l ] = x[n] y[n l ] = y[l ]* x[ l ]
n =
A autocorrelao nos d uma medida de auto-similaridade do sinal com verses deslocadas dele
mesmo:

rxx [l ] = x[n] x[n l ] = x[l ]* x[ l ]
n =
O clculo da correlao e autocorrelao podem ser implementados usando a convoluo.
Considere a seqncia x[n] = [ 3 11 7 0 - 1 4 2] , 3 n 3 e a seqncia y[n] como sendo uma
verso deslocada e com rudo da seqncia x[n] , ou seja, y[n ] = x[n 2] + w[n ] .

% sequencia com ruido 1


x = [3, 11, 7, 0, -1, 4, 2]; nx=[-3:3]; % sinal x(n)
[y,ny] = sigshift(x,nx,2); % x(n-2)
w = randn(1,length(y)); nw = ny; % ruido w(n)
[y,ny] = sigadd(y,ny,w,nw); % y(n) = x(n-2) + w(n)
[x,nx] = sigfold(x,nx); % x(-n)
[rxy,nrxy] = conv_m(y,ny,x,nx); % autocorrelacao
subplot(1,1,1)
subplot(2,1,1);stem(nrxy,rxy)
axis([-4,8,-50,250]);xlabel('deslocamento l')
ylabel('rxy');title('Autocorrelacao: sequencia com ruido 1')
gtext('Maximo')
% sequencia com ruido 2
x = [3, 11, 7, 0, -1, 4, 2]; nx=[-3:3]; % sinal x(n)
[y,ny] = sigshift(x,nx,2); % x(n-2)
w = randn(1,length(y)); nw = ny; % ruido w(n)
[y,ny] = sigadd(y,ny,w,nw); % y(n) = x(n-2) + w(n)
[x,nx] = sigfold(x,nx); % x(-n)
[rxy,nrxy] = conv_m(y,ny,x,nx); % autocorrelacao
subplot(2,1,2);stem(nrxy,rxy)
gtext('Maximum')
axis([-4,8,-50,250]);xlabel('deslocamento l')
ylabel('rxy');title('Autocorrelacao: sequence com ruido 2')

O MATLAB possui a funo xcorr(x,y) e xcorr(x) para calcular a correlao e autocorrelao.


EXERCCIO 5 Exemplo de Implementao de um Filtro Digital

Exemplo de aplicao do filtro de mdia mvel para filtragem de um sinal com rudo:

M 1
y[n] = x[n k ]
1
M i =0
% Filtro de mdia mvel para M=3
clear; clc;

figure(1);
N=50;
d=rand(N,1)-0.5;
n=0:1:N-1;
s=2*n.*(0.9.^n);
subplot(2,1,1); stem(n,s); xlabel('n'); ylabel('Amplitude'); title('s[n]');
subplot(2,1,2); stem(n,d); xlabel('n'); ylabel('Amplitude'); title('d[n]');

N=50;
d=rand(N,1)-0.5;
n=0:1:N-1;
s=2*n.*(0.9.^n);
x=s+d';
figure(2);
plot(n,d,'r-',n,s,'b-',n,x,'g-'); xlabel('n'); ylabel('Amplitude'); legend('r-','d[n]','b-','s[n]','g-','x[n]');
M=3;
b=ones(M,1)/M;
y=filter(b,1,x);
figure(3);
plot(n,s,'r-',n,y,'b-'); legend('r-','s[n]','b-','y[n]'); xlabel('n'); ylabel('Amplitude');

EXERCCIO 6 Equaes Lineares com Coeficientes Constantes

Um sistema discreto linear pode ser caracterizado por uma equao linear de coeficientes constantes
na forma
N M

a k y[n k ] = bk x[n k ]
k =0 k =0

A funo y=filter(b,a,x) do Matlab resolve a equao de diferenas. Considere a seguinte equao


de diferenas

y[n] y[n 1] + 0.9 y[n 2] = x[n]


Determine:

a) Determine a resposta ao impulso do sistema, h[n ] , no intervalo 20 n 120


b) Determine a resposta ao degrau do sistema, s[n] , no intervalo 20 n 120
c) Implementar no matlab um programa para tempo real

PR-RELATRIO PARA O LABORATRIO 3

Resolver os problemas P2.3, P2.4 (para itens a, b, c do P2.2), P2.5, P2.6 e P2.7 do livro
Digital Signal Processing using MATLAB (Vinay K. Ingle and John G. Proakis).

S-ar putea să vă placă și