FACULTAD DE LA ENERGÍA, LAS
INDUSTRIAS Y LOS RECURSOS NATURALES
NO RENOVABLES
Ingeniería en Telecomunicaciones
PROCESAMIENTO
DIGITAL DE
SEÑALES
Deber #1
Ciclo : IV
Paralelo : “A”
Docente : Ing. Diego Orellana.
Nombre : Kevin Pinta
LOJA - ECUADOR
2020 -2021
Problema 2.1
%Generar las siguientes secuencias usando las funciones básicas y operaciones básicas
%para señales de Matlab. Grafíquelas usando la función stem.
1) x1(n) = 3*delta(n + 2) + 2*delta(n) - delta(n - 3) + 5*delta(n - 7), -5 <= n <= 15.
n1 = -5:15; %Se establece el limite de evaluación de la señal
x1 = 3*impseq(-2,-5,15) + 2*impseq(0,-5,15) - impseq(3,-5,15)+ 5*impseq(7,-5,15); %Se
plantea la señal
%Graficamos la señal colocando limites en las graficas
stem(n1,x1,'filled','b','MarkerSize',2);
title('Señal 1');
xlabel('n1');ylabel('x1[n]');
axis([min(n1),max(n1),min(x1)-1,max(x1)+1]);
2) x2(n) = sigma(-5:5)[e^-k.*delta(n-2k)], -10 <= n <=10.
n2 = -10:10; % Limite de la Señal
x2 = zeros(1,length(n2)); %Se crea una matiz de ceros con dimension igual al limite de n
% Se realiza la sumatoria de la ecuacion con el fin de obtener la señal
% deseada
for k = -5:5
x2 = x2 + exp(-abs(k))*impseq(2*k ,-10,10);
end
%Se grafica la señal con parametros delimitados acontinuación
figure(2);
stem(n2,x2,'filled','r','MarkerSize',2);
title('Señal 2');
xlabel('n2'); ylabel('x2[n]');
axis([min(n2)-1,max(n2)+1,min(x2)-0.5,max(x2)+0.5]);
3) x3(n) = 10u(n) - 5u(n - 5) + 10u(n - 10) + 5u(n - 15).
n3 = 0:15; %Se establece el limite de la señal
x3 = 10*stepseq(0,0,15) - 5*stepseq(5,0,15) - 10*stepseq(10,0,15) + 5*stepseq(15,0,15);
% Se presenta la señal a graficar
%Graficamos la señal con los siguientes parametros
figure(3);
stem(n3,x3,'filled','k','MarkerSize',2);
title('Señal 3');
xlabel('n3'); ylabel('x3[n]');
axis([min(n3),max(n3),min(x3)-1,max(x3)+1]);
4) x4(n) = e ^ {0.1n} [u(n + 20) - u(n - 10)].
n4 = -20:10; % Establecemos el limite de la señal
x4 = exp(0.1*n4).*(stepseq(-20,-20,10) - stepseq(10,-20,10)); %Se determina la señal a
graficar
%Se grafica la señal con los diferentes parametros
figure(4);
stem(n4,x4,'filled','c','MarkerSize',2);
title('Señal 4l');
xlabel('n4'); ylabel('x4[n]');
axis([min(n4)-1,max(n4)+1,min(x4)-1,max(x4)+1]);
5) x5(n) = 5[cos(0.49*pi*n) + cos(0.51*pi*n)], -200 <= n <= 200.
n5 = -200:200; % Establecemos el limite de la señal
x5 = 5*(cos(0.49*pi*n5) + cos(0.51*pi*n5)); %Determinamos la señal la señal a graficar
%Graficamos la señal con los respectivos parametros
figure(5);
stem(n5,x5,'filled','r','MarkerSize',2);
title('Señal 5');
xlabel('n5'); ylabel('x5[n]');
axis([min(n5)-20,max(n5)+20,min(x5)-3,max(x5)+3]);
6) x6(n) = 2 sin(0.01*pi*n) cos(0.5*pi*n), -200 <= n <= 200.
n6 = -200:200; %Establecemos el limite de la señal
x6 = 2*sin(0.01*pi*n6).*cos(0.5*pi*n6); %Determinar la señal a graficar
%Grficamos la señal con los siguientes parametros
figure(6);
stem(n6,x6,'filled','y','MarkerSize',2);
title('Señal 6');
xlabel('n6'); ylabel('x6[n]');
axis([min(n6)-20,max(n6)+20,min(x6)-1,max(x6)+1]);
7) x7(n) = e ^ {-0.05*n}*sin(0.1*pi*n + pi/3), 0 <= n <=100.
n7 = 0:100;
x7 = exp(-0.05*n7).*sin(0.1*pi*n7 + pi/3);
figure(7);
stem(n7,x7,'filled','m','MarkerSize',2);
title('Señal 7');
xlabel('n7'); ylabel('x7[n]');
axis([min(n7)-5,max(n7)+5,min(x7)-0.5,max(x7)+0.5]);
8) x8(n) = e ^ {0.01*n}*sin(0.1*pi*n), 0 <= n <=100.
n8 = 0:100; % Establecemos el limite de la señal
x8 = exp(0.01*n8).*sin(0.1*pi*n8); %Determinamos la señal a graficar
%Graficamos la señal con los siguientes parametros
figure(8);
stem(n8,x8,'filled','g','MarkerSize',2);
title('Señal 8');
xlabel('n8'); ylabel('x8[n]');
axis([min(n7)-5,max(n7)+5,min(x7)-2,max(x7)+2]);
Problema 2.2
%Generar las siguientes secuencias aleatorias y obtener un histograma
%usando la función hist con 100 [Link] la función bar para graficarlos.
1) x1(n) es una secuncia aleatoria cuyas muestras están distribuidas
independiente y uniformemente en el intervalo [0,2]. Generar 100.000 muestras.
%x1(n) = uniform[0,2]
n1 = 0:100000-1; %Establecer el número de muestras de la señal
x1 = 2*rand(1,100000); %Generar una señal aleatoria
%Graficar el histograma
[x1out,n1out] = hist(x1,100); bar(n1out, x1out,'b');
title('Histograma 1');
xlabel('n1'); ylabel('# de muestras');
axis([-0.1 2.1 0 1200]);
2) x2(n) es una secuencia aleatoria gaussiana cuyas muestras son
independientes con media 10 y varianza 10. Generar 10.000 muestras.
%x2(n) = gaussian{10,10}
n2 = 1:10000; %Establecer el numero de muestras de la señal
x2 = 10 + sqrt(10)*randn(1,10000); %Generar la señal
figure(2);
[x2out,n2out] = hist(x2,100); bar(n2out, x2out, 'm');
title('Histograma 2');
xlabel('n2'); ylabel('# de muestras');
3) x3(n) = x1(n) + x1(n - 1) donde x1(n) es la secuencia aleatoria dada
en la parte 1 anterior.
%x3(n) = x1(n) + x1(n - 1) donde x1(n) = uniform[0,2]
n1 = 0:100000-1; %Establecer el numero de muestras de la señal
x1 = 2*rand(1,100000);
figure(3);
[x31,n31] = sigshift(x1,n1,1); %Realizar un corrimiento de 1
[x3,n3] = sigadd(x1,n1,x31,n31); %Realizar una suma de señales
%Graficar la señal establecida
figure(3);
[x3out,n3out] = hist(x3,100);
bar(n3out,x3out,'c');
axis([-0.5 4.5 0 2500]);
title('Histograma 3');
xlabel('n3'); ylabel('# de muestras');
4) x4(n) = sigma(1:4)yk(n) donde cada secuencia aleatoria yk(n) es independiente
de otras con muestras distribuidas uniformemente en el intervalo [-0.5, 0.5].
%Establecer 4 señales randomicas
y1 = rand(1,100000) - 0.5; y2 = rand(1,100000) - 0.5;
y3 = rand(1,100000) - 0.5; y4 = rand(1,100000) - 0.5;
%sumar las señales randomicas
x4 = y1 + y2 + y3 + y4;
%Graficar las señales
figure(4);
[x4out,n4out] = hist(x4,100); bar(n4out,x4out,'g');
title('Histograma 4');
xlabel('n4'); ylabel('# de muestras');
Problema 2.3
%Generar las siguientes secuencias periódicas y graficar sus muestras (use
%la función stem) sobre el número de periodos indicado.
1) x~(n) = {...,-2,1,0,1,2,...}; 5 periodos.
n1 = -12:12; %Establecer el limite de sus muestras
x1 = [-2,-1,0,1,2]; %Crear un vector de 5 espacios
x1 = x1'*ones(1,5); %Rellenar el vector con unos
x1 = (x1(:))';
%Graficar la secuencia 1
figure(1);
stem(n1,x1,'filled','b','MarkerSize',2);
title('Secuencia 1]');
xlabel('n');ylabel('x1[n]');
axis([min(n1)-1,max(n1)+1,min(x1)-1,max(x1)+1]);
2) x~2(n) = e ^ {0.1n} {u(n) - u(n-20)}; 3 periodos.
n2 = 0:21; % Establcer los limite de la secuencia 2
x2 = exp(0.1*n2).*(stepseq(0,0,21)-stepseq(20,0,21)); %Establecer la secuencia 2
x2 = x2'*ones(1,3);%Rellenar la secuencia con unos
x2 = (x2(:))'; n2 = -22:43;
%Graficar la secuencia 2
figure(2);
stem(n2,x2,'filled','m','MarkerSize',2);
title('Secuencia 2');
xlabel('n');ylabel('x2[n]');
axis([min(n2)-2,max(n2)+2,min(x2)-1,max(x2)+1]);
3) x3(n) = sin(0.1*pi*n)[u(n) - u(n - 10)]; 4 periodos.
n3 = 0:10; %Establecer los limites de la señal
x3 = sin(0.1*pi*n3).*(stepseq(0,0,10)-stepseq(10,0,10)); %Establecer la secuencia de la
señal 3
x3 = x3'*ones(1,4); %Llenar el vector con unos
x3 = (x3(:))';
n3 = 0:43;
figure(3);
stem(n3,x3,'filled','b','MarkerSize',2); title('Secuencia 3');
xlabel('n');ylabel('x_3[n]');
axis([min(n3),max(n3),min(x3)-0.5,max(x3)+0.5]);
4) x4(n) = {...,1,2,3,...}periodica + {...,1,2,3,4,...}periodica; 0 <= n <= 24;
%Su periodo es de 12.
n4 = 0:24; %Establecer los limites de la señal
x4a = [1,2,3]; %crear un vector de 3 espacios
x4a = x4a'*ones(1,9); %Multiplicar el vector con unos
x4a = (x4a(:))';
x4b = [1 2 3 4]; %Crear un vector de 4 posciones
x4b = x4b'*ones(1,7); %Multiplicar cada poscicion con un vector de unos
x4b = (x4b(:))'; x4 = x4a(1:25) + x4b(1:25);
figure(4);
stem(n4,x4,'filled','m','MarkerSize',2); title('Secuencia 4');
xlabel('n');ylabel('x4[n]');
axis([min(n4),max(n4),min(x4)-2,max(x4)+2]);
Problema 2.4
%Dado x(n) = {2, 4, -3, 1, -5, 4, 7}. Genere y grafique las muestras
%(use la función stem) de las siguientes secuencias.
1) x1(n) = 2x(n ? 3) + 3x(n + 4) ? x(n)
%x(n) = [2,4,-3,1,-5,4,7]; -3 <=n <= 3;
n = -3:3; x = [2,4,-3,1,-5,4,7];
[x11,n11] = sigshift(x,n,3); % Desplazado en 3
[x12,n12] = sigshift(x,n,-4); % Desplazado en -4
[x13,n13] = sigadd(2*x11,n11,3*x12,n12); % Suma dos secuencias
[x1,n1] = sigadd(x13,n13,-x,n); % Suma dos secuencias
figure(1);
stem(n1,x1,'filled','g','MarkerSize',2);
title('Secuencia x1[n]');
xlabel('n');ylabel('x1[n]');
axis([min(n1)-1,max(n1)+1,min(x1)-1,max(x1)+1]);
2) x2(n) = 4x(4 + n) + 5x(n + 5) + 2x(n)
[x21,n21] = sigshift(x,n,-4); % Desplazado en -4
[x22,n22] = sigshift(x,n,-5); % Desplazado en -5
[x23,n23] = sigadd(4*x21,n21,5*x22,n22); % Suma dos secuencias
[x2,n2] = sigadd(x23,n23,2*x,n); % Suma dos secuencias
figure(2);
stem(n2,x2,'filled','c','MarkerSize',2); title('Secuencia x2[n]');
xlabel('n');ylabel('x2[n]');
axis([min(n2)-1,max(n2)+1,min(x2)-5,max(x2)+5]);
3) x3 (n) = x(n + 3)x(n - 2) + x(1 - n)x(n + 1)
[x31,n31] = sigshift(x,n,-3); % Desplazado en -3
[x32,n32] = sigshift(x,n,2); % Desplazado en 2
[x33,n33] = sigmult(x31,n31,x32,n32); % Multiplica dos secuencias
[x34,n34] = sigfold(x,n); % Invierte x(n)
[x34,n34] = sigshift(x34,n34,1); % Desplaza x(-n) por 1
[x35,n35] = sigshift(x,n,-1); % Desplaza x(n) por -1
[x36,n36] = sigmult(x34,n34,x35,n35); % Multiplica dos secuencias
[x3,n3] = sigadd(x33,n33,x36,n36); % Suma dos secuencias
figure(3);
stem(n3,x3,'filled','k','MarkerSize',2); title('Secuencia x3[n]');
xlabel('n');ylabel('x3[n]');
axis([min(n3)-1,max(n3)+1,min(x3)-5,max(x3)+5]);
4) x4 (n) = 2e^(0.5n).*x(n) + cos(0.1*pi*n) x (n + 2), -10 ? n ? 10
n4 = -10:10; %Establecer los limites de la señal
x41 = 2*exp(0.5*n4); x412 = cos(0.1*pi*n4); % Establecer la señal a graficar
[x42,n42] = sigmult(x41,n4,x,n); %Multiplica la señal x(n) por una exponencial
[x43,n43] = sigshift(x,n,-2);%realiza un desplazamiento a la señal x(n) de +2
[x44,n44] = sigmult(x412,n42,x43,n43); %Multiplica la señal coseno con x(n-2)
[x4,n4] = sigadd(x42,n42,x44,n44);%Suma las señales antes multiplicadas
figure(4);
stem(n4,x4,'filled','y','MarkerSize',2); title('Secuencia x4[n]');
xlabel('n');ylabel('x4[n]');
axis([min(n4)+2,max(n4)-2,min(x4)-5,max(x4)+5]);
Problema 5
%La secuencia exponencial compleja ejw0n o la secuencia sinusoidal cos (w0n)
%son periódicas si la frecuencia fundamental f0= wo/2*pi es un número racional;
%esto es f0 = K/N , donde K y N son enteros.
1) Pruebe el resultado analíticamente.
%De forma analítica, la secuencia exponencial es periódica si:
%(e^(j2*pi)(f_o)(n) = e^(j2*pi)(f_o)(n+N)
%Se sabe que: e^(j2*pi)(f_o)(n+N) = (e^(j2*pi)(f_o)(n))*(e^(j2*pi)(f_o)(N))
%De esta descomposición, se llega a que (e^(j2*pi)(f_o)(N) = 1 para que la
%peridiocidad se cumpla.
%Es decir, se cumple la condición de que (f_o)(N) = K, son enteros.
2) Genere exp(j0.1*pi*n), -100 <= n <= 100. Grafique su parte real e imaginaria
usando la función stem.
%¿La secuencia es periódica? Si es el caso, ¿cuál es el periodo fundamental?
%Del análisis de la gráfica, qué interpretación puede dar sobre los enteros K y N.;
n1 = -100:100; %Establecer el limite de la señal
x1 = exp(0.1*1i*pi*n1); %Determina la señal x1
%Graficar la señal
subplot(2,1,1);
stem(n1,real(x1),'filled');
title('Parte Real x1[n]');
xlabel('n');ylabel('real(x1[n])');
axis([min(n1)-5,max(n1)+5,min(real(x1))-1,max(real(x1))+1]);
subplot(2,1,2);
stem(n1,imag(x1),'r','filled');
title('Parte Imaginaria x1[n]');
xlabel('n');ylabel('Imaginaria(x1[n])');
axis([min(n1)-5,max(n1)+5,min(real(x1))-1,max(real(x1))+1]);
3) Genere y grafique cos(0.1n), -20 <= n <= 20. ¿Es esta secuencia periódica?
¿Qué concluyes de la gráfica?
n2 = -20:20; %Establecer el limite de la señal
x2 = cos(0.1*n2); %Describir la señal resultante
figure(2);
stem(n2,x2,'m','filled');
title('Secuencia x2[n]');
xlabel('n');ylabel('real(x2[n])');
axis([min(n2)-1,max(n2)+1,min(x2)-1,max(x2)+1]);
Problema 2.6
%Usando la función par-impar,descomponga la secuencia en sus partes par e impar.
%Grafíque los componentes usando la función stem.
1) x1(n) = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
n1 = 0:9; %Determinar los limites de la señal
x1 = [0 1 2 3 4 5 6 7 8 9]; %Crear un vector de 10 posiciones
[xe1,xo1,m1] = evenodd(x1,n1); %Utilizar la funcion, para encontrar la parte par e impar
subplot(2,1,1);
stem(m1,xe1,'r','filled','markersize',2);
axis([min(m1)-1,max(m1)+1,min(xe1)-1,max(xe1)+1]);
title('Parte Par de x1[n]');
xlabel('n'); ylabel('xe[n]');
subplot(2,1,2);
stem(m1,xo1,'filled','markersize',2);
axis([min(m1)-1,max(m1)+1,min(xo1)-2,max(xo1)+2]);
title('Parte Impar de x1[n]');
xlabel('n'); ylabel('xo[n]');
2) x2(n) = e^(0.1n)[u(n + 5) ? u(n ? 10)]
n2 = -6:10; %Determinar el limite de la señal
x2 = exp(0.1*n2).*(stepseq(-5,-6,10) - stepseq(10,-6,10)); %Determinar la señal a
graficar
[xe2,xo2,m2] = evenodd(x2,n2);%Encontrar la parte par e impar de la señal
%Graficar las señales
figure(2);
subplot(2,1,1);
stem(m2,xe2,'r','filled','markersize',2);
axis([min(m2)-1,max(m2)+1,min(xe2)-1,max(xe2)+1]);
title('Parte Par x2[n]');
xlabel('n'); ylabel('xe[n]');
subplot(2,1,2);
stem(m2,xo2,'b','filled','markersize',2);
axis([min(m2)-1,max(m2)+1,min(xo2)-1,max(xo2)+1]);
title('Parte Impar x2[n]');
xlabel('n'); ylabel('xo[n]');
3) x3(n) = cos(0.2?n + ?/4), ?20 ? n ? 20
n3 = -20:20; %Determinar el limite de la señal
x3 = cos(0.2*pi*n3 + pi/4); %Determinar la señal a graficar
[xe3,xo3,m3] = evenodd(x3,n3); %Obtener la parte par e impar de la señal
%Graficar la parte par e impar de la señal
figure(3);
subplot(2,1,1);
stem(m3,xe3,'g','filled','markersize',2);
axis([min(m3)-1,max(m3)+1,min(xe3)-1,max(xe3)+1]);
title('Parte Par de x3[n]');
xlabel('n'); ylabel('xe[n]');
subplot(2,1,2);
stem(m3,xo3,'m','filled','markersize',2);
axis([min(m3)-1,max(m3)+1,min(xo3)-1,max(xo3)+1]);
title('Parte Impar de x3[n]');
xlabel('n'); ylabel('xo[n]');
4) x4(n) = e^(?0.05n)*sin(0.1?n + ?/3), 0 ? n ? 100
n4 = 0:100; %Determinar los limites de la señal
x4 = exp(-0.05*n4).*sin(0.1*pi*n4 + pi/3); %Determinar la señal x4
[xe4,xo4,m4] = evenodd(x4,n4); %Encontrar la parte par e impar de la señal
%Graficar la parte par e impar de la señal
figure(4);
subplot(2,1,1);
stem(m4,xe4,'k','filled','markersize',2);
axis([min(m4)-1,max(m4)+1,min(xe4)-1,max(xe4)+1]);
title('Parte Par de x4[n]');
xlabel('n'); ylabel('x_e[n]');
subplot(2,1,2);
stem(m4,xo4,'m','filled','markersize',2);
axis([min(m4)-1,max(m4)+1,min(xo4)-1,max(xo4)+1]);
title('Parte Impar x4[n]');
xlabel('n'); ylabel('xo[n]');
Problema 2.7
%Una secuencia compleja xe(n) es conjugada simétrica si xe(n) = x?e(?n),
%y una secuencia compleja xo(n) es conjugada antisimétrica si xo(n) = ?x?o(?n).
%Una secuencia compleja arbitraria x(n) puede descomponerse en x(n) = xe(n) + xo(n),
%donde xe(n) and xo(n) se dan por:
%xe(n) = 1/2 [x(n) + x?(?n)] and xo(n) = 1/2 [x(n) ? x?(?n)]
1) Modifique la función par-impar vista en el texto de manera que
acepte una secuencia arbitraria y la descomponga en su conjugada simétrica y
asimétrica.
%function [xe, xo, m] = evenodd_c(x,n)
% Real signal decomposition into even and odd parts
% -------------------------------------------------
% [xe, xo, neo] = evenodd_c(x,n)
%
%[xc,nc] = sigfold(conj(x),n);
%[xe,m] = sigadd(0.5*x,n,0.5*xc,nc);
%[xo,m]=sigadd(0.5*x,n,-0.5*xc,nc);
%%2) x(n) = 10 exp([?0.1 + ?0.2?]n), 0 ? n ? 10
n = [0:10];
x = 10*exp((-0.1+j*0.2*pi)*n);
[xe,xo,neo] = evenodd_c(x,n);
Re_xe = real(xe); Im_xe = imag(xe); Re_xo = real(xo);
Im_xo = imag(xo);
subplot(2,2,1); Hs = stem(neo,Re_xe); set(Hs,'markersize',2);
title(['Parte real de ' char(10) 'una secuencia uniforme x_e(n)']);
xlabel('n'); ylabel('Im[x_e(n)]')
axis([min(neo)-1,max(neo)+1,-5,12]);
ytick = [-[Link]; set(gca,'YTick',ytick);
subplot(2,2,3); Hs = stem(neo,Im_xe); set(Hs,'markersize',2);
title(['Parte imaginaria de' char(10) 'una secuencia par x_e(n)']);
xlabel('n'); ylabel('Re[x_e(n)]')
axis([min(neo)-1,max(neo)+1,-5,5]);
ytick = [-[Link]; set(gca,'YTick',ytick);
subplot(2,2,2); Hs = stem(neo,Re_xo); set(Hs,'markersize',2);
title(['Parte real de' char(10) 'una secuencia impar x_o(n)']);
xlabel('n'); ylabel('Re[x_o(n)]')
axis([min(neo)-1,max(neo)+1,-5,+5]);
ytick =[-[Link]; set(gca,'YTick',ytick);
subplot(2,2,4); Hs = stem(neo,Im_xo); set(Hs,'markersize',2);
title(['Parte imaginaria de' char(10) 'una secuencia impar x_o(n)']);
xlabel('n'); ylabel('Re[x_o(n)]')
axis([min(neo)-1,max(neo)+1,-5,5]);
ytick = [-[Link]; set(gca,'YTick',ytick);
Problema 8
%La operación de dilatación de señal está dada por: y[n] = x[nM], donde la
%secuencia x[n] muestreada descendentemente por un factor entero M. Por ejemplo:
% x[n] = {..., -2, 4, 3, -6, 5, -1, 8, ...}
%Entonces la secuencia muestreada desdencente por un factor está dada por:
% y[n] = {..., -2, 3, 5, 8, ...}
1) Desarrolle una función de MATLAB dnsample con la forma:
function [y,m] = dnsample(x,n,M) Downsample sequence x(n) by a factor M to obtain y(m)
2) Genere x (n) = sin (0.125*n), - 50 <= n <= 50. Diezme x (n) por un factor
de 4 para generar y (m). Grafique tanto x (n) como y (n) usando subplot.
n1 = -50:50; %Limite de la señal
x1 = sin(0.125*pi*n1); %Generar la señal a graficar
[y1,m1] = dnsample(x1,n1,4); %Utilizar la funcion dnsample
%Graficar la señal
subplot(2,1,1);
stem(n1,x1,'g','Filled','MarkerSize',2);
title('Secuencia x_1[n]');
xlabel('n'); ylabel('x_1[n]');
subplot(2,1,2);
stem(m1,y1,'r','Filled','MarkerSize',2);
title('Secuencia y_1[n]');
xlabel('n'); ylabel('y[n]');
3) Repita lo anterior usando x (n) = sin (0.5*pi*n), - 50 <= n <= 50.
Analice cualitativamente el efecto de muestreo descendente en señales.
%En las gráficas se puede analizar que la señal original muestra una
%frecuencia y periodos definidos.
%La señal diezmada pierde su periodo, pues se presenta con un valor
%constante de cero, se pierde por completo la secuencia original.
n2 = -50:50; %Establecer el limite de la señal
x2 = sin(0.5*pi*n2); %Determinar la señal a graficar
[y2,m2] = dnsample(x2,n2,4); %Utilizar la funcion de dnsample
figure(2);
subplot(2,1,1);
stem(n2,x2,'k','Filled','MarkerSize',2);
title('Secuencia x_2[n]');
xlabel('n'); ylabel('x_2[n]');
subplot(2,1,2);
stem(m2,y2,'r','Filled','MarkerSize',2);
axis([min(m2)-1,max(m2)+1,min(y2)-1,max(y2)+1]);
title('Secuencia y_2[n]');
xlabel('n'); ylabel('y_2[n]');
Problema 2.9
%Usando la función conv_m, determine la secuencia rxx() de autocorrelación y
%la secuencia rxy() de cross-correlación para las siguientes secuencias.
% x(n) = (0.9)^n , 0 <= n <= 20; y(n) = (0.8)^-n, -20 <= n <=0
1) Autocorrelación rxx() para la secuencia x(n):
nx = 0:20; %Establecer el limite de la funcion
x = 0.9 .^ nx; %Establecer la funcion a graficar
[mx,mnx] = sigfold(x,nx); %Realizar una inverion en el tiempo de la funcion
[rxx,nrxx] = conv_m(x,nx,mx,mnx); %Realizar la convolucion de la señal
figure(1);
stem(nrxx,rxx,'filled','c','MarkerSize',3); title('Autocorrelación de x[n]');
xlabel('n');ylabel('r_x_x[n]');
2) Cross-correlación rxy() para las secuencias x(n) y y(n):
nx = 0:20;%Establecer el limite de la funcion
x = 0.9 .^ nx; %Establecer la funcion a graficar
ny = -20:0;
y = 0.8 .^ ny;
[my,mny] = sigfold(y,ny);%Realizar una inverion en el tiempo de la funcion
[rxy,nrxy] = conv_m(x,nx,my,mny);%Realizar la convolucion de la señal
figure(2);
stem(nrxy,rxy,'filled','g','MarkerSize',3); title('Cross-correlación de x[n] y y[n]');
xlabel('n');ylabel('r_x_y[n]');
Problema 2.10
%En una sala de conciertos, se generan ecos de la señal de audio original x[n]
%debido al reflejo de las paredes y el techo. La señal de audio que llega
%al oyente es y[n], que es una combinación de x[n] y sus ecos.
%Dado: y[n] = x[n] + alpha*x[n-k], donde k es la cantidad de retraso en las
%muestras y alpha su fuerza relativa. Queremos estimar el retraso correcto usando un
%análisis de correlación.
1) Determine analíticamente la crros-correlation ryx(l) en términos de la
autocorrelación rxx(l).
2) Dado: x[n] = cos(0.2*pi*n) + 0.5.*cos(0.6*pi*n), alpha = 0.1, k = 50. Genere
200 muestras de y[n] y determine su cross-correlación. ¿Puede obtener alpha y
k
por observación de ryx(l)?
nx = 0:200; alpha = 0.1; k = 50; %Determinar las muestras de la señal y generar el
contenido de alpha
x = cos(0.2*pi*nx) + 0.5*cos(0.6*pi*nx); %Establecer la señal a graficar
[x1,nx1] = sigshift(x,nx,k); %Realizar el corrimiento de la señal en -50
[y,ny] = sigadd(x,nx,alpha*x1,nx1); %Realizar la suma de las 2 señales
x1 = randn(1,length(y)); nx1 = ny; %Generar una secuencia randomica
[y,ny] = sigadd(y,ny,x1,nx1);%Realizar una suma de las 2 señales
[x,nx] = sigfold(x,nx); %Realizar la inversion en el tiempo de la señal
[rxy,nxy] = conv_m(y,ny,x,nx); %Obtener la convolucion de la señal
%Graficar la señal
stem(nxy,rxy,'filled','r','Markersize',2);
axis([min(nxy),max(nxy),min(rxy),max(rxy)]);
xlabel('n');ylabel('r_x_y'); title('Cross-correlación r_x_y');
Ejercicio 2.11
- Considere los siguientes sistemas de tiempo discreto:
1. T1[x(n)]= x(n)u(n)
2. T2[x(n)]= x(n) + nx(n + 1)
1 1
3. T3[x(n)]= x(n) + x(n − 2) − x(n − 3)x(2n)
2 3
4. T4[x(n)]=∑𝑛+5
𝑘= −∞ 2x(k)
5. T5[x(n)]= x(2n)
6. T6[x(n)]= round[x(n)]
donde round [·] denota redondeo al entero más cercano.
L[a1x1(n) + a2x2(n)] = a1L[x1(n)] + a2L[x2(n)], ∀a1, a2, x1(n), x2(n) (2.10)
a) Utilice (2.10) para determinar analíticamente si estos sistemas son lineales.
b) Sea x1 (n) una secuencia aleatoria distribuida uniformemente entre [0, 1] sobre 0 ≤ n
≤ 100, y sea x2 (n) una secuencia aleatoria gaussiana con media 0 y varianza 10
sobre 0 ≤ n ≤ 100. Usando estas secuencias, verifique la linealidad de estos sistemas.
Elija cualquier valor para las constantes a1 y a2 en (2.10). Debe utilizar varias
realizaciones de las secuencias anteriores para llegar a sus respuestas.
1. T1[x(n)]= x(n)u(n)
T1[a1x1(n) + a2x2(n)] = {a1x1(n) + a2x2(n)}u(n)
= a1x1(n)u(n) + a2x2(n)u(n)
= a1T1[x1(n)] + a2T1[x2(n)]
El sistema es Lineal
En el editor de Matlab
%Demostrar que el sistema T1[x(n)] = x(n)u(n) es lineal
n = 0:100;
x1 = rand(1,length(n)); %Generar secuencia aleatoria
x2 = sqrt(10)*randn(1,length(n)); %Generar secuencia aleatoria Gaussiana
u = stepseq(0,0,100); %Generar el escalón unitario
%Realizar la respectiva comprobación si el sistema es lineal
y1 = x1.*u; y2 = x2.*u; y = (x1 + x2).*u;
diff = sum(abs(y - (y1 + y2)));
if (diff < 1e-5)
disp(' *** El Sistema es Lineal *** ');
else
disp('*** El sistema no es Lineal *** ');
end
Command Window
>> P_11
*** El sistema es Lineal ***
2. T2[x(n)]= x(n) + nx(n + 1)
T2[a1x1(n) + a2x2(n)] = {a1x1(n) + a2x2(n)} + n {a1x1(n + 1) + a2x2(n + 1)}
= a1{x1(n) + n x1(n + 1)} + a2{x2(n) + n x2(n + 1)}
= a1T2[x1(n)] + a2T2[x2(n)]
El Sistema es Lineal
En el Editor de Matlab
% Comprobar si el sistema T2[x(n)] = x(n) + n*x(n+1) es lineal
n = 0:100; x1 = rand(1,length(n));
x2 = sqrt(10)*randn(1,length(n));
z = n; [x11,nx11] = sigshift(x1,n,-1);
[x111,nx111] = sigmult(z,n,x11,nx11);
[y1,ny1] = sigadd(x1,n,x111,nx111);
[x21,nx21] = sigshift(x2,n,-1);
[x211,nx211] = sigmult(z,n,x21,nx21);
[y2,ny2] = sigadd(x2,n,x211,nx211);
xs = x1 + x2; [xs1,nxs1] = sigshift(xs,n,-1);
[xs11,nxs11] = sigmult(z,n,xs1,nxs1); [y,ny] =
sigadd(xs,n,xs11,nxs11);
diff = sum(abs(y - (y1 + y2)));
if (diff < 1e-5)
disp(' *** El sistema es Lineal *** ');
else
disp(' *** El sistema es no Lineal *** ');
end
Command Window
>> P_11_2
*** El sistema es Lineal ***
1 1
3. T3[x(n)]= x(n) + 2x(n − 2) − 3x(n − 3)x(2n)
1
T3[a1x1(n) + a2x2(n)] = a1x1(n) + a2x2(n) + 2 {a1x1(n − 2) + a2x2(n − 2)}
1
− − 3 {a1x1(n − 3) + a2x2(n − 3)} {a1x1(2n) + a2x2(2n)}
1 1
= a1x1(n) +2x1(n − 2) – 3
a1x1(n − 3)x1(2n) + a2x2(n)
1 1 1
+ 2x2(n − 2) – 3
a2x2(n − 3)x2(2n) + 3
{a1x1(n − 3)a2x2(2n)
+ a2x2(n − 3)a1x1(2n)}
El sistema no es Lineal
En el editor de Matlab
% COmprobar que el sistema T3[x(n)] = x(n) + 1/2*x(n - 2)-1/3*x(n-
3)*x(2n) es lineal
n = [0:100]; x1 = rand(1,length(n));
x2 = sqrt(10)*randn(1,length(n));
[x11,nx11] = sigshift(x1,n,2);
x11 = 1/2*x11; [x12,nx12] = sigshift(x1,n,3);
x12 = -1/3*x12; [x13,nx13] = dnsample(x1,n,2);
[x14,nx14] = sigmult(x12,nx12,x13,nx13);
[x15,nx15] = sigadd(x11,nx11,x14,nx14);
[y1,ny1] = sigadd(x1,n,x15,nx15); [x21,nx21] = sigshift(x2,n,2);
x21 = 1/2*x21; [x22,nx22] = sigshift(x2,n,3);
x22 = -1/3*x22; [x23,nx23] = dnsample(x2,n,2);
[x24,nx24] = sigmult(x22,nx22,x23,nx23);
[x25,nx25] = sigadd(x21,nx21,x24,nx24);
[y2,ny2] = sigadd(x2,n,x25,nx25);
xs = x1 + x2; [xs1,nxs1] = sigshift(xs,n,2);
xs1 = 1/2*xs1; [xs2,nxs2] = sigshift(xs,n,3); xs2 = -1/3*xs2;
[xs3,nxs3] = dnsample(xs,n,2); [xs4,nxs4] = sigmult(xs2,nxs2,xs3,nxs3);
[xs5,nxs5] = sigadd(xs1,nxs1,xs4,nxs4);
[y,ny] = sigadd(xs,n,xs5,nxs5); diff = sum(abs(y - (y1 + y2)));
if (diff < 1e-5)
disp('*** El Sistema es Lineal *** ');
else
disp(' *** El Sistema es no Lineal *** ');
end
Command Window
>> *** El Sistema no es Lineal ***
4. T4[x(n)]=∑𝑛+5
𝑘= −∞ 2x(k)
T4[a1x1(n) + a2x2(n)] = ∑𝑛+5
𝑘= ∞ 2{a1x1(k) + a2x2(k)}
=𝑎1 ∑𝑛+5 𝑛+5
𝑘= ∞ 2x1(k) + a2 ∑𝑘= ∞ 2x2(k)
= a1T4[x1(n)] + a2T4[x2(n)]
El sistema es Lineal
En el editor de Matlab
% Demostrar si el sistema T4[x(n)] = sum_{k=-infinity}^{n+5}2*x(k) es
% lineal
clear; clc; close all;
n = [0:100]; x1 = rand(1,length(n)); x2 = sqrt(10)*randn(1,length(n));
y1 = cumsum(x1); ny1 = n - 5; y2 = cumsum(x2); ny2 = n - 5; xs = x1 +
x2;
y = cumsum(xs); ny = n - 5; diff = sum(abs(y - (y1 + y2)));
if (diff < 1e-5)
disp(' *** El Sistema es Lineal *** ');
else
disp(' *** El sistema no es Lineal *** ');
end
Command Windows
*** El Sistema es Lineal ***
>>
5. T5[x(n)]= x(2n)
T5[a1x1(n) + a2x2(n)] = a1x1(2n) + a2x2(2n)
= a1T5[x1(n)] + a2T5[x2(n)]
El sistema es Lineal
Editor de Matlab
% Demostrar que el sistema T5[x(n)] = x(2n) is lineal
n = 0:100; x1 = rand(1,length(n));
x2 = sqrt(10)*randn(1,length(n));
[y1,ny1] = dnsample(x1,n,2);
[y2,ny2] = dnsample(x2,n,2); xs = x1 + x2;
[y,ny] = dnsample(xs,n,2); diff = sum(abs(y - (y1 + y2)));
if (diff < 1e-5)
disp(' *** El sistema es Lineal *** ');
else
disp(' *** El sistema no es Lineal *** ');
end
Command Window
>> *** El sistema es Lineal ***
6. T6[x(n)]= round[x(n)]
T6[a1x1(n) + a2x2(n)] = round[a1x1(n) + a2x2(n)] 6
= a1 round[x1(n)] + a2 round[x2(n)]
El Sistema es no Lineal
Editor de Matlab
% Demostrar que el sistema T6[x(n)] = round(x(n)) es lineal
n = 0:100; x1 = rand(1,length(n)); x2 = sqrt(10)*randn(1,length(n));
y1 = round(x1); y2 = round(x2); xs = x1 + x2;
y = round(xs); diff = sum(abs(y - (y1 + y2)));
if (diff < 1e-5)
disp(' *** El sistema es Lineal *** ');
else
disp(' *** El sistema no es Lineal *** ');
end
Command Window
>> *** El sistema no es Lineal ***
Problema 2.12
%Considere los sistemas discretos del problema 2.11
1) Use 2.12 para determinar cuáles de ellos son sistemas LTI.
2) Dado x[n] una secuencia gaussiana aleatoria con media 0 y varianza 10,
sobre el intervalo 0 <= n <= 100. Usando esta secuencia verifique la propiedad
de invarianza en el tiempo de los sistemas. Use k en (2.12).
%1) Sistema 1.
%T1[x(n ? k)] = x(n ? k)u(n) 6= x(n ? k)u(n ? k) = y(n ? k)
n = 0:100; %Establecer los limites de la señal
x = sqrt(10)*randn(1,length(n)); %Establecer la señal x
u = stepseq(0,0,100); %Establecer la señal u
y = x.*u;
[y1,ny1] = sigshift(y,n,1); [x1,nx1] = sigshift(x,n,1); %Realizar el desplazamiento de -
1
[y2,ny2] = sigmult(x1,nx1,u,n); %Realizar la multiplicación de las señales
[diff,ndiff] = sigadd(y1,ny1,-y2,ny2);
diff = sum(abs(diff));
if (diff < 1e-5)
disp(' << El sistema 1 es invariante en el tiempo >> ');
else
disp(' << El sistema 1 no es invariante en el tiempo >> ');
end
%2) Sistema 2.
%T2[x(n - k)] = x(n - k) + n x(n - k + 1) 6= x(n - k) + (n - k) x(n - k + 1) = y(n - k)
n = 0:100; %Determinar los limites de la señal
x = sqrt(10)*randn(1,length(n)); %Establecer una señal
z = n; [x1,nx1] = sigshift(x,n,-1);%Establecer un corrimiento de la señal
[x11,nx11] = sigmult(z,n,x1,nx1); %realizar una multiplicacion de señales
[y,ny] = sigadd(x,n,x11,nx11); %Realizar la suma de señales
[y1,ny1] = sigshift(y,ny ,1); [xs,nxs] = sigshift(x,n,1);%Realiza un cormiento en el
tiempo
[xs1,nxs1] = sigshift(xs,nxs,-1); [xs11,nxs11] = sigmult(z,n,xs1,nxs1);
[y2,ny2] = sigadd(xs,nxs,xs11,nxs11); [diff,ndiff] = sigadd(y1,ny1,-y2,ny2);
diff = sum(abs(diff));
if (diff < 1e-5)
disp(' << El sistema 2 es invariante en el tiempo >> ');
else
disp(' << El sistema 2 no es invariante en el tiempo >> ');
end
%3) Sistema 3.
%T3[x(n - k)] = x(n - k) + 1/2x(n - k - 2) - 1/3x(n - k - 3)x(2n - k)6
%= x(n - k) + 1/2x(n - k - 2) ?1/3x(n - k - 3)x(2n - 2k) = y(n - k)
n = 0:100; x = sqrt(10)*randn(1,length(n)); [x1,nx1] = sigshift(x,n,2);
x1 = 1/2*x1; [x2,nx2] = sigshift(x,n,3); x2 = -1/3*x2;
[x3,nx3] = dnsample(x,n,2); [x4,nx4] = sigmult(x2,nx2,x3,nx3);
[x5,nx5] = sigadd(x1,nx1,x4,nx4); [y,ny] = sigadd(x,n,x5,nx5);
[y1,ny1] = sigshift(y,ny,1); [xs,nxs] = sigshift(x,n,1);
[xs1,nxs1] = sigshift(xs,nxs,2); xs1 = 1/2*xs1;
[xs2,nxs2] = sigshift(xs,nxs,3); xs2 = -1/3*xs2;
[xs3,nxs3] = dnsample(xs,nxs,2); [xs4,nxs4] = sigmult(xs2,nxs2,xs3,nxs3);
[xs5,nxs5] = sigadd(xs1,nxs1,xs4,nxs4); [y2,ny2] = sigadd(xs,nxs,xs5,nxs5);
[diff,ndiff] = sigadd(y1,ny1,-y2,ny2); diff = sum(abs(diff));
if (diff < 1e-5)
disp(' << El sistema 3 es invariante en el tiempo >> ');
else
disp(' << El sistema 3 no es invariante en el tiempo >> ');
end
%4) Sistema 4.
%T4[x(n ? l)] = sigma(- infinito, n+5)2x(k-l) =
%sigma(-infinito, n+5)2x(k) = y(n-l)
n = 0:100; x = sqrt(10)*randn(1,length(n)); y = cumsum(x); ny = n - 5;
[y1,ny1] = sigshift(y,ny,-1); [xs,nxs] = sigshift(x,n,-1); y2 = cumsum(xs);
ny2 = nxs - 5; [diff,ndiff] = sigadd(y1,ny1,-y2,ny2); diff = sum(abs(diff));
if (diff < 1e-5)
disp(' << El sistema 4 es invariante en el tiempo >> ');
else
disp(' << El sistema 4 no es invariante en el tiempo >> ');
end
%5) Sistema 5.
%T5[x(n - k)] = x(2n - k) 6= x[2(n - k)] = y(n - k)
n = 0:100; x = sqrt(10)*randn(1,length(n)); [y,ny] = dnsample(x,n,2);
[y1,ny1] = sigshift(y,ny,1); [xs,nxs] = sigshift(x,n,1);
[y2,ny2] = dnsample(xs,nxs,2); [diff,ndiff] = sigadd(y1,ny1,-y2,ny2);
diff = sum(abs(diff));
if (diff < 1e-5)
disp(' << El sistema 5 es invariante en el tiempo >> ');
else
disp(' << El sistema 5 no es invariante en el tiempo >> ');
end
%6) Sistema 6.
%T6[x(n - k)] = round[x(n - k)] = y(n - k)
n = 0:100; x = sqrt(10)*randn(1,length(n)); y = round(x); ny = n;
[y1,ny1] = sigshift(y,ny,1); [xs,nxs] = sigshift(x,n,1); y2 = round(xs);
ny2 = nxs; [diff,ndiff] = sigadd(y1,ny1,-y2,ny2); diff = sum(abs(diff));
if (diff < 1e-5)
disp(' << El sistema 6 es invariante en el tiempo >> ');
else
disp(' << El sistema 6 no es invariante en el tiempo >> ');
end
<< El sistema 1 no es invariante en el tiempo >>
<< El sistema 2 no es invariante en el tiempo >>
<< El sistema 3 no es invariante en el tiempo >>
<< El sistema 4 es invariante en el tiempo >>
<< El sistema 5 no es invariante en el tiempo >>
<< El sistema 6 es invariante en el tiempo >>
ergdo
CNa los Sifemas d problemo 2,4, delesmine onali h omente
Su estabilidad CCwSeau dad.
T ITCx(n Xn) un
Este sise ma es desde y (nll x o A la vez
estosie gue
Se COnsideia dado que N0 depend e de ualoes
qUe es Cwsa
uturo, solo cePe sen te s
T2xn] Xnl n x (n)
tste istemo es inestosle aue
ly(nll xnl+nx (nte xtnl<
E S5 Fema etasali do y (n
depende no
3 T xn)1 xo) xn-2)
Este sistema 3 es tosle po Cndidondnfee
Iy (n) e ixtn)+ x (n-21| x (n -3 )|x (2n| <
Ixtn)
Adena3 Cndo() de pende
X 2) vaees
A Ta [x(n)
E SS tema es inesto Sle dado osiuiene
n+5
YCo x («)]
de pen de
lombien Sec0sideia qoe noeS Cawsa a que
Ualoes utoos delaenttado
Ts xin x{2n)
E sisema es estasle
Ademos hoes Usa ya que necesitax{2) en coOdu sido
Un vcuuov h tuo de Lca en k a d a
T Ixtnl 1=n
Esiseena estasle Cauwso es unsistema identidad
Problema 2.14
%La convolución lineal definida en 2.14 tiene algunas propiedades:
%x1(n) * x2(n) = x1(n) * x2(n) : Conmutativa
%[x1(n) * x2(n)] * x3(n) = x1(n) * [x2(n) * x3(n)] : Asociativa
%x1(n) * [x2(n) + x3(n)] = x1(n) * x2(n) + x1(n) * x3(n) : Distributiva
%x(n) * delta(n - n0) = x(n * n0) : Identidad
1) Pruebe estas propiedades analíticamente.
2) Verifique lo anterior usando las siguientes señales.
%x1(n) = cos(pi*n/4)[u(n + 5) ? u(n ? 25)]
%x2(n) = (0.9)?n[u(n) ? u(n ? 20)]
%x3(n) = round[5w(n)], ?10 <= n <= 10, donde w(n) es uniforme en [?1, 1]
%Establecer el limite de las señales
n1 = -10:30;
n2 = 0:25;
n3 = -10:10;
x11 = cos(pi*n1 / 4);%Establecer la señal la señal n11
n11 = n1; [x12,n12] = stepseq(-5,-10,30); [x13,n13] = stepseq(25,-10,30); %Establecer la
señal x12 y x13
[x14,n14] = sigadd(x12,n12,-x13,n13); %sumar las señales
x1 = x11.*x14;
x21 = 0.9 .^ -n2;
[x22,n22] = stepseq(0,0,25); [x23,n23] = stepseq(20,0,25); %Establcer la señales a
dibujas
x24 = x22 - x23; x2 = x21.*x24; %Realizar operaciones con las señales
x3 = round((rand(1,21)*2 - 1)*5); %%Redonde cada valor obtenido al entero mas cercano
%1) Conmutativa.
[y1,ny1] = conv_m(x1,n1,x2,n2); [y2,ny2] = conv_m(x2,n2,x1,n1);
ydiff = max(abs(y1 - y2)), ndiff = max(abs(ny1 - ny2)),
%2) Asociativa.
[y1,ny1] = conv_m(x1,n1,x2,n2); [y1,ny1] = conv_m(y1,ny1,x3,n3);
[y2,ny2] = conv_m(x2,n2,x3,n3); [y2,ny2] = conv_m(x1,n1,y2,ny2);
ydiff = max(abs(y1 - y2)), ndiff = max(abs(ny1 - ny2));
%3) Distributiva.
[y1,ny1] = sigadd(x2,n2,x3,n3); [y1,ny1] = conv_m(x1,n1,y1,ny1);
[y2,ny2] = conv_m(x1,n1,x2,n2); [y3,ny3] = conv_m(x1,n1,x3,n3);
[y4,ny4] = sigadd(y2,ny2,y3,ny3); ydiff = max(abs(y1 - y4)),
ndiff = max(abs(ny1 - ny4));
%4) Identidad.
n0 = fix(100*rand(1,1)-0.5); [dl,ndl] = impseq(n0,n0,n0);
[y11,ny11] = conv_m(x1,n1,dl,ndl); [y12,ny12] = sigshift(x1,n1,n0);
y1diff = max(abs(y11 - y12)), ny1diff = max(abs(ny11 - ny12));
[y21,ny21] = conv_m(x2,n2,dl,ndl); [y22,ny22] = sigshift(x2,n2,n0);
y2diff = max(abs(y21 - y22)), ny2diff = max(abs(ny21 - ny22));
[y31,ny31] = conv_m(x3,n3,dl,ndl); [y32,ny32] = sigshift(x3,n3,n0);
y3diff = max(abs(y31 - y32)), ny3diff = max(abs(ny31 - ny32)),
ydiff =
ndiff =
y1diff =
y2diff =
y3diff =
ny3diff =
0
Problema 15
%Determine analíticamente la convolución y(n) = x(n) * h(n) de las
%siguientes secuencias, y verifícalo usando conv_m function.
1) x(n) = {2, -4, 5, 3, -1, -2, 6}, h(n) = {1, -1, 1, -1, 1}
n1 = -3:3; h = [1 -1 1 -1 1]; %Determinar el limite de la funcion y las amplitudes de h
x = [2 -4 5 3 -1 -2 6]; n2 = -1:3; %Determinar las amplitude sde x y el limite n2
str = ['Señal 1']
[y,n] = conv_m(x,n1,h,n2); y, n, %Encontrar la convolucion de la señal
str =
'Señal 1'
y =
2 -6 11 -8 7 -7 9 -4 7 -8 6
n =
-4 -3 -2 -1 0 1 2 3 4 5 6
2) x(n) = {1, 1, 0, 1, 1}, h(n) = {1, -2, -3, 4}
n1 = -3:3; h = [1 -2 -3 4];%Determinar el limite de la funcion y las amplitudes de h
x = [1 1 0 1 1]; n2 = -3:0;%Determinar las amplitude sde x y el limite n2
str = ['Señal 2']
[y,n] = conv_m(x,n1,h,n2); y, n,
str =
'Señal 2'
y =
1 -1 -5 2 3 -5 1 4
n =
-6 -5 -4 -3 -2 -1 0 1
3) x(n) = (1/4)^?n[u(n + 1) - u(n - 4)], h(n) = u(n) - u(n - 5)
n1 = -2:5;%Determinar el limite n1
[x11,nx11] = stepseq(-1,-2,5); [x12,nx12] = stepseq(4,-2,5); %Establecer la señal a
graficar
[x13,n13] = sigadd(x11,nx11,-x12,nx12); x14 = 0.25 .^ -n1; n14 = n1; %Realizar
operacione con las señales
x = x14 .* x13;
n2 = 0:6; [h11,nh11] = stepseq(0,0,6); [h12,nh12] = stepseq(5,0,6); h=h11-h12;
str = ['Señal 3']
[y,n] = conv_m(x,n1,h,n2); y, n, %Encontrat la convolucion de la señal
str =
'Señal 3'
y =
Columns 1 through 7
0 0.2500 1.2500 5.2500 21.2500 85.2500 85.0000
Columns 8 through 14
84.0000 80.0000 64.0000 0 0 0 0
n =
Columns 1 through 13
-2 -1 0 1 2 3 4 5 6 7 8 9 10
Column 14
11
4) x(n) = n/4[u(n) - u(n - 6)], h(n) = 2[u(n + 2) - u(n - 3)]
n1 = 0:7; %Determinar el limite n1
[x11,nx11] = stepseq(0,0,7); [x12,nx12] = stepseq(6,0,7); %Establecer la señal a
graficar
[x13,n13] = sigadd(x11,nx11,-x12,nx12); x14 = n1/4; n14 = n1; x = x14 .* x13;
n2 = -3:4; [h11,nh11] = stepseq(-2,-3,4); [h12,nh12] = stepseq(3,-3,4);
str = ['Señal 4']
h = 2 * (h11 - h12); [y,n] = conv_m(x,n1,h,n2); y, n,%Realiar la convolucion y presentar
valores
str =
'Señal 4'
y =
Columns 1 through 7
0 0 0.5000 1.5000 3.0000 5.0000 7.5000
Columns 8 through 14
7.0000 6.0000 4.5000 2.5000 0 0 0
Column 15
n =
Columns 1 through 13
-3 -2 -1 0 1 2 3 4 5 6 7 8 9
Columns 14 through 15
10 11
Problema 2.16
%Dados x(n) = (0.8)^n u(n), h(n)=(?0.9)^n u(n) y y(n) = h(n) * x(n). Haga
%uso de tres columnas y una fila de subplots para desarrollar:
1) Determine y(n) analíticamente. Grafique primero 51 muestras de y(n) usando
la
función stem.
n = 0:50; x = 0.8.^n; h = (-0.9).^n;
y1 = ((0.8).^(n+1) - (-0.9).^(n+1))/(0.8+0.9);
subplot(1,3,1);
stem(n,y1,'r','filled','MarkerSize',2);
title('Señal y_1[n]');
xlabel('n'); ylabel('y_1[n]');
2) Trunque x(n) y h(n) a 26 muestras. Use la función conv para calcular y(n).
Grafique y(n) usando stem. Compare los resultados con el apartado 1).
x2 = x(1:26); h2 = h(1:26); y2 = conv(h2,x2);
subplot(1,3,2);
stem(n,y1,'k','filled','MarkerSize',2);
title('Señal y_1[n] con conv');
xlabel('n'); ylabel('y_1[n]');
3) Usando la función filter, determine las primeras 51 muestras de x(n)*h(n).
Grafique y(n) usando la función stem.
y3 = filter(1,[1,0.9],x);
subplot(1,3,3);
stem(n,y1,'b','filled','MarkerSize',2);
title('Señal y_1[n] con filter');
xlabel('n'); ylabel('y_1[n]');
Problema 2.17
Cuando las secuencias x(n) y h(n) son de duración finita Nx y Nh, respectivamente, entonces su
convolución lineal (2.13) también se puede implementar usando la multiplicación matriz-
vector. Si los elementos de y(n) y x(n) están dispuestos en vectores columna x e y,
respectivamente, entonces de (2.13) obtenemos:
y = Hx
donde cambios lineales en h (n - k) para n = 0, . . ., Nh - 1 se organizan como filas en la matriz
H. Esta matriz tiene una estructura interesante y se llama matriz de Toeplitz. Para investigar
esto matriz, considere las secuencias
x(n) = {1, 2, 3, 4, 5} y h(n) = {6, 7, 8, 9}
1. Determine la convolución lineal y(n) = h(n) ∗ x(n).
2. Exprese x (n) como un vector de columna de 5 × 1 x y y (n) como un vector de
columna de 8 × 1 y. Ahora determine la matriz H de 8 × 5 de modo que y = Hx.
3. Caracterice la matriz H. A partir de esta caracterización, ¿Puede dar una definición de
Matriz de Toeplitz? ¿Cómo se compara esta definición con la de invariancia temporal?
La matriz H tiene el mismo número en todas las columnas y la matriz Toeplitz tiene la
misma característica, así que una pequeña definición que se podría dar es que la matriz
Toeplitz es aquella que posee el mismo número en cada diagonal al igual que en la matriz
H, misma que es similar a la definición de invarianza en el tiempo.
4. ¿Qué puedes decir sobre la primera columna y la primera fila de H?
La primera fila de H contiene el primer valor del vector de la respuesta al impulso h(n)
el cual posee un número de ceros que se presentan en la primera columna. Casi lo
mismo ocurre con la primera columna donde se presenta el vector de respuesta al
impulso h(n) completo.
Problema 2.18
%MATLAB ofrece una función llamada toeplitz que genera una matriz de Toeplitz,
%dada la primera fila y la primera columna.
1) Usando esta función y el resultado del cuarto punto del problema 2.17,
desarrolle otra función de MATLAB para implementar la convolución lineal. El
formanto de la función debe ser ....
%function [y,H]=conv_tx(h,x)
%Convolución Lineal con una matriz Toeplitz.
%Parámetros
%y = Secuencia de salida en vector columna.
%H = Matriz Toeplitz equivalente a la respuesta al impulso h.
%h = Respuesta al impulso en vector columna.
%x = Secuencia de entrada en vector columna.
%Nx = length(x);
%hc = [h; zeros(Nx-1, 1)]; hr = [h(1),zeros(1,Nx-1)];
%H = toeplitz(hc,hr); y = H*x;
%end
2) Verifica tu función para las secuencias del problema 2.17
h = [6,7,8,9]';
x = [1,2,3,4,5]';
[y,H] = conv_tx(h,x);
y = y'
H
y =
6 19 40 70 100 94 76 45
H =
6 0 0 0 0
7 6 0 0 0
8 7 6 0 0
9 8 7 6 0
0 9 8 7 6
0 0 9 8 7
0 0 0 9 8
0 0 0 0 9
Problema 2.19
%Un sistema LTI está caracterizado por la ecuación diferencial:
%y(n) - 0.5y(n - 1) + 0.25y(n - 2) = x(n)+2x(n - 1) + x(n - 3).
1) Usando la función flitrer, calcule y grafíque la respuesta al impulso del sistema
en el intervalo 0 <= n <= 100.
b = [1 2 0 1]; a = [1 -0.5 0.25]; [delta,n] = impseq(0,0,100);
h = filter(b,a,delta);
figure(1);
stem(n,h,'filled','m','MarkerSize',2); title('Respuesta al Impulso');
xlabel('n');ylabel('h[n]');
axis([min(n)-5,max(n)+5,min(h)-0.5,max(h)+0.5]);
2) Determine la estabilidad del sistema a partir de la respuesta al impulso.
%De la figura, podemos ver que la respuesta al impulso del sistema converge. Al no ser
%divergente, se puede asegurar que el sistema es estable, ya que no existen
%entradas pequeñas que resulten en salidas extremadamente grandes.
3) Si la entrada al sistema es x(n) = [5 + 3 cos(0.2*pi*n) + 4 sin(0.6*pi*n)] u(n),
determine la respuesta sobre el intervalo 0 <= n <= 200 usando la función filter.
b = [1 2 0 1]; a = [1 -0.5 0.25]; n = 0:200;
x = 5*ones(size(n))+3*cos(0.2*pi*n)+4*sin(0.6*pi*n); y = filter(b,a,x);
figure(2);
stem(n,y,'filled','c','MarkerSize',2); title('Salida del Sistema');
xlabel('n');ylabel('y[n]');
Problema 2.20
%Un simple diferenciador está dado por: y(n) = x(n) ? x(n ? 1.
%Este calcula una diferencia de primer orden respecto a la secuencia de entrada.
%Implemente este diferenciador en las siguientes secuencias, y grafíque los resultados.
1) x(n)= 5[u(n) ? u(n ? 20)]: un pulso rectangular
a = 1; b = [1 -1]; n1 = 0:20;
[x11,nx11] = stepseq(0,0,20); [x12,nx12] = stepseq(20,0,20);
x1 = 5*(x11 - x12); y1 = filter(b,a,x1);
figure(1);
stem(n1,y1,'filled','c','MarkerSize',2); title('Respuesta de salida al pulso
rectangular');
xlabel('n');ylabel('y_1[n]');
axis([min(n1)-1,max(n1)+1,min(x1)-7,max(x1)+1]);
2) x(n) = n[u(n) - u(n - 10)] + (20 - n)[u(n - 10) ? u(n - 20)]: un pulso triangular
a = 1; b = [1 -1]; n2 = 0:20;
[x11,nx11] = stepseq(0,0,20); [x12,nx12] = stepseq(10,0,20); [x13,nx13] =
stepseq(20,0,20);
x2 = n2.*(x11 - x12) + (20 - n2).*(x12 - x13);
y2 = filter(b,a,x2);
figure(2);
stem(n2,y2,'filled','b','MarkerSize',2); title('Respuesta de salida al pulso
triangular');
xlabel('n');ylabel('y_2[n]');
axis([min(n2)-1,max(n2)+1,min(x2)-1.5,max(x2)-8.5]);
3) 3. x(n) = sin (pi*n/25)[u(n) ? u(n ? 100)]: un pulso sinusoidal
a = 1; b = [1 -1]; n3 = 0:100; [x11,nx11] = stepseq(0,0,100);
[x12,nx12] = stepseq(100,0,100); x13 = x11-x12; x3 = sin(pi*n3/25).*x13;
y3 = filter(b,a,x3);
figure(3);
stem(n3,y3,'filled','g','MarkerSize',2); title('Respuesta de salida al pulso
triangular');
xlabel('n');ylabel('y_3[n]');
Published with MATLAB® R2017a