Está en la página 1de 9

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

x(n) se extiende entre 0 y Lx - 1

h(n) se extiende entre 0 y Lh - 1.

Lx=48;
equis=sin(pi*(0:Lx-1)/12 + pi/4);
if size(equis) ~= Lx Lx define la longitud que
error('Error: la senhal x(n) esta mal definida') tendrá la entrada del Sistema
end; La función x(n) estará definida
por la siguiente función
Lh=15; %Longitud de h(n) equis=sin(pi*(0:Lx-1)/12 + pi/4)
hache=(7/8).^(0:Lh-1); %h(n)
if size(hache) ~= Lh

Lh=15; %Longitud de h(n)


hache=(7/8).^(0:Lh-1); %h(n) Lh define la longitud que
if size(hache) ~= Lh tendrá la función de
transferencia

La función H(n) estará definida


por la siguiente función

hache=(7/8).^(0:Lh-1)
La cantidad t irá tomando valores desde

infinito hasta infinito, lo que causará que la función haga un recorrido

completo por el eje n, en dicho recorrido se multiplican ambas funciones y se

toma el área bajo el producto, por lo que la convolución valdrá 0 en todos los puntos donde las
funciones no se intersecten Con los resultados obtenidos para cada intervalo, mostrados en las
ecuaciones anteriores puede construirse la función resultante Y(t) = H(t) *X(t):
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).

CUANDO Lx + Lh - 2

Bucle con n=0


N=10

N=20

N=30
N=40

N=42
%******************************************************************
***
%% 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 convolucionar
Lx=48; %Longitud de x(n)
equis=sin(pi*(0:Lx-1)/12 + pi/4); %x(n)
if size(equis) ~= Lx%si la cantidad de elementos del vector equis no es
igual a Lx entonces mostrar error, segun la funcion equis su cantidad es
48 igual que Lx
error('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) ~= Lh%si la cantaidad de elemtnsos del vector hache no es
igual a Lh mostrar error, su cantidad es 15, si es igual
error('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;%vector de -Lh a Lx+Lh el cual tiene 79 elementos
subplot(211)
equisdib=[zeros(1,Lh) equis zeros(1,Lh+1)];
stem(ndib,equisdib);%señal discreta ndib es la independiente vs equisdib,
Dibujo de x(n)
subplot(212)
hachedib=[zeros(1,Lh) hache zeros(1,Lx+1)];%vector de 79 elementos
stem(ndib,hachedib);% grafica de h(n)

title('h(n)');
pause;
% Bucle que realiza la convolucion
for n=0:Lx+Lh-1% ya que n es el parametro de desplazamiento hacemos un
bucle que lleva n de 0 hasta Lx+Lh-1 que es 42
% 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;

También podría gustarte