Você está na página 1de 20

INSTITUTO FEDERAL DO ESPRITO SANTO

CURSO DE PS-GRADUAO EM ENGENHARIA ELTRICA


PROCESSAMENTO DE SINAIS APLICADO A RECONHECIMENTO DE PADRES

RELATRIO DE PROCESSAMENTO DE SINAIS


APLICADO A RECONHECIMENTO DE PADRES

AULA 6P
Aplicaes da Soma de Convoluo

Fausto Oliveira e Silva


Ricardo de Almeida

Vitria
2016

Indce
1

OBJETIVO........................................................................................................ 4

ATIVIDADES .................................................................................................... 5
2.1

Exerccio 1 ................................................................................................ 5

2.1.1

Resultados ......................................................................................... 5

2.1.2

Cdigo ................................................................................................ 6

2.1.3

Comentrios ...................................................................................... 6

2.2

Exerccio 2 ................................................................................................ 7

2.2.1

Resultados ......................................................................................... 7

2.2.2

Cdigo ................................................................................................ 8

2.2.3

Comentrios ...................................................................................... 8

2.3

Exerccio 3 ................................................................................................ 9

2.3.1

Resultados ......................................................................................... 9

2.3.2

Cdigo .............................................................................................. 10

2.3.3

Comentrios .................................................................................... 10

2.4

Exerccio 4 .............................................................................................. 11

2.4.1

Comentrios .................................................................................... 11

2.4.2

Resultados - 4a................................................................................ 12

2.4.3

Cdigo - 4a....................................................................................... 12

2.4.4

Resultados - 4b ............................................................................... 13

2.4.5

Cdigo - 4b ...................................................................................... 13

2.4.6

Resultados - 4c................................................................................ 14

2.4.7

Cdigo - 4c....................................................................................... 14

2.4.8

Resultados - 4d ............................................................................... 15

2.4.9

Cdigo - 4d ...................................................................................... 15

2.4.10 Resultados - 4e................................................................................ 16

2.5

Exerccio 5 .............................................................................................. 17

2.5.1

Resultados - 5a................................................................................ 17

2.5.2

Cdigo - 5a....................................................................................... 17

2.5.3

Comentrios - 5a ............................................................................. 17

2.5.4

Resultados - 5b ............................................................................... 18

2.5.5

Cdigo - 5b ...................................................................................... 18

2.5.6

Comentrios - 5b ............................................................................. 18

2.5.7

Resultados - 5c................................................................................ 19

2.5.8

Cdigo - 5c....................................................................................... 19

2.5.9

Comentrios - 5c ............................................................................. 20

OBJETIVO

Os sistemas mais utilizados em quase todas as reas da Engenharia so os sistemas


lineares invariantes no tempo (abreviadamente, LIT ou LTI em ingls).

O principal motivo para esta preferncia que este tipo de sistema fica totalmente
caracterizado pela sua resposta impulsiva, ou seja, pela sada do sistema quando
colocamos em sua entrada o sinal impulso unitrio [n]. Em outras palavras, se
soubermos a resposta de um sistema LIT a uma entrada impulsiva, saberemos
calcular sua resposta para qualquer entrada.

2
2.1

ATIVIDADES
Exerccio 1

Um sistema LIT tem a resposta ao impulso dada por:

h[n] =u[n] u[n 10]

Determine a sada deste sistema quando a entrada for o pulso retangular definido
como x[n]=u[n 2]u[n 7]:

Figura 1. Resposta ao Impulso e Entrada de Pulso Retangular.

2.1.1 Resultados

Figura 2. Soma de Convoluo sem funo conv.

