LAB 3 PROCESAMIENTO DIGITAL DE SEÑALES.docx

Post on 15-Jan-2016

214 views 0 download

description

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

Transcript of 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

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

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

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;

% 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.

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

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)')

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)');

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.

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)')

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

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 ¼.

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;

% 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;

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;

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')

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;

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;

% 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;

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)

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)');

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;

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;

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');

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.

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);

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)];

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;

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)');

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;

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)

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

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)

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):

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]

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)

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;

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

% 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;

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');

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;

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;

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:

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)

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

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)];

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

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

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

% 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;