You are on page 1of 7

UNIVERSIDAD DE CUENCA

FACULTAD DE INGENIERA
ESCUELA DE ELECTRNICA Y TELECOMUNICACIONES

LABORATORIO DE PROCESAMIENTO DIGITAL DE SEALES

PRCTICA N 2

SUMA DE CONVOLUCIN

AUTOR:
Jonathan Mauricio Blandn Segarra

DOCENTE:
Ing. Ismael Minchala vila, Ph.D.

Cuenca Ecuador
Octubre 2016

07 de Octubre de 2016

[SUMA DE CONVOLUCIN]

Algoritmo de la suma de convolucin


Implemente el siguiente cdigo en MATLAB.
k=0:100;
x=5*sin(2*pi*k/50)+2*rand(1, 101);
h=fir1(10, 0.01);

% Muestras
% Seal + ruido
% Filtro, h[k]

Comprobar mediante grficas que la seal de entrada es la de la


figura 1.
Ejecucin en MATLAB:
>>
>>
>>
>>
>>
>>
>>
>>

subplot(2, 1, 1);
stem(x, 'filled');
grid on;
title('x[n]');
subplot(2, 1, 2);
stem(h, 'filled');
grid on;
title('h[n]');

Fig. 1. Seal de ruido (arriba) junto con un filtro FIR (abajo).

Se ha implementado una seal de entrada sinusoidal con ruido mediante la suma de


una seal seno con valores obtenidos basado en el comando rand(), el mismo que
genera datos aleatorios dentro de un rango.

Implementar un algoritmo de clculo de la suma de convolucin,


considerando:

[ ]

[ ]

[ ]

[ ]

Universidad de Cuenca | Electrnica y Telecomunicaciones

[SUMA DE CONVOLUCIN]

07 de Octubre de 2016

INICIO

y=vector de 0s
i=[1, longitud de x]
j=[1, longitud de h]

Si

SI j=longitud
de h
No
y(i+j-1)=y(i+j-1)+x(i)*h(j)
j=j+1

Si

SI i > longitud
de x

No
i=i+1
j=1
y

FIN

En primer lugar se crea un vector y, el cual se rellena con ceros, para


posteriormente modificar sus elementos y formar el vector respuesta, el tamao de
este vector obedece a que para la convolucin se realiza el desplazamiento de un
vector invertido a travs de un vector fijo y en este contexto el ltimo trmino de
la convolucin ser cuando se haya desplazado todo el vector mvil pero an se
mantenga un elemento en comn, por tanto si se suma la longitud de los dos
vectores se tendr el caso de que el vector se desplaz y rebaso el tamao del
vector fijo, entonces se resta una unidad para obtener un trmino en comn.
Lo ms importante que se debe tomar en cuenta es que el ndice del vector y
corresponde a la suma de los ndices de los vectores x y h. Para modificar los
valores del vector y se implementaron dos bucles, el primero sirve para
desplazarnos a travs del vector x y el segundo vector nos permite avanzar a
travs de los elementos del vector h. Para rellenar el vector y se considera que
Universidad de Cuenca | Electrnica y Telecomunicaciones

07 de Octubre de 2016

[SUMA DE CONVOLUCIN]

el elemento es igual a la suma de todos los trminos x(i)*h(j), tales que i+j=r;
entonces se implement:
y(i+j-1)= y(i+j-1)+(x(i)*h(j))

En el caso de y(i+j-1), la razn para restar una unidad es que Matlab implementa
los ndices de los vectores desde 1 hacia adelante, de forma que para el primer
elemento i=1 y j=1, por tanto al sumar i+j nos ubicaramos en la segunda
posicin del vector y, para dar solucin a este problema solo bastan con
disminuir en 1 dicha cantidad, de esta manera se obtiene un desplazamiento desde
el primer al ltimo elemento de y.
Una vez ubicados en determinada posicin del vector y, se toma su valor
actual, en un inicio 0, y se suma el trmino x(i)*h(j) para que con el pasar de las
iteraciones se acumulen los valores correspondientes a cada elemento de y
conforme se analiz previamente.
function [y]=convolution(x,h)
% Generates y[n] = x[n] * h[n]
% x -> input signal
% h -> impulse response
% ----------------------------------------% [y] = convolution(x,h)
%
y=zeros(1, length(x)+length(h)-1);
for i=1:length(x)
for j=1:length(h)
y(i+j-1)= y(i+j-1)+(x(i)*h(j));
end
end
stem(y, 'filled', 'LineWidth', 2);
grid on;
end