2.1.2 Cdigo
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_1.m Convoluo dos dois sinais sem conv
%-------------------------------------------------------------------------% Gerao dos Sinais de Resposta ao Impulso e de Entrada
%-------------------------------------------------------------------------n = -1:20;
% Vetor de Amostragem
hn = round(heaviside(n)) - round(heaviside(n - 10));
xn = round(heaviside(n - 2)) - round(heaviside(n - 7));
%-------------------------------------------------------------------------% Gerao dos Sinais de Entrada em Funo de k e a Resposta deslocada
%-------------------------------------------------------------------------k = length(hn);
m = length(xn);
xk = [xn, zeros(1, k)];
hk = [hn, zeros(1, m)];
%-------------------------------------------------------------------------% Efetuando a Convoluo pela soma de impulsos deslocados no tempo
%-------------------------------------------------------------------------for i=1:m+k-1
yn(i)=0;
for j=1:k
if(i-j+1>0)
yn(i)=yn(i)+xk(j)*hk(i-j+1);
else
end
end
end
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal xk
subplot(3,1,1)
stem(-1:length(xk)-2, xk);
title('Convoluo dos dois sinais sem conv.m');
xlabel('k');
ylabel('x[k]');
grid on;
% Plotar Sinal hk
subplot(3,1,2)
stem(-1:length(hk)-2, hk);
xlabel('k');
ylabel('h[n-k]');
grid on;
% Plotar Sinal yn
subplot(3,1,3)
stem(-1:length(yn)-2, yn);
xlabel('n');
ylabel('y(n)');
grid on;

2.1.3 Comentrios
A sada do sistema em cada intervalo de n obtida com a soma dos valores de cada
intervalo deslocado no tempo em funo de k.

2.2

Exerccio 2

Obtenha novamente o resultado do Exerccio 1 utilizando o comando conv do Matlab:

2.2.1 Resultados

Figura 3. Soma de Convoluo com funo conv.

2.2.2 Cdigo
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_2.m Convoluo dos dois sinais com conv
%-------------------------------------------------------------------------% Gerao dos Sinais de Resposta ao Impulso e de Entrada
%-------------------------------------------------------------------------n = -1:20;
% Vetor de Amostragem
hn = round(heaviside(n)) - round(heaviside(n - 10));
xn = round(heaviside(n - 2)) - round(heaviside(n - 7));
%-------------------------------------------------------------------------% Efetuando a Convoluo pela funo do MatLab
%-------------------------------------------------------------------------yn = conv(xn, hn);
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal hn
subplot(3,1,1)
stem(n, hn);
title('Sinais de Resposta ao Impulso e de Entrada');
xlabel('n');
ylabel('h[n]');
grid on;
% Plotar Sinal xn
subplot(3,1,2)
stem(n, xn);
xlabel('n');
ylabel('x[n]');
grid on;
% Plotar Sinal yn
subplot(3,1,3)
stem(-1:length(yn)-2, yn);
title(['Convoluo dos dois sinais com conv.m']);
xlabel('n');
ylabel('y(n)');
grid on;

2.2.3 Comentrios
Resultado do grfico conforme esperado.

2.3

Exerccio 3

Um sistema LIT tem resposta ao impulso

Determine a sada do sistema y[n] quando a entrada for x[n] = u[n] .

2.3.1 Resultados

Figura 4. Soma de Convoluo de ambos sinais com funo conv.

10

2.3.2 Cdigo
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_3.m Convoluo de ambos sinais com conv
%-------------------------------------------------------------------------close all;
clear all;
clc;
%-------------------------------------------------------------------------% Declarao das Variveis de Uso Geral
%-------------------------------------------------------------------------n = -1:20;
% Vetor de Amostragem
%-------------------------------------------------------------------------% Gerao dos Sinais de Resposta ao Impulso e de Entrada
%-------------------------------------------------------------------------hn = ((3/4).^n).*round(heaviside(n));
xn = round(heaviside(n));
%-------------------------------------------------------------------------% Efetuando a Convoluo pela funao do Matlab
%-------------------------------------------------------------------------yn = conv(xn, hn);
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal hn
subplot(3,1,1)
stem(n, hn);
title('Sinais de Resposta ao Impulso e de Entrada');
xlabel('n');
ylabel('h[n]');
grid on;
% Plotar Sinal xn
subplot(3,1,2)
stem(n, xn);
xlabel('n');
ylabel('x[n]');
grid on;
% Plotar Sinal yn
subplot(3,1,3)
stem(-1:length(yn)-2, yn);
title(['Convoluo de ambos sinais com conv.m']);
xlabel('n');
ylabel('y(n)');
grid on;

