Convolución Discreta
Convolución Discreta
Convolución Discreta
Universidad de Guanajuato
Señales y Sistemas
(Propedéutico de Maestria)
Procedimiento:
w(1)=x(1)∗h(1)
w(2)=x(1)∗h(2)+x(2)∗h(1)
w(3)=x(1)∗h(3)+x(2)∗h(2)+ x(3)∗h(1)
⋮
w(n)=x(1)∗h(n)+x(2)∗v(n−1)+x(n)∗v(1)
La longitud de y(n) es igual a la longitud de x(n) más la longitud de h(n) menos uno, es
decir:
M N 1 (3)
Donde:
M = longitud de la secuencia x(n)
N = longitud de la secuencia h(n)
m=length(x);
n=length(h);
aux=m+n-1; %longitud de la salida y
y=zeros(1,aux);
for k=1:aux
for j=1:m
if k+1-j<=0
yaux(k)=0;
else
if k+1-j>=length(h)+1
yaux(k)=0;
else
yaux(k)=x(j)*h(k+1-j);
end
end
y(k)=yaux(k)+y(k);
end
end
k=0:aux-1;
stem(k,y)
grid on
xlabel('n')
ylabel('y(n)')
title('Convolucion y(n)=x(n)*h(n)')
Comprobación:
Consideremos una señal x[n] con coeficientes 1, 2, 2, 1, 1, 0 y una señal h[n] con 3,2,1
como coeficientes. Realizando la convolución el código anterior el resultado es el
siguiente:
>> x=[1 2 2 1 1 0];
>> h=[3 2 1];
>> convolucion(x,h)
>> y
y =
3 8 11 9 7 3 1 0 0
ans =
3 8 11 9 7 3 1 0 0
Como los coeficientes son los mismos podemos concluir que el código anterior es
correcto. La grafica de la convolución de las secuencias anteriores se muestra en la
Figura 1.
Convolucion y(n)=x(n)*h(n)
12
10
8
y(n)
0
0 1 2 3 4 5 6 7
n
Como ejercicio hicimos la lectura de una señal ECG mezclada con ruido y después se
convolucionó con los coeficientes de un filtro notch. La respuesta del filtro Notch en el
dominio Z, viene dada por la ecuación 4:
Y ( z ) (1 z 1 z 2 ) X ( z ) (4)
H ( z ) 1 z 1 z 2 Z 1 H ( z ) Z 1 1 z 1 z 2
h[n] [n] [n 1] [n 2] (5)
Y realizando varias pruebas el valor óptimo de β para el cual la señal x[n] es filtrada es
β=0.6. EL programa realizado para hacer este filtrado es el siguiente:
clc;
clear all;
close all;
X=wavread('ecg3plushum.wav');
t = [0: length(X)];
Hn = 1*(t==0) - 0.61*(t==1) + 1*(t==2);
t = [0: length(X)];
Hn = 1*(t==0) - 0.60*(t==1) + 1*(t==2);
Yn=convolucion(X,Hn);
figure;plot(X)
title('Señal ECG con ruido')
grid on
figure;plot(Yn)
grid on
title('Señal ECG filtrada')
axis([0 900 min(Yn) max(Yn)])
Los resultados obtenidos se muestran en las gráficas de la figura 2 y 3, las cuales
muestran las señal sin filtrar y la señal limpia de ruido respectivamente.
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
0 100 200 300 400 500 600 700 800 900
0.6
0.4
0.2
-0.2
-0.4
Bibliografía:
“Fundamentals of digital Signal Processing”
Lonnie C. Ludeman