Comprobar el resultado de la seal filtrada con el mostrado en la


Figura 1.

Fig. 2. Seal de entrada y seal filtrada mediante convolucin y un FIR.

Universidad de Cuenca | Electrnica y Telecomunicaciones

07 de Octubre de 2016

[SUMA DE CONVOLUCIN]

Conclusiones.
La convolucin de seales en una manera muy general de realizar un promedio
mvil y para nuestro caso, convolucionando una seal ruidosa con un filtro digital
con respuesta de impulso de duracin finita (FIR), obtenemos una seal muy suavizada y
filtrada.

La convolucin se puede implementar como una funcin de manera sencilla


mediante el uso de dos bucles y una sumatoria, sin embargo es mucho ms lenta
en comparacin con la funcin de convolucin propia de MATLAB, esto se
percibe cuando se trabaja con vectores de gran tamao como por ejemplo
muestras de archivos de audio. Para estos casos es preferible vectorizar estos
bucles, de manera que recorra los vectores de una manera ms eficiente.

Respuesta al impulso unitario de un sistema dinmico


Utilizando Simulink, implemente el sistema de la Figura 2.

Fig. 3. Sistema de Simulink.

Obtener la secuencia de ponderacin con un tiempo de muestreo


T=0.2 segundos y usando el algoritmo de la suma de convolucin,
calcule la salida del sistema para una entrada u[n].

Fig. 4. Secuencia de ponderacin con Simulink.

Universidad de Cuenca | Electrnica y Telecomunicaciones

07 de Octubre de 2016

[SUMA DE CONVOLUCIN]

>>h = data(:, 2);


0
0.0546
0.0135

0.1813
0.0447
0.0110

0.1484
0.0366

0.1215
0.0300

0.0995
0.0245

0.0814
0.0201

0.0667
0.0164

>> convolution(unitstep(0, -5, 100), h)


0
0.3297
0.8347
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.2514
0.0245

0
0.4512
0.8647
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.1968
0.0110

0
0.5507
0.8892
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.7689
0.1521

0
0.6321
0.9093
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.6205
0.1155

0
0.6988
0.9257
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.4990
0.0855

0
0.7534
0.9392
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.3995
0.0610

0.1813
0.7981
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.9502
0.3181
0.0409

Analice y comente los resultados. Reporte una grfica con la


secuencia de ponderacin y la respuesta del sistema a u[n].
>>
>>
>>
>>
>>
>>
>>
>>

subplot(2, 2, [1 2]);
convolution(unitstep(0, -5, 100), h);
subplot(2, 2, 3);
unitstep(0, -5, 100);
subplot(2, 2, 4);
stem(h, 'filled');
grid on;
title('h[n]');

Fig. 5. Escaln unitario, respuesta al impulso y convolucin de los mismos.

Universidad de Cuenca | Electrnica y Telecomunicaciones

07 de Octubre de 2016

[SUMA DE CONVOLUCIN]

La respuesta al impulso nos permite conocer la manera en que se comporta una seal
al ingresar en un determinado sistema, por ello para formarnos una idea de la influencia
de escuchar un audio en un determinado lugar nos basta con tener la respuesta al
impulso de dicho lugar y realizar la convolucin con la seal de audio a analizar.
Simulink es una poderosa herramienta que nos permite modelar diversas situaciones
mediante una programacin grfica. Con la misma hemos logrado importar los datos
obtenidos de una respuesta al impulso para poder utilizarlos en la convolucin con un
escaln unitario, la cual se realizado de manera exitosa.
Se puede ver que el escaln convolucionado con la respuesta al impulso no se
estabiliza en 1 y que su secuencia es finita; todo esto debido a la longitud y amplitud de
la secuencia de ponderacin.

Universidad de Cuenca | Electrnica y Telecomunicaciones

You might also like