2.3.3 Comentrios
Resultado do grfico conforme esperado.

11

2.4

Exerccio 4

Um sistema de mdia mvel um sistema que calcula a mdia dos N ltimos valores
da entrada com o objetivo de suavizar o sinal de sada, ou seja, diminuir suas
variaes.
Ele pode ser expresso por:

(a) Calcule a resposta impulsiva para o sistema mdia mvel com N = 4, ou seja,
para:
(b) Utilizando convoluo,calcule a resposta do sistema entrada x[n]=u[n]u[n 3].
(c) Agora repita o item (b) utilizando o comando conv.
(d) Utilize agora como a entrada uma senide de tempo discreto com perodo N = 15
e definida de 0 a 100 somada a um rudo branco gaussiano com desvio-padro 0,3
(use o comando r = 0.3*randn(1,101)).
Verifique e interprete a sada utilizando o comando conv. (Coloque numa mesma
figura a entrada e a sada. Use subplot).
(e) Como voc poderia melhorar a filtragem do item (d)?

2.4.1 Comentrios
O sinal de sada aps passar pelo filtro Mdia Mvel consegue representar uma
senide muito melhor que o sinal de entrada. Visando melhorar o filtro, pode-se
alterar o nmero de pontos da mdia mvel, mas isto tambm no garante esta
melhora e pode causar atraso no sinal de sada; alternativamente, devemos utilizar
uma operao de correlao deste sinal.
.

12

2.4.2 Resultados - 4a

Figura 5. Resposta impulsiva para o sistema mdia mvel.

2.4.3 Cdigo - 4a
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_4a.m Resposta Impulsiva Mdia Mvel
%-------------------------------------------------------------------------% Limpa a Tela para Inicializao
%-------------------------------------------------------------------------close all;
clear all;
clc;
%-------------------------------------------------------------------------% Declarao das Variveis de Uso Geral
%-------------------------------------------------------------------------n = -1:20;
% Vetor de Amostragem
%-------------------------------------------------------------------------% Gerao do Sinal de Resposta Impulsiva
%-------------------------------------------------------------------------impulse = [zeros(1,10) ones(1,1) zeros(1,11)];
for i=1:5
yn(i)=(1/5)*(impulse(10+i)+impulse(10+i-1)+impulse(10+i-2)
+impulse(10+i-3)+impulse(10+i-4));
end
hn=[yn, zeros(1,(length(n)-length(yn)-1))];
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal hn
stem(0:length(hn)-1, hn);
title('Sinal de Resposta Impulsiva Mdia Mvel');
xlabel('n');
ylabel('h[n]');
axis([-1 20 0 .2])
grid on;

13

2.4.4 Resultados - 4b

Figura 6. Convoluo dos dois sinais sem conv.

2.4.5 Cdigo - 4b
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_4b.m Convoluo sem conv
%-------------------------------------------------------------------------n = -1:20;
% Vetor de Amostragem
%-------------------------------------------------------------------------% Gerao dos Sinais de Resposta ao Impulso e de Entrada
%-------------------------------------------------------------------------impulse = [zeros(1,10) ones(1,1) zeros(1,11)];
for i=1:5
yn(i)=(1/5)*(impulse(10+i)+impulse(10+i-1)+impulse(10+i-2)+impulse(10+i-3)+impulse(10+i-4));
end
hn=[yn, zeros(1,(length(n)-length(yn)-1))];
xn = round(heaviside(n)) - round(heaviside(n - 3));
k = length(hn);
m = length(xn);
xk = [xn, zeros(1, k)];
hk = [hn, zeros(1, m)];
% Efetuando a Convoluo pela soma de impulsos deslocados no tempo
%-------------------------------------------------------------------------for i=1:m+k-1
yn(i)=0;
for j=1:k
if(i-j+1>0)
yn(i)=yn(i)+xk(j)*hk(i-j+1);
else
end
end
end
% Plotar Sinal xn
figure(1);
subplot(2,1,1)
stem(n, xn);
title('Convoluo dos dois sinais sem conv.m');xlabel('n');ylabel('x[n]');
grid on;
% Plotar Sinal yn
subplot(2,1,2)
stem(-1:length(yn)-2, yn);xlabel('n');ylabel('y(n)');
grid on;

