58
UNIVERSIDAD NACIONAL DE SAN AGUSTÍN FACULTAD DE PRODUCCIÓN Y SERVICIOS ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES SEMESTRE: IV CURSO: PROCESAMIENTO DIGITAL DE SEÑALES PROFESOR: ING. JUAN CARLOS CUADROS MACHUCA TEMA: TERCER LABORATOTIO – CONVOLUCIÓN ESTUDIANTES: FECHA: 13/12/2013

LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

Embed Size (px)

DESCRIPTION

LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES CONVOLUCIÓN ING TELECOMUNICACIONES

Citation preview

Page 1: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

UNIVERSIDAD NACIONAL DE SAN AGUSTÍN

FACULTAD DE PRODUCCIÓN Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERÍA EN TELECOMUNICACIONES

SEMESTRE: IV

CURSO: PROCESAMIENTO DIGITAL DE SEÑALES

PROFESOR: ING. JUAN CARLOS CUADROS MACHUCA

TEMA: TERCER LABORATOTIO – CONVOLUCIÓN

ESTUDIANTES:

FECHA: 13/12/2013

Page 2: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

PRÁCTICA 3: CONVOLUCION

I. OBJETIVOS

Familiarización con la secuencia de pasos que permite calcular gráficamente la convolución de dos señales discretas de duración finita.

II. MATERIALES Y/O EQUIPOS A UTILIZAR

PC MATLAB Toolbox de DSP

III. DESARROLLO DE LA PRÁCTICA CONVOLUCION:

1. Analice detenidamente el programa y explique cómo funciona y qué hace.Por razones de simplicidad, se ha supuesto que las dos señales comienzan en cero y que Lx y Lh son la duración de x(n) y h(n) respectivamente. Por consiguiente, en el programa se supone que x(n) se extiende entre 0 y Lx-1 y que h(n) se extiende entre 0 y Lh-1.

El programa calcula la convolución entre dos señales de duración finita, el proceso se da paso a paso visualizando los resultados intermedios.Primero se definen las dos señales a convolucionar y la longitud de las mismas. El paso que sigue es dibujar ambas señales. Luego hay un bucle que realiza la convolución paso por paso mostrándonos figuras en el proceso. Al final obtenemos y(n) con su respectiva gráfica.

%Laboratorio de PDS-EPIT%Práctica 3 ----> CONVOLUCIÓN%Fecha: 13/12/2013%Apellidos y nombres: Banda Sayco Oswaldo René% Huanqui Soria Wilson%-----------------------%Solución PROGRAMA DE CONVOLUCIÓNclear all;% Definicion de las señales a convolucionarLx=48; %Longitud de x(n)equis=sin(pi*(0:Lx-1)/12 + pi/4); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=15; %Longitud de h(n)hache=(7/8).^(0:Lh-1); %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señales

Page 3: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

ndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib);title('x(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib);title('h(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek);title('x(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk);title('h(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk);title('x(k)h(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)]);title('y(n)')xlabel('n')grid;pause;end;

2. Demuestre que con las suposiciones anteriores sobre las duraciones de x(n) y h(n) la señal y(n)=x(n)*h(n) comienza en 0 y acaba en Lx+Lh-2 (su duración, por tanto, es Lx+Lh-1).

x(n) = [1 2 1 1] duración de x(n) = 4h(n) = [1 -1 1] duración de h(n) = 3

Page 4: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

h(n) = 1 -1 1x(n) = 1 2 1 1

_____________________________________________

1 -1 12 -2 2

1 -1 11 -1 1

______________________________________________

y(n) = 1 1 0 2 0 1 duración de y(n) = 6

3. Escriba en un fichero el programa convolucion.m que aparece al final del enunciado. Utilice la instrucción help para consultar el funcionamiento y la sintaxis de aquellas funciones de MATLAB que no conozca. Haga la convolución entre las dos siguientes señales:x(n) = [1 2 1 1]h(n) = [1 -1 1]

%Laboratorio de PDS-EPIT%Práctica 3 ----> CONVOLUCIÓN%Fecha: 13/12/2013%Apellidos y nombres: Banda Sayco Oswaldo René% Huanqui Soria Wilson%-----------------------%Solución ejercicio_3 clear all;% Definicion de las señales a convolucionarLx=4; %Longitud de x(n)equis=[1 2 1 1]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=3; %Longitud de h(n)hache=[1 -1 1]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('h(n)');pause;

Page 5: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('h(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x(k)h(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Primero nos sale el dibujo de la señal x(n) junto con el dibujo de la señal h(n) que introducimos.

Page 6: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

Luego de eso nos salen cuatro dibujos en la misma Figure1. En la primera columna se observa el dibujo de la señal x(k). Debajo de esta se observa el dibujo de la señal h(n-k), h(n-k) se obtiene reflejando h(k) sobre el eje k alrededor del punto k=0 para construir h(-k) y después desplazándola |n| muestras a la izquierda si n es negativo o n muestras a la derecha si n es positivo.En la segunda columna observamos primero el producto de x(k) y h(n - k), conforme se va desplazando h(n-k). La figura de abajo a la derecha nos muestra la sumatoria de convolución.

4. Considere las siguientes señales:x1(n) = [1 4 2 3 5 3 3 4 5 7 6 9]x2(n) = [1 1]x3(n) = [1 2 1]x4(n) = [ ½ ½]x5(n) = [ ½ ¼ ½]x6(n) = [ ¼ -½ ¼]x7(n) = [ ½ -½]

Modifique el programa del apartado anterior para efectuar las siguientes convoluciones y observe los resultados obtenidos

Page 7: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

a. x1(n) * x2(n)

%Solución ejercicio_4_a clear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=2; %Longitud de h(n)hache=[1 1]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x2(n)');pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x2(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x2(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')

Page 8: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

xlabel('n')grid;pause;end;

b. x1(n)*x4(n). Compare con el apartado anterior y vea que es lo mismo pero multiplicado por ½.

Esta relación se puede expresar así: x1(n)*x4(n) = (1/2)[x1(n)*x2(n)]

%Solución ejercicio_4_bclear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=2; %Longitud de h(n)hache=[0.5 0.5]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x4(n)');

Page 9: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x4(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x4(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

c. x1(n) * x7(n). Compare con el apartado anterior.

Page 10: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

La convolución 4_c se relaciona con la convolución 4_b de la siguiente manera:

x1(n)*x7(n) = x1(n)*x4(n) – x1(n-1)

%Solución ejercicio_4_cclear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=2; %Longitud de h(n)hache=[0.5 -0.5]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x7(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x7(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x7(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')

Page 11: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

xlabel('n')grid;pause;end;

d. x1(n) * x3(n)

%Solución ejercicio_4_dclear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=3; %Longitud de h(n)hache=[1 2 1]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x3(n)');pause;% Bucle que realiza la convolucion

Page 12: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

for n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x3(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x3(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

e. x1(n) * x5(n). Compare con el apartado anterior y vea que es lo mismo pero multiplicado por ¼.

Page 13: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

En realidad no es lo mismo multiplicado ¼ las convoluciones varían porque las señales x3(n) y x5(n) no son proporcionales. Esto se puede observar en los gráficos.

La relación sería la siguiente: x1(n)*x5(n) = (1/2)[x1(n)*x3(n)] – (3/4)x1(n-1)

%Solución ejercicio_4_e clear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=3; %Longitud de h(n)hache=[0.5 0.25 0.5]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x5(n)');pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x5(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x5(n-k)')xlabel('k')grid;

Page 14: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

f. x1(n) * x6(n). Compare con el apartado anterior.

Podemos comparar ambas señales de la siguiente manera:

x1(n)*x6(n) = (1/2)[x1(n)*x5(n)] – (5/8)x1(n-1)

%Solución ejercicio_4_fclear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=3; %Longitud de h(n)hache=[0.25 -0.5 0.25]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;

Page 15: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x6(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x6(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x6(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 16: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

5. Ahora considere estas señales:

x8(n) = u(n) - u(n - 5)x9(n) = u(n) - u(n - 10)

Vuelva a modificar el programa anterior para efectuar las siguientes convoluciones y observe los resultados obtenidos.

a. x8(n) * x8(n)

Se observa la convolución de una señal finita entre sí misma. La sumatoria de convolución tiene una forma triangular. La duración de la señal de convolución es igual al doble de la duración de x8(n), menos uno.

%Solución ejercicio_5_a clear all;% Definicion de las señales a convolucionarLx=5; %Longitud de x(n)equis=[ones(1,5)]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=5; %Longitud de h(n)hache=[ones(1,5)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')

Page 17: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x8(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x8(n)');pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x8(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x8(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x8(k)x8(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 18: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

b. x9(n) * x9(n)

Convolución de dos señales idénticas finitas. La respuesta tiene forma triangular como en el caso anterior. La duración de la señal de convolución es igual al doble de la duración de x9(n), menos uno.

%Solución ejercicio_5_bclear all;% Definicion de las señales a convolucionarLx=10; %Longitud de x(n)equis=[ones(1,10)]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=10; %Longitud de h(n)hache=[ones(1,10)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x9(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x9(n)');pause;

Page 19: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x9(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x9(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x9(k)x9(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 20: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

c. x8(n) * x9(n)

Convolución de dos señales finitas. La respuesta tiene forma geométrica como en los casos anteriores. La duración de la señal de convolución es igual a:

Duración de y(n) = Duración de x8(n) + Duración de x9(n) - 1

%Solución ejercicio_5_cclear all;% Definicion de las señales a convolucionarLx=5; %Longitud de x(n)equis=[ones(1,5)]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=10; %Longitud de h(n)hache=[ones(1,10)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x8(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x9(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x8(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x9(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x8(k)x9(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)

Page 21: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

d. x8(n) * x9(n - 3). Compare con el apartado anterior y vea que es lo mismo pero desplazado 3 unidades.

La señal x8(n)*x9(n - 3) es igual a x8(n)*x9(n) retrasada 3 unidades.

Esta convolución mantiene la duración hallada en el apartado anterior.

%Solución ejercicio_5_d clear all;% Definicion de las señales a convolucionarLx=5; %Longitud de x(n)equis=[ones(1,5)]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=13; %Longitud de h(n)hache=[zeros(1,3) ones(1,10)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x8(n)');

Page 22: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x9(n-3)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x8(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x9(n-3-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x8(k)x9(n-3-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 23: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

e. x8(n - 2) * x9(n - 4). Compare con los dos apartados anteriores y vea que es lo mismo pero el resultado esta desplazado.

La señal x8(n - 2) * x9(n - 4) es igual a x8(n)*x9(n) con un retraso de 6 unidades. La duración de la convolución se mantiene igual que en los apartados anteriores.

%Solución ejercicio_5_eclear all;% Definicion de las señales a convolucionarLx=7; %Longitud de x(n)equis=[zeros(1,2) ones(1,5)]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=14; %Longitud de h(n)hache=[zeros(1,4) ones(1,10)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x8(n-2)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x9(n-4)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x8(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x9(n-4-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x8(k)x9(n-4-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 24: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

f. x11(n) * x8(n)

%Solución ejercicio_5_f clear all;% Definicion de las señales a convolucionarLx=36; %Longitud de x(n)equis=sin(pi*(0:Lx-1)/12 + pi/4); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=5; %Longitud de h(n)hache=[ones(1,5)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x11(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x8(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');

Page 25: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

title('x11(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x8(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x11(k)x8(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

g. x11(n) * x9(n). Compare con el apartado anterior y vea que es lo mismo pero el resultado esta desplazado.

Page 26: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

En realidad la señal de convolución no se ha desplazado, más bien se observa que la amplitud de la señal sinusoidal ha aumentado al igual que su periodo. Sin embargo también se observa que la duración de la señal de convolución ha cambiado y en este caso es mayor que en el apartado anterior.

%Solución ejercicio_5_g clear all;% Definicion de las señales a convolucionarLx=36; %Longitud de x(n)equis=sin(pi*(0:Lx-1)/12 + pi/4); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=10; %Longitud de h(n)hache=[ones(1,10)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x11(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x9(n)');pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x11(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x9(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x11(k)x9(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);

Page 27: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

h. x11(n) * x10(n). Compare con los dos apartados anteriores.

Observamos que la convolución produce una señal que aparentemente es sinusoidal, pero en los últimos pulsos pierde esa forma debido a la sumatoria de x11(k)x10(n-k). La duración de esta convolución es mayor que en los apartados anteriores.

%Solución ejercicio_5_h clear all;% Definicion de las señales a convolucionarLx=36; %Longitud de x(n)equis=sin(pi*(0:Lx-1)/12 + pi/4); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=15; %Longitud de h(n)hache=(7/8).^(0:Lh-1); %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];

Page 28: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

stem(ndib,equisdib,'fill');title('x11(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x10(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x11(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x10(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x11(k)x10(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 29: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

i. x10(n) * x9(n)

Se puede decir que:

Duración de x10(n) + Duración de x9(n) – 1 = Duración de y(n)15 + 10 – 1 = 24 Duración de y(n) =

24

Nuestra señal de convolución y(n) se extiende desde n=0 hasta n=23

%Solución ejercicio_5_i clear all;% Definicion de las señales a convolucionarLx=15; %Longitud de x(n)equis=(7/8).^(0:Lx-1); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=10; %Longitud de h(n)hache=[ones(1,10)]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x10(n)');

Page 30: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x9(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x10(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x9(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x10(k)x9(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Page 31: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

j. x10(n) * x10(n)

Se observa la convolución de dos señales idénticas. La convolución que obtenemos en este caso no tiene una forma simétrica. La señal de convolución se extiende desde n=0 hasta n=28

%Solución ejercicio_5_jclear all;% Definicion de las señales a convolucionarLx=15; %Longitud de x(n)equis=(7/8).^(0:Lx-1); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=15; %Longitud de h(n)hache=(7/8).^(0:Lh-1); %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x10(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x10(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x10(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x10(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x10(k)x10(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)

Page 32: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

6. La convolución tiene las siguientes propiedades:

Conmutativa: x(n) * h(n) = h(n) * x(n) Distributiva: x(n) * [h1(n) + h2(n)] = x(n) * h1(n) + x(n) * h2(n) Asociativa: [x(n) * h1(n)] * h2(n) = x(n) * [h1(n) * h2(n)]

Verifique que estas propiedades se cumplen efectuando las convoluciones de los dos lados de las siguientes igualdades:

a. x1(n) * x2(n) = x2(n) * x1(n)

%Solución ejercicio_6_a

clear all;% Definicion de las señales a convolucionarLx=12; %Longitud de x(n)equis=[1 4 2 3 5 3 3 4 5 7 6 9]; %x(n)if size(equis) ~= Lx

Page 33: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

error('Error: la senhal x(n) esta mal definida')end;Lh=2; %Longitud de h(n)hache=[1 1]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;figure(1); % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x1(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x2(n)');pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x1(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x2(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x1(k)x2(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end; clear all;% Definicion de las señales a convolucionarLx=2; %Longitud de x(n)equis=[1 1]; %x(n)

Page 34: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=12; %Longitud de h(n)hache=[1 4 2 3 5 3 3 4 5 7 6 9]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;figure(2); % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x2(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x1(n)');pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x2(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x1(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x2(k)x1(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Primero se halla x1(n) * x2(n):

Page 35: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

Luego, automáticamente el programa hace lo mismo para x2(n) * x1(n). Seguimos presionando enter para obtener las dos convoluciones en figuras diferentes.

Se observa que ambas convoluciones son idénticas, entonces se demuestra la propiedad conmutativa de la convolución.

b. x3(n) * [x1(n) + x2(n)] = x3(n) * x1(n) + x3(n) * x2(n)

Sabemos que: x1(n) = [1 4 2 3 5 3 3 4 5 7 6 9] x2(n) = [1 1]

Page 36: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

x3(n) = [1 2 1]

Comenzando por el primer miembro: x3(n) * [x1(n) + x2(n)]:

x1(n) + x2(n) = [2 5 2 3 5 3 3 4 5 7 6 9]

1. Se procede a hallar x3(n) * [x1(n) + x2(n)]:

%Solución ejercicio_6_b_1 clear all;% Definicion de las señales a convolucionarLx=3; %Longitud de x(n)equis=[1 2 1]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=12; %Longitud de h(n)hache=[2 5 2 3 5 3 3 4 5 7 6 9]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end; % Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');grid;title('x3(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x1(n)+x2(n)');grid;pause; % Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x3(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x1(n-k)+x2(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)

Page 37: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

stem(ndib,xdek.*hdenmenosk,'fill');title('x3(k)(x1(n-k)+x2(n-k))')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end; figure(2);yden(n+1)=sum(xdek.*hdenmenosk);stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('x3(n) * [x1(n) + x2(n)]')xlabel('n')grid;

Page 38: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

2. Se procede a hallar x3(n) * x1(n) + x3(n) * x2(n):

Hay que encontrar x3(n) * x1(n):

%Solución ejercicio_6_b_2 clear all;% Definicion de las señales a convolucionarLx=3; %Longitud de x(n)equis=[1 2 1]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=12; %Longitud de h(n)hache=[1 4 2 3 5 3 3 4 5 7 6 9]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');grid;title('x3(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x1(n)');grid;pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1

Page 39: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x3(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x1(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x3(k)x1(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;figure(3);yden(n+1)=sum(xdek.*hdenmenosk);stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('x3(n) * x1(n)')xlabel('n')grid;

Page 40: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

x3(n) * x1(n) = [1 6 11 11 13 16 14 13 16 21 25 28 24 9]

Hallando x3(n) * x2(n):

%Solución ejercicio_6_b_3clear all;% Definicion de las señales a convolucionarLx=3; %Longitud de x(n)equis=[1 2 1]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=2; %Longitud de h(n)hache=[1 1]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');

Page 41: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

grid;title('x3(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('x2(n)');grid;pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x3(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('x2(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x3(k)x2(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;figure(3);yden(n+1)=sum(xdek.*hdenmenosk);stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('x3(n) * x2(n)')xlabel('n')grid;

Page 42: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

x3(n) * x2(n) = [ 1 3 3 1 ]Sumamos las convoluciones halladas:

%Solución ejercicio_6_b_4clear all;n=-3:16;x1n=[zeros(1,3) 1 6 11 11 13 16 14 13 16 21 25 28 24 9 zeros(1,3)];x2n=[zeros(1,3) 1 3 3 1 zeros(1,13)];xn=x1n+x2n;

Page 43: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

figure(5);stem(n,xn,'fill');grid on;title('x3(n)*x1(n) + x3(n)*x2(n)');xlabel('n');

x3(n)*x1(n) + x3(n)*x2(n) = [ 2 9 14 12 13 16 14 13 16 21 25 28 24 9 ]

Este resultado es igual al obtenido en el primer miembro:

Page 44: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

La propiedad distributiva ha sido demostrada.

c. [x1(n) * x2(n)] * x3(n) = x2(n) * [x1(n) * x3(n)]

4_a * x3(n) = x2(n) * 4_d

x1(n) = [1, 4, 2, 3, 5, 3, 3, 4, 5, 7, 6, 9]x2(n) = [1, 1]x3(n) = [1, 2, 1]Del ejercicio _4_a: x1(n) * x2(n) = [1, 5, 6, 5, 8, 8, 6, 7, 9, 12, 13, 15, 9]Del ejercicio_4_b: x1(n) * x3(n) = [1, 6, 11, 11, 13, 16, 14, 13, 16, 21, 25, 28, 24, 9]

Resolviendo el primer miembro: [x1(n) * x2(n)] * x3(n)

%Solución ejercicio_6_c_1

clear all;% Definicion de las señales a convolucionarLx=13; %Longitud de x(n)equis=[1 5 6 5 8 8 6 7 9 12 13 15 9]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=3; %Longitud de h(n)hache=[1 2 1]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;

% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('h(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek,'fill');title('x(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)

Page 45: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('h(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x(k)h(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;

Convolución del primer miembro

Page 46: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

Resolviendo el segundo miembro: x2(n) * [x1(n) * x3(n)]

%Solución ejercicio_6_c_2clear all;% Definicion de las señales a convolucionarLx=2; %Longitud de x(n)equis=[1 1]; %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;Lh=14; %Longitud de h(n)hache=[1 6 11 11 13 16 14 13 16 21 25 28 24 9]; %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib,'fill');title('x(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib,'fill');title('h(n)');pause;% Bucle que realiza la convolucionfor n=0:Lx+Lh-1% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];

Page 47: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

subplot(221)stem(ndib,xdek,'fill');title('x(k)')xlabel('k')grid;% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk,'fill');title('h(n-k)')xlabel('k')grid;% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk,'fill');title('x(k)h(n-k)')xlabel('k')grid;% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;pause;end;figure(5);stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)],'fill');title('y(n)')xlabel('n')grid;

Convolución del Segundo Miembro

Page 48: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

La propiedad asociativa ha sido demostrada

IV. CONCLUSIONES Y OBSERVACIONES:

La operación de convolución puede establecerse sobre un código en Matlab, haciendo posible su modificación para diversas señales a convolucionar.

En el programa convolución.m se debe establecer la duración de cada señal ingresada, de lo contrario nos muestra un mensaje de error.

Es posible visualizar cada paso en el proceso de convolución mediante un bucle diseñado para tal fin.

Con el uso de Matlab es posible comparar mejor y de manera rápida las relaciones entre diversas convoluciones.

Con el programa convolución.m es posible demostrar las propiedades de la convolución, sólo basta ingresar las señales y verificar los resultados.

V. BIBLIOGRAFÍA O REFERENCIAS UTILIZADAS EN EL DESARROLLO DE LA PRÁCTICA

Page 49: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

A. Ambardar - Procesamiento de Señales Analógicas y DigitalesAlan V. Oppenheim & Alan S. Willsky – Señales y Sistemas

VI. ANEXO

Programa convolucion.m

%*********************************************************************%% Nombre: convolucion.m%% Objetivo: calcula la convolución de dos señales paso% a paso visualizando los resultados intermedios%%%*********************************************************************

clear all;% Definicion de las señales a convolucionarLx=48; %Longitud de x(n)equis=sin(pi*(0:Lx-1)/12 + pi/4); %x(n)if size(equis) ~= Lxerror('Error: la senhal x(n) esta mal definida')end;

Lh=15; %Longitud de h(n)hache=(7/8).^(0:Lh-1); %h(n)if size(hache) ~= Lherror('Error: la senhal h(n) esta mal definida')end;

% Dibujo de x(n) y h(n). Se añaden Lh ceros antes y despues% para visualizar mejor las señalesndib=-Lh:Lx+Lh;subplot(211)equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];stem(ndib,equisdib);title('x(n)');subplot(212)hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];stem(ndib,hachedib);title('h(n)');pause;

% Bucle que realiza la convolucionfor n=0:Lx+Lh-1

Page 50: LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

% Construccion y dibujo de x(k)xdek=[zeros(1,Lh) equis zeros(1,Lh+1)];subplot(221)stem(ndib,xdek);title('x(k)')xlabel('k')grid;

% Construccion y dibujo de h(n-k)hdenmenosk=[zeros(1,n+1) hache(Lh:-1:1) zeros(1,Lx+Lh-n)];subplot(223)stem(ndib,hdenmenosk);title('h(n-k)')xlabel('k')grid;

% Dibujo de x(k)h(n-k)subplot(222)stem(ndib,xdek.*hdenmenosk);title('x(k)h(n-k)')xlabel('k')grid;

% Obtencion y dibujo de y(n)yden(n+1)=sum(xdek.*hdenmenosk);subplot(224)stem(-1:Lx+Lh,[0 yden zeros(1,Lx+Lh-n)]);title('y(n)')xlabel('n')grid;pause;end;