14

2.4.6 Resultados - 4c

Figura 7. Convoluo dos dois sinais com conv.

2.4.7 Cdigo - 4c
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_4c.m Convoluo com conv
%-------------------------------------------------------------------------% Gerao dos Sinais de Resposta ao Impulso e de Entrada
%-------------------------------------------------------------------------n = -1:20;
% Vetor de Amostragem
impulse = [zeros(1,10) ones(1,1) zeros(1,11)];
for i=1:5
yn(i)=(1/5)*(impulse(10+i)+impulse(10+i-1)+impulse(10+i-2)+impulse(10+i3)+impulse(10+i-4));
end
hn=[yn, zeros(1,(length(n)-length(yn)-1))];
xn = round(heaviside(n)) - round(heaviside(n - 3));
%-------------------------------------------------------------------------% Efetuando a Convoluo pela funo do MatLab
%-------------------------------------------------------------------------yn = conv(xn, hn);
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal xn
subplot(2,1,1)
stem(n, xn);
title(['Convoluo dos dois sinais com conv.m']);
xlabel('n');
ylabel('x[n]');
grid on;
% Plotar Sinal yn
subplot(2,1,2)
stem(-1:length(yn)-2, yn);
xlabel('n');
ylabel('y(n)');
grid on;

15

2.4.8 Resultados - 4d

Figura 8. Convoluo de sinal rudo Gaussiano.

2.4.9 Cdigo - 4d
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_4d.m Rudo Branco Gaussiano
%-------------------------------------------------------------------------% Declarao das Variveis de Uso Geral
%-------------------------------------------------------------------------N = 15;
% Nmero de pontos da Mdia Mvel
n = -0:100;
% Vetor de Amostragem
%-------------------------------------------------------------------------% Gerao do Sinal Senoidal Discreto e do Rudo Gaussiano
%-------------------------------------------------------------------------fn = sin (2 * pi * n / N);
rn = 0.3 * randn(1, 101);
xn = fn + rn;

16
%-------------------------------------------------------------------------% Gerao do Sinal de Entrada
%-------------------------------------------------------------------------impulse = [zeros(1,10) ones(1,1) zeros(1,11)];
for i=1:5
yn(i)=(1/5)*(impulse(10+i)+impulse(10+i-1)+impulse(10+i-2)+impulse(10+i3)+impulse(10+i-4));
end
hn=[yn, zeros(1,(length(n)-length(yn)-1))];
%-------------------------------------------------------------------------% Efetuando a Convoluo pela funo do MatLab
%-------------------------------------------------------------------------yn = conv(xn, hn);
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal
subplot(3,1,1)
stem(n, fn);
axis([0 100 -2
grid on;
title('Senide
xlabel('n')
ylabel('sin (2

Discreto Sem Rudo


2]);
de Tempo Discreto')
* pi * n / N)');

% Plotar Rudo Branco Gaussiano


subplot(3,1,2)
stem(n, xn);
axis([0 100 -2 2]);
grid on;
title('Rudo Branco Gaussiano')
xlabel('n')
ylabel('0.3 * randn(1, 101)');
% Plotar Sinal yn
subplot(3,1,3)
stem(0:length(yn)-1, yn);
axis([0 100 -2 2]);
grid on;
title(['Convoluo dos dois sinais com conv.m']);
xlabel('n');
ylabel('y(n)');

2.4.10 Resultados - 4e
Uma alternativa para melhorar a filtragem seria aumentar o nmero de pontos da
mdia mvel.

17

2.5

Exerccio 5

O arquivo eletro1.m contm amostras de um eletrocardiograma e podem ser obtidas


no site physionet.org. Estes pontos podem ser carregados para uma varivel x1 no
Matlab estando no diretrio correto e usando o comando >> x1 = load(eletro1.m);
(a) Verifique o tamanho do vetor x1 utilizando o comando whos e faa um grfico.
(b) Obtenha a resposta impulsiva de um filtro mdia mvel do Exerccio 1 para N = 49.
(c) Utilize o comando conv e a resposta impulsiva da letra (b) para obter uma verso
suavizada do sinal visto na letra (a). Usando subplot, obtenha um grfico do sinal
original e de sua verso suavizada na mesma figura. Comente sobre os resultados.
2.5.1 Resultados - 5a

Figura 9. Eletrocardiograma Original.

2.5.2 Cdigo - 5a
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_5a.m Eletrocardiograma
%-------------------------------------------------------------------------x1 = load('eletro1.m');
whos();
figure(1);
plot(x1); grid on;
title('Eletrocardiograma Original')
xlabel('Frequncia'); ylabel('Amplitude');

2.5.3 Comentrios - 5a
Os valores identificados pelo comando whos so:
Name
x1

Size
10000x1

Bytes Class
80000 double

Attributes

18

2.5.4 Resultados - 5b

Figura 10. Resposta impulsiva mdia mvel.

2.5.5 Cdigo - 5b
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_5b.m Eletrocardiograma
%-------------------------------------------------------------------------% Limpa a Tela para Inicializao
%-------------------------------------------------------------------------close all;
clear all;
clc;
%-------------------------------------------------------------------------% Declarao das Variveis de Uso Geral
%-------------------------------------------------------------------------N = 49;
% Nmero de pontos da Mdia Mvel
x1 = load('eletro1.m');
%-------------------------------------------------------------------------% Gerao do Sinal de Resposta Impulsiva
%-------------------------------------------------------------------------hn=[(1/(N+1)) * ones(1,(N+1)) zeros(1,length(x1)-(N+1))];
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal hn
stem(0:length(hn)-1, hn);
title('Sinal de Resposta Impulsiva Mdia Mvel');
xlabel('n');
ylabel('h[n]');
axis([-1 N+2 0 1/(N-1)]);
grid on;

2.5.6 Comentrios - 5b
Resultado do grfico conforme esperado.

19

2.5.7 Resultados - 5c

Figura 11. Resposta impulsiva mdia mvel.

2.5.8 Cdigo - 5c
%-------------------------------------------------------------------------% M-cdigo: LAB_06P_EXE_5c.m Eletrocardiograma
%-------------------------------------------------------------------------% Limpa a Tela para Inicializao
%-------------------------------------------------------------------------close all;
clear all;
clc;
%-------------------------------------------------------------------------% Declarao das Variveis de Uso Geral
%-------------------------------------------------------------------------N = 49;
% Nmero de pontos da Mdia Mvel
x1 = load('eletro1.m');
%-------------------------------------------------------------------------% Gerao do Sinal de Resposta Impulsiva
%-------------------------------------------------------------------------hn=[(1/(N+1)) * ones(1,(N+1)) zeros(1,length(x1)-(N+1))];
%-------------------------------------------------------------------------% Efetuando a Convoluo pela funo do MatLab e Aplicando Filtro
%-------------------------------------------------------------------------yn = conv(x1, hn);
B = ones(1,20)/20;
A = 1;
zn = filter(B, A ,x1);

20
%-------------------------------------------------------------------------% Plotagem do Sinal Gerado
%-------------------------------------------------------------------------figure(1);
% Plotar Sinal yn
subplot(2,1,1)
plot(0:length(yn)-1, yn, 'r');
title('Eletrocardiograma Convoludo');
xlabel('Frequncia')
ylabel('Amplitude');
axis([0 10000 -0.6 0.6]);
grid on;
% Plotar Sinal zn
subplot(2,1,2)
plot(0:length(zn)-1, zn, 'b');
title(['Eletrocardiograma Suavizado']);
xlabel('Frequncia')
ylabel('Amplitude');
axis([0 10000 -0.6 0.6]);
grid on;

2.5.9 Comentrios - 5c
O resultado obtido nos mostra que o filtro de mdia mvel pode se mostrar bem til ao
retirar componentes de frequncias que contaminam um sinal.