CARATULA UNIVERSIDAD NACIONAL DE LOJA
AREA DE LA ENERGÍA Y LOS RECURSOS NATURALES NO RENOVABLES
       INGENIERIA EN ELECTRÓNICA Y TELECOMUNICACIONES
                          Procesamiento digital de
                               señales
                        Ejercicios cap. #2
     ING.   Diego Orellana
  Estudiante: Andrea Stefania Enriquez
  Gunsha
     Ciclo: 6to “A”
            Fecha de Entrega Planificada: 19-11-2020.
                               Loja – Ecuador
       G                          2020-2021
                                        Ejercicios
2.1. Genere las siguientes secuencias utilizando las funciones básicas de señales de MATLAB y las
operaciones de señales de MATLAB discutidas en este capítulo. Trazar muestras de señales usando
el stem función.
1. 𝑥1 = 3𝛿(𝑛 + 2) + 2𝛿(𝑛) − 𝛿(𝑛 − 3) + 5𝛿(𝑛 − 7), −5 ≤ 𝑛 ≤ 15 ≤ 5
   x1=3*impseq(-2,-5,15)+2*impseq(0,-5,15)-impseq(3,-5,15)+5*impseq(7,-
   5,15);
   n1=[-5:15];
   stem(n1,x1);
   axis([min(n1)-1,max(n1)+1,min(x1)-1,max(x1)+1]);
   xlabel('n'); ylabel('x_1(n)'); title('Secuencia x_1(n)');
2. 𝑥2 (𝑛) = ∑5𝑘=−5 𝑒 −|𝑘| 𝛿(𝑛 − 2𝑘), −10 ≤ 𝑛 ≤ 10
   n2=[-10:10];
   x2=zeros(1,length(n2));
   for k=-5:5
   x2=x2+exp(-abs(k))*impseq(2*k,-10,10);
   stem(n2,x2);
   axis([min(n2)-1,max(n2)+1,min(x2)-1,max(x2)+1]);
   xlabel('n'); ylabel('x_2(n)'); title('Secuencia x_2(n)');
3. 𝑥3 (𝑛) = 10𝑢(𝑛) − 5𝑢(𝑛 − 5) − 10𝑢(𝑛 − 10) + 5𝑢(𝑛 − 15)
   x3=10*stepseq(0,0,20)-5*stepseq(5,0,20)-
   10*stepseq(10,0,20)+5*stepseq(15,0,20);
   n3=[0:20];
   stem(n3,x3);
   axis([min(n3)-1,max(n3)+1,min(x3)-1,max(x3)+1]);
   xlabel('n'); ylabel('x_3(n)'); title('Secuencia x_3(n)');
4. 𝒙𝟒 (𝒏) = 𝒆𝟎.𝟏𝒏[𝒖(𝒏 + 𝟐𝟎) − 𝒖(𝒏 − 𝟏𝟎)]
   n4=[-25:15];
   x4=exp(0.1*n4).*(stepseq(-20,-25,15)-stepseq(10,-25,15));
   stem(n4,x4);
   axis([min(n4)-1,max(n4)+1,min(x4)-1,max(x4)+1]);
   xlabel('n'); ylabel('x_4(n)'); title('Secuencia x_4(n)');
5. 𝑥5 (𝑛) = 5[cos(0.49𝜋𝑛) + cos(0.51𝜋𝑛)], −200 ≤ 𝑛 ≤ 200
   n5=[-200:200];
   x5=5*(cos(0.49*pi*n5)+cos(0.51*pi*n5));
   stem(n5,x5);
   axis([min(n5)-1,max(n5)+1,min(x5)-1,max(x5)+1]);
   xlabel('n'); ylabel('x_5(n)'); title('Secuencia x_5(n)');
6. 𝒙𝟔 (𝒏) = 𝟐𝒔𝒊𝒏(𝟎. 𝟎𝟏𝝅𝒏)𝒄𝒐𝒔(𝟎. 𝟓𝝅𝒏), −𝟐𝟎𝟎 ≤ 𝒏 ≤ 𝟐𝟎𝟎
   n6=[-200:200];
   x6=2*sin(0.01*pi*n6).*cos(0.5*pi*n6);
   stem(n6,x6)
   axis([min(n6)-10,max(n6)+10,min(x6)-1,max(x6)+1]);
   xlabel('n'); ylabel('x_6(n)'); title('Secuencia x_6(n)');
                                    𝜋𝜋
7. 𝑥7 (𝑛) = 𝑒 −0.05𝑛 𝑠𝑒𝑛 (0.1𝜋𝑛 +      ),0   ≤ 𝑛 ≤ 100
                                     3
   n7=[0:100];
   x7=exp(-0.05*n7).*sin(0.1*pi*n7+pi/3);
   stem(n7,x7);
   axis([min(n7)-5,max(n7)+5,min(x7)-1,max(x7)+1]);
   xlabel('n'); ylabel('x_7(n)'); title('Secuencia x_7(n)');
8. 𝑥8 (𝑛) = 𝑒 0.01𝑛 𝑠𝑒𝑛(0.1𝜋𝑛), 0 ≤ 𝑛 ≤ 100
   n8=[0:100];
   x8 = exp(0.01*n8).*sin(0.1*pi*n8);
   stem(n8,x8);
   axis([min(n8)-5,max(n8)+5,min(x8)-1,max(x8)+1]);
   xlabel('n'); ylabel('x_8(n)'); title('Secuencia x_8(n)');
2.2. Genere las siguientes secuencias aleatorias y obtenga su histograma usando la hist función con
100 bins. Utilice la función de bar para trazar cada histograma.
   1. x1(n) es una secuencia aleatoria cuyas muestras son independientes y están distribuidas
      uniformemente sobre el intervalo [0, 2]. Genere 100.000 muestras.
       n1 = [0:100000-1];
       x1 = 2*rand(1,100000);
       [h1,x1out] = hist(x1,100);
       bar(x1out, h1);
       xlabel('Intervalo'); ylabel('Número de elementos');
       title('Histograma de secuencia x_1 (n) en 100 contenedores');
2. 𝑥2 (𝑛) es una secuencia aleatoria gaussiana cuyas muestras son independientes con una media de
   10 y varianza 10. Genere 10,000 muestras.
   n2 = [1:10000];
   x2 = 10 + sqrt(10)*randn(1,10000);
   [h2,x2out] = hist(x2,100);
   bar(x2out,h2);
   xlabel('Intervalo'); ylabel('Número de elementos');
   title('Histograma de secuencia x_2 (n) en 100 contenedores');
3. 𝑥3 (n) = x1 (n) + x1 (n − 1) donde x1(n) es la secuencia aleatoria dada en la parte 1
   anterior. Comente sobre la forma de este histograma y explique la forma.
   n1 = [0:100000-1];
   x1 = 2*rand(1,100000);
   [x11,n11] = sigshift(x1,n1,1);
   [x3,n3] = sigadd(x1,n1,x11,n11);
   [h3,x3out] = hist(x3,100);
   bar(x3out,h3);
   axis([-0.5 4.5 0 2500]);
   xlabel('Intervalo'); ylabel('Número de elementos');
   title('Histograma de secuencia x_3 (n) en 100 contenedores');
   4.   𝑥4 (𝑛) = ∑4𝑘=1 𝑦𝑘 (𝑛) donde cada secuencia aleatoria 𝑦𝑘 (𝑛) es independiente de otras con
        muestras distribuidas uniformemente sobre [−0,5, 0,5]. Comente sobre la forma de este
        histograma.
        y1 = rand(1,100000) - 0.5; y2 = rand(1,100000) - 0.5;
        y3 = rand(1,100000) - 0.5; y4 = rand(1,100000) - 0.5;
        x4 = y1 + y2 + y3 + y4;
        [h4,x4out] = hist(x4,100);
        bar(x4out,h4); xlabel('Intervalo'); ylabel('Número de elementos');
        title('Histograma de secuencia x_4 (n) en 100 contenedores');
2.3. Generar las siguientes secuencias periódicas y graficar sus muestras (usando la función de stem)
durante el número indicado de períodos.
        1. 𝑥
           ̃(𝑛)
            1   = {… , −2, −1,0,1,2, … }𝑝𝑒𝑟𝑖𝑜𝑑𝑖𝑐𝑜
           n1 = [-12:12];
           x1 = [-2,-1,0,1,2];
           x1 = x1'*ones(1,5);
           x1 = (x1(:))'; stem(n1,x1);
           axis([min(n1)-1,max(n1)+1,min(x1)-1,max(x1)+1]);
           xlabel('n'); ylabel('x_1(n)'); title('Secuencia x_1(n)');
      2. ̃(𝑛)
         𝑥1   = 𝑒 0.1𝑛 [𝑢(𝑛) − 𝑢(𝑛 − 20)]𝑝𝑒𝑟𝑖𝑜𝑑𝑖𝑐𝑜. Traza tres períodos.
          n2 = [0:21];
          x2 = exp(0.1*n2).*(stepseq(0,0,21)-stepseq(20,0,21));
          x2 = x2'*ones(1,3);
          x2 = (x2(:))';
          n2 = [-22:43]; stem(n2,x2);
          axis([min(n2)-2,max(n2)+4,min(x2)-1,max(x2)+1]);
          xlabel('n'); ylabel('x_2(n)'); title('Secuencia x_2(n)');
          ntick = [n2(1):4:n2(end)-5 n2(end)];
          set(gca,'XTickMode','manual','XTick',ntick);
   ̃3 (𝑛) = 𝑠𝑒𝑛(0.1𝜋𝑛)[𝑢(𝑛) − 𝑢(𝑛 − 10)] Traza cuatro períodos.
3. 𝑥
   n3 = [0:11];
   x3 = sin(0.1*pi*n3).*(stepseq(0,0,11)-stepseq(10,0,11));
   x3 = x3'*ones(1,4);
   x3 = (x3(:))'; n3 = [-12:35]; stem(n3,x3);
   axis([min(n3)-1,max(n3)+1,min(x3)-0.5,max(x3)+0.5]);
   xlabel('n'); ylabel('x_3(n)'); title('Secuencia x_3(n)');
   ntick = [n3(1):4:n3(end)-3 n3(end)];
   set(gca,'XTickMode','manual','XTick',ntick);
   4. 𝑥̃(𝑛)
        4   = {… ,1,2,3, . . }𝑝𝑒𝑟𝑖𝑜𝑑𝑖𝑐𝑜 + {… . ,1,2,3,4, . . }𝑝𝑒𝑟𝑖𝑜𝑑𝑖𝑐𝑜, 0 ≤ 𝑛 ≤ 24 Cuál es el período de
       ̃(𝒏)?
       𝒙 𝟒
       n4 = [0:24];
       x4a = [1 2 3];
       x4a = x4a'*ones(1,9);
       x4a = (x4a(:))';
       x4b = [1 2 3 4];
       x4b = x4b'*ones(1,7); x4b = (x4b(:))'; x4 = x4a(1:25) + x4b(1:25);
       stem(n4,x4); axis([min(n4)-1,max(n4)+1,min(x4)-1,max(x4)+1]);
       xlabel('n'); ylabel('x_4(n)');title('Secuencia x_4(n):Periodo=
       12');
       ntick = [n4(1) :2:n4(end)];
       set(gca,'XTickMode','manual','XTick',ntick);
2.4. Sea. 𝑥(𝑛) = {2,4, −3,1, −5,4,7}. Genere y grafique las muestras (use la función de stem) de
las siguientes secuencias.
   1. 𝑥1 (𝑛) = 2𝑥(𝑛 − 3) + 3𝑥(𝑛 + 4) − 𝑥(𝑛)
       n = [-3:3];
       x = [2,4,-3,1,-5,4,7];
       [x11,n11] = sigshift(x,n,3);
       [x12,n12] = sigshift(x,n,-4);
       [x13,n13] = sigadd(2*x11,n11,3*x12,n12);
       [x1,n1] = sigadd(x13,n13,-x,n);
       stem(n1,x1);
   axis([min(n1)-1,max(n1)+1,min(x1)-3,max(x1)+1]);
   xlabel('n'); ylabel('x_1(n)'); title('Secuencia x_1(n)');
   ntick = n1; ytick = [min(x1)-3:5:max(x1)+1];
   set(gca,'XTickMode','manual','XTick',ntick);
   set(gca,'YTickMode','manual','YTick',ytick);
2. 𝑥2 (𝑛) = 4𝑥(4 + 𝑛) + 5𝑥(𝑛 + 5) + 2𝑥(𝑛)
   n = [-3:3];
   x = [2,4,-3,1,-5,4,7];
   [x21,n21] = sigshift(x,n,-4);
   [x22,n22] = sigshift(x,n,-5);
   [x23,n23] = sigadd(4*x21,n21,5*x22,n22);
   [x2,n2] = sigadd(x23,n23,2*x,n);
   stem(n2,x2);
   axis([min(n2)-1,max(n2)+1,min(x2)-4,max(x2)+6]);
   xlabel('n'); ylabel('x_2(n)'); title('Secuencia x_2(n)');
   ntick = n2;
   ytick = [-25 -20:10:60 65];
   set(gca,'XTickMode','manual','XTick',ntick);
   set(gca,'YTickMode','manual','YTick',ytick);
3. 𝑥3 (𝑛) = 𝑥(𝑛 + 3)𝑥(𝑛 + 2) + 𝑥(𝑛 − 2) + 𝑥(1 − 𝑛)𝑥(𝑛 + 1)
   n = [-3:3];
  x = [2,4,-3,1,-5,4,7];
  [x31,n31] = sigshift(x,n,-3);
  [x32,n32] = sigshift(x,n,2);
  [x33,n33] = sigmult(x31,n31,x32,n32);
  [x34,n34] = sigfold(x,n);
  [x34,n34] = sigshift(x34,n34,1);
  [x35,n35] = sigshift(x,n,-1);
  [x36,n36] = sigmult(x34,n34,x35,n35);
  [x3,n3] = sigadd(x33,n33,x36,n36);
  stem(n3,x3);
  axis([min(n3)-1,max(n3)+1,min(x3)-10,max(x3)+10]);
  xlabel('n'); ylabel('x_3(n)'); title('Secuencia x_3(n)');
  ntick = n3; set(gca,'XTickMode','manual','XTick',ntick);
4. x4 (n) = 2e0.5n x(n) + cos(0.1πn)x(n + 2), −10 ≤ n ≤ 10
   n = [-3:3]; x = [2,4,-3,1,-5,4,7];
   n4 = [-10:10]; x41 = 2*exp(0.5*n4); x412 = cos(0.1*pi*n4);
   [x42,n42] = sigmult(x41,n4,x,n);
   [x43,n43] = sigshift(x,n,-2);
   [x44,n44] = sigmult(x412,n42,x43,n43);
   [x4,n4] = sigadd(x42,n42,x44,n44);
   stem(n4,x4);
   axis([min(n4)-1,max(n4)+1,min(x4)-11,max(x4)+10]);
   xlabel('n'); ylabel('x_4(n)'); title('Secuencia x_4(n)');
   ntick = n4; set(gca,'XTickMode','manual','XTick',ntick);
2.5. La secuencia exponencial compleja𝒆𝒋𝝎𝒐 𝒏 o la secuencia sinusoidal cos (ω0n) son periódicas si
                                  𝝎                                               𝑲
la frecuencia normalizada 𝒇𝒐 ≜ 𝟐𝝅𝒐 es un número racional; es decir, 𝒇𝟎 =           , donde K y N son
                                                                                  𝑵
enteros.
   1. Pruebe el resultado anterior.
   2. Genere 𝒆𝒙𝒑 (𝒋𝟎. 𝟏𝝅𝒏), −𝟏𝟎𝟎 ≤ 𝒏 ≤ 𝟏𝟎𝟎. Grafique sus partes real e imaginaria usando la raíz
      función(stem). ¿Es esta secuencia periódica? Si es así, ¿cuál es su período fundamental? Desde el
      examen de la trama, ¿qué interpretación se puede dar a los números enteros K y N encima?
        n1 = [-100:100];
        x1 = exp(0.1*j*pi*n1);
        subplot(2,1,1);
        stem(n1,real(x1));
        axis([min(n1)-5,max(n1)+5,min(real(x1))-1,max(real(x1))+1]);
        xlabel('n'); ylabel('Real(x_1(n)');
        title(['Parte real de la secuencia x_1(n) = ' ...
            'exp(0.1 \times j \times pi \times n) ']);
        ntick = [n1(1):20:n1(end)];
        set(gca,'XTickMode','manual','XTick',ntick);
        subplot(2,1,2);
        stem(n1,imag(x1));
        axis([min(n1)-5,max(n1)+5,min(real(x1))-1,max(real(x1))+1]);
        xlabel('n'); ylabel('Imag(x_1(n))'); title(['Parte imaginaria de
        la Secuencia x_1(n) = '...
        'exp(0.1 \times j \times pi \times n)']);
        ntick = [n1(1):20:n1(end)];
        set(gca,'XTickMode','manual','XTick',ntick);
3. Genere y grafique 𝒄𝒐𝒔 (𝟎. 𝟏𝒏), −𝟐𝟎 ≤ 𝒏 ≤ 𝟐𝟎. ¿Es esta secuencia periódica? ¿Qué es lo que tú
   concluir de la trama? Si es necesario, examine los valores de la secuencia en MATLAB para llega a
   tu respuesta.
    n2 = [-20:20];
    x2 = cos(0.1*n2);
    stem(n2,x2);
    axis([min(n2)-1,max(n2)+1,min(x2)-1,max(x2)+1]);
    xlabel('n'); ylabel('x_2(n)');
    title(['Secuencia x_2(n) ']);
    ntick = [n2(1):4:n2(end)];
    et(gca,'XTickMode','manual','XTick',ntick);
2.6. Usando la función evenodd, descomponga las siguientes secuencias en pares e impares.
Grafique estos componentes usando la función de raíz(stem).
   1. 𝑥1 (𝑛) = {0,1,2,3,4,5,6,7,8,9}
      x1 = [0 1 2 3 4 5 6 7 8 9];
      n1 = [0:9];
      [xe1,xo1,m1] = evenodd(x1,n1);
      subplot(2,1,1);
      stem(m1,xe1);
      axis([min(m1)-1,max(m1)+1,min(xe1)-1,max(xe1)+1]);
      xlabel('n');ylabel('x_e(n)');title('Parte par x_1 (n)');
      ntick = [m1(1):m1(end)];
      ytick = [-1:5];
      set(gca,'XTick',ntick);
      set(gca,'YTick',ytick);
      subplot(2,1,2);
      stem(m1,xo1);
      axis([min(m1)-1,max(m1)+1,min(xo1)-2,max(xo1)+2]);
      xlabel('n'); ylabel('x_o(n)'); title('Parte impar de x_1 (n)');
      ntick = [m1(1):m1(end)];
      ytick = [-6:2:6];
      set(gca,'XTick',ntick); set(gca,'YTick',ytick);
   2. 𝑥2 (𝑛) = 𝑒 0.1𝑛 [𝑢(𝑛 + 5) − 𝑢(𝑛 − 10)]
      n2 = [-8:12]; x2 = exp(0.1*n2).*(stepseq(-5,-8,12) - stepseq(10,-
      8,12));
      [xe2,xo2,m2] = evenodd(x2,n2);
      subplot(2,1,1);
      stem(m2,xe2);
      axis([min(m2)-1,max(m2)+1,min(xe2)-1,max(xe2)+1]);
      xlabel('n'); ylabel('x_e(n)');
      title('Parte par de x_2(n) ');
      ntick = [m2(1):2:m2(end)]; set(gca,'XTick',ntick);
      subplot(2,1,2);
      stem(m2,xo2);
  axis([min(m2)-1,max(m2)+1,min(xo2)-1,max(xo2)+1]);
  xlabel('n'); ylabel('x_o(n)'); title('Parte impar de   x_2(n)');
  ntick = [m2(1) :2:m2(end)]; set(gca,'XTick',ntick);
                  𝜋
3. 𝑥3 (𝑛) = cos (0.2𝜋𝑛 + ) , −20 ≤ 𝑛 ≤ 20
                        4
   n3 = [-20:20];
   x3 = cos(0.2*pi*n3 + pi/4);
   [xe3,xo3,m3] = evenodd(x3,n3);
   subplot(2,1,1);
   stem(m3,xe3);
   axis([min(m3)-2,max(m3)+2,min(xe3)-1,max(xe3)+1]);
   xlabel('n'); ylabel('x_e(n)'); title('Parte par de x_3(n)');
   ntick = [m3(1):4:m3(end)]; set(gca,'XTick',ntick);
   subplot(2,1,2);
   stem(m3,xo3);
   axis([min(m3)-2,max(m3)+2,min(xo3)-1,max(xo3)+1]);
   xlabel('n'); ylabel('x_o(n)'); title('Parte impar de x_3(n)');
   ntick = [m3(1):4 :m3(end)]; set(gca,'XTick',ntick);
                                       𝜋
   4. 𝑥4 (𝑛) = 𝑒 −0.05𝑛 𝑠𝑒𝑛 (0.1𝜋𝑛 + ) , 0 ≤ 𝑛 ≤ 100
                                    3
      n4 = [0:100]; x4 = exp(-0.05*n4).*sin(0.1*pi*n4 + pi/3);
      [xe4,xo4,m4] = evenodd(x4,n4);
      subplot(2,1,1);
      stem(m4,xe4);
      axis([min(m4)-10,max(m4)+10,min(xe4)-1,max(xe4)+1]);
      xlabel('n'); ylabel('x_e(n)'); title(['Parte par de x_4(n)']);
      ntick = [m4(1):20:m4(end)]; set(gca,'XTick',ntick);
      subplot(2,1,2);
      stem(m4,xo4);
      axis([min(m4)-10,max(m4)+10,min(xo4)-1,max(xo4)+1]);
      xlabel('n'); ylabel('x_o(n)'); title(['Parte impar de x_4(n)']);
      ntick = [m4(1):20 :m4(end)]; set(gca,'XTick',ntick);
2.7. Una secuencia de valores complejos 𝑥𝑒 (𝑛)se llama simétrica conjugada si 𝑥𝑒 (𝑛) = 𝑥𝑒 ∗ (−𝑛) ,y
a la secuencia de valores complejos 𝑥𝑜 (n) se llama conjugada-antisimétrica si 𝑥𝑜 (n) = −𝑥𝑜 ∗ (−𝑛).
Entonces cualquier secuencia arbitraria de valores complejos 𝑥 (𝑛) se puede descomponer en
𝑥 (𝑛) = 𝑥𝑒 (𝑛) + 𝑥𝑜 (n), donde 𝑥𝑒 (𝑛) y 𝑥𝑜 (n) están dados por
                                1                             1
                     𝑥𝑒 (𝑛) =     [𝑥(𝑛) + 𝑥 ∗ (−𝑛)] 𝑦 𝑥0 (𝑛) = [𝑥(𝑛) − 𝑥 ∗ (−𝑛)]
                                2                             2
Respectivamente. Modifique la función evenodd discutida en el texto para que acepte una secuencia y la
descompone en su conjugado-simétrico y conjugado-antisimétrico componentes mediante la
implementación (2.27)
Modifique la función par impar discutida en el texto para que acepte una secuencia arbitraria y se
descomponga en sus componentes conjugado-simétrico y conjugado-antisimétrico implementando (2.1).
Descomponer la secuencia
                         𝑥(𝑛) = 10 exp([−0.1 + 𝑗0.2𝜋]𝑛) ,      0 ≤ 𝑛 ≤ 10
en sus componentes conjugado-simétrico y conjugado-antisimétrico. Trazar su real y partes imaginarias
para verificar la descomposición. (Utilice la función de subtrama(subplot)).
       n = [0:10]; x = 10*(-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);
       ylabel('Re[x_e(n)]'); xlabel('n');
       axis([min(neo)-1,max(neo)+1,min(Re_xe)-2,max(Re_xe)+2]);
       ytick = [min(Re_xe)-2:2:max(Re_xe)+2]; set(gca,'YTick',ytick);
       title(['Real part of'.....
           'even sequence x_e(n)']);
       subplot(2,2,3); Hs = stem(neo,Im_xe);
       ylabel('Im[x_e(n)]'); xlabel('n');
       axis([min(neo)-1,max(neo)+1,-40,40]);
       ytick = [-40:20:40]; set(gca,'YTick',ytick);
       title(['Imaginary part of'.....
       'even sequence x_e(n)']);
       subplot(2,2,2); Hs = stem(neo,Re_xo);
       ylabel('Re[x_o(n)]'); xlabel('n');
       axis([min(neo)-1,max(neo)+1,min(Re_xo)-1,max(Re_xo)+1]);
       ytick = [-6:2:6]; set(gca,'YTick',ytick);
       title(['Real part of' ...
           'odd sequence x_o(n)']);
       subplot(2,2,4); Hs = stem(neo,Im_xo);
       ylabel('Im[x_o(n)');
       xlabel('n');
       axis([min(neo)-1,max(neo)+1,min(Im_xo)-10,max(Im_xo)+10]);
       ytick = [-10:10:40]; set(gca,'YTick',ytick);
       title(['Imaginary part of' ....
           'odd sequence x_o(n)']);
       Hf_1 = figure;
       set(Hf_1,'NumberTitle','off','Name','P0207b');
       subplot(2,2,1);
       Hs = stem(neo,Re_xe);
       set(Hs,'markersize',2);
       ylabel('Re[xe(n)]');     %,'Font Size',LFS);
       xlabel('n')%,'Font Size',LFS);
       axis([min(neo)-1,max(neo)+1,-5,12]);
       ytick = [-5:5:15];
       set(gca,'YTick',ytick);
       title('Parte Real Secuencia Xe(n)');%,char(10))],'Font Size',TFS);
       subplot(2,2,3);
       Hs = stem(neo,Im_xe);
       set(Hs,'markersize',2);
       ylabel('Im[xe(n)]');%,FontSize)
       xlabel('n');%....
       axis([min(neo)-1,max(neo)+1,-5,5]);
       ytick = [-5:1:5];
       set(gca,'YTick',ytick);
        title('Parte imaginaria-secuencia Xe(n)');
        subplot(2,2,2);
        Hs = stem(neo,Re_xo);
        set(Hs,'markersize',2);
        ylabel('Re[xo(n)]');%,FontSize)
        xlabel('n');%....
        axis([min(neo)-1,max(neo)+1,-5,5]);
        ytick = [-5:1:5];
        set(gca,'YTick',ytick);
        title('Parte real secuencia Xo(n)');
        subplot(2,2,4);
        Hs = stem(neo,Im_xo);
        set(Hs,'markersize',2);
        ylabel('Im[xo(n)]');%,FontSize)
        xlabel('n');%....
        axis([min(neo)-1,max(neo)+1,-5,5]);
        ytick = [-5:1:5];
        set(gca,'YTick',ytick);
        title('Parte real secuencia Xo(n)');
2.8. La operación de dilatación de la señal (o diezmado o muestreo descendente) se define por
                                   𝑥(𝑛) = {… , −2,4,3, −6,5, −1,8, … }
en el que la secuencia x (n) se muestra hacia abajo por un factor entero M. Por ejemplo, si
                                        𝑦(𝑛) = {… . , −2,3,5,8, … }
  1. Desarrolle un dnsample de función MATLAB que tenga la forma
     function [y ny]=dnsample(x,n,M)
     param=n/M;
     samp=fix(param)==param;
     y=x(samp==1);
     ny=n(samp==1)/M;
     end
2. Genere x (n) = sin (0.125πn), - 50 ≤ n ≤ 50. Diezme x (n) por un factor de 4 para generar y (n). Grafique
   tanto x (n) como y (n) usando la subparcela y comente los resultados.
     n1 = [-50:50]; x1 = sin(0.125*pi*n1); [y1,m1] = dnsample(x1,n1,4);
     subplot(2,1,1); Hs = stem(n1,x1); set(Hs,'markersize',2);
     xlabel('n'); ylabel('x(n)');
     title('Secuencia original x_1(n)');
     axis([min(n1)-5,max(n1)+5,min(x1)-0.5,max(x1)+0.5]);
     ytick = [-1.5:0.5:1.5]; ntick = [n1(1):10:n1(end)];
     set(gca,'XTick',ntick); set(gca,'YTick',ytick);
     subplot(2,1,2); Hs = stem(m1,y1); set(Hs,'markersize',2);
     xlabel('n'); ylabel('y(n) = x(4n)');
     title('y_1(n) = Secuencia original x_1(n) diezmada por un factor
     de 4');
     axis([min(m1)-2,max(m1)+2,min(y1)-0.5,max(y1)+0.5]);
     ytick = [-1.5:0.5:1.5]; ntick = [m1(1):2:m1(end)];
3. Repita lo anterior usando x (n) = sin (0.5πn), - 50 ≤ n ≤ 50. Analice cualitativamente el efecto del
                                muestreo descendente en las señales.
     n2 = [-50:50]; x2 = sin(0.5*pi*n2); [y2,m2] = dnsample(x2,n2,4);
     subplot(2,1,1); Hs = stem(n2,x2); set(Hs,'markersize',2);
     xlabel('n'); ylabel('x(n)');
     axis([min(n2)-5,max(n2)+5,min(x2)-0.5,max(x2)+0.5]);
     title('Secuencia original x_2(n)');
     ytick = [-1.5:0.5:1.5]; ntick = [n2(1):10:n2(end)];
     set(gca,'XTick',ntick); set(gca,'YTick',ytick);
     subplot(2,1,2); Hs = stem(m2,y2); set(Hs,'markersize',2);
       xlabel('n'); ylabel('y(n) = x(4n)');
       axis([min(m2)-1,max(m2)+1,min(y2)-1,max(y2)+1]);
       title('y_2(n) = Secuencia original x_2(n) diezmada por un factor de 4');
2.9 Usando la función conv_m, determine la secuencia de autocorrelación rxx () y la correlación
cruzada secuencia rxy () para las siguientes secuencias:
                    𝑥(𝑛) = (0.9)𝑛 , 0 ≤ 𝑛 ≤ 20; 𝑦(𝑛) = (0.8)−𝑛 , − 20 ≤ 𝑛 ≤ 0
Describe tus observaciones de estos resultados.
       nx = [0:20]; x = 0.9 .^ nx; [xf,nxf] = sigfold(x,nx);
       [rxx,nrxx] = conv_m(x,nx,xf,nxf);
       Hs = stem(nrxx,rxx);
       xlabel('n'); ylabel('r_x_x(n)'); title('Autocorrelacion of x(n)');
       nx = [0:20]; x = 0.9 .^ nx; ny = [-20:0]; y = 0.8 .^ ny;
       [yf,nyf] = sigfold(y,ny); [rxy,nrxy] = conv_m(x,nx,yf,nyf);
       Hs = stem(nrxy,rxy);
       xlabel('n'); ylabel('r_x_y(n)'); title('Correlacion cruzada of x(n) y
       y(n)');
2.10. En cierta sala de conciertos, se generan ecos de la señal de audio original x (n) debido a los
reflejos en las paredes y el techo. La señal de audio que experimenta el oyente y (n) es una
combinación de x (n) y sus ecos. Sea donde k es la cantidad de retraso en las muestras y α es su
fuerza relativa. Queremos estimar el retraso utilizando el análisis de correlación.
                                       𝑦(𝑛) = 𝑥(𝑛) + 𝛼𝑥(𝑛 − 𝑘)
Sea x (n) = cos (0.2πn) + 0.5 cos (0.6πn), α = 0.1 y k = 50. Genere 200 muestras de y (n) y determine su
correlación cruzada. ¿Puede obtener α y k observando ryx ()?
       a = 0.1;
       k = 50;
       nx = [0:200]; x = cos(0.2*pi.*nx)+0.5*cos(0.6*pi.*nx);
       [y,ny] = sigshift(x,nx,k); % Se obtiene x(n-k)
       [y,ny] = sigadd(a*y,ny,x,nx); % Se obtiene y(n) = x(n) + a*x(n-2)
       [x,nx] = sigfold(x,nx); % Se obtiene x(-n)
       [rxy,nrxy] = conv_m(y,ny,x,nx); % Correlacion cruzada
       stem(nrxy,rxy)
       xlabel('n'); ylabel('r_x_y(n)'); title('Correlacion cruzada of x(n) y
       y(n)');
2.11. Considere los siguientes sistemas de tiempo discreto:
donde round [·] denota redondeo al entero más cercano.
    1. Utilice (2.10) para determinar analíticamente si estos sistemas son lineales.
    2. 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.
Señal 1.
    1.
    2.
Señal 2
    1.
    2.
Señal 3.
    1.
    2.
Señal 4.
    1.
    2.
Señal 5.
    1.
    2.
Señal 6.
  1.
  2.
2.12. Considere los sistemas de tiempo discreto dados en el problema P2.11.
         1. Utilice (2.12) para determinar analíticamente si estos sistemas son invariantes en el
         tiempo.
         2. Sea x (n) una secuencia aleatoria gaussiana con media 0 y varianza 10 sobre 0 ≤ n ≤ 100.
         Usando esta secuencia, verifique la invariancia temporal de los sistemas anteriores. Elija
         cualquier valor para el desplazamiento de muestra k en (2.12). Debe utilizar varias
         realizaciones de la secuencia anterior para llegar a sus respuestas.
Señal 1.
    1.
    2.
Señal 2.
1
Señal 3.
    1.
    2.
Señal 4.
    1.
    2.
Señal 5.
    1.
    2.
Señal 6.
    1.
    2.
2.13 Para los sistemas dados en el problema P2.11, determine analíticamente su
estabilidad y causalidad.
2.14. La convolución lineal definida en (2.14) tiene varias propiedades:
1. Demuestre analíticamente estas propiedades.
2.   Usando las siguientes tres secuencias, verifique las propiedades anteriores:
     Propiedad conmutativa
     n1 = -10:30; n2 = 0:25; n3 = -10:10; x11 = cos(pi*n1 / 4);
     n11 = n1; [x12,n12] = stepseq(-5,-10,30); [x13,n13] = stepseq(25,-
     10,30);
     [x14,n14] = sigadd(x12,n12,-x13,n13); x1 = x11.*x14;
     x21 = 0.9 .^ -n2; [x22,n22] = stepseq(0,0,25); [x23,n23] =
     stepseq(20,0,25);
     x24 = x22 - x23; x2 = x21.*x24;
     x3 = round((rand(1,21)*2 - 1)*5);
     % Propiedad 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)),
Propiedad asociativa
n1 = -10:30; n2 = 0:25; n3 = -10:10; x11 = cos(pi*n1 / 4); n11 =
n1;
[x12,n12] = stepseq(-5,-10,30); [x13,n13] = stepseq(25,-10,30);
[x14,n14] = sigadd(x12,n12,-x13,n13); x1 = x11.*x14;
x21 = 0.9 .^ -n2; [x22,n22] = stepseq(0,0,25); [x23,n23] =
stepseq(20,0,25);
x24 = x22 - x23; x2 = x21.*x24; x3 = round((rand(1,21)*2 - 1)*5);
% Propiedad 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)),
Propiedad distributiva
n1 = -10:30; n2 = 0:25; n3 = -10:10; x11 = cos(pi*n1 / 4); n11 =
n1;
[x12,n12] = stepseq(-5,-10,30); [x13,n13] = stepseq(25,-10,30);
[x14,n14] = sigadd(x12,n12,-x13,n13); x1 = x11.*x14; x21 = 0.9 .^ -
n2;
[x22,n22] = stepseq(0,0,25); [x23,n23] = stepseq(20,0,25); x24 =
x22 - x23;
x2 = x21.*x24; x3 = round((rand(1,21)*2 - 1)*5);
% Propiedad 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)),
Propiedad identidad
n1 = -10:30; n2 = 0:25; n3 = -10:10; x11 = cos(pi*n1 / 4); n11 =
n1;
[x12,n12] = stepseq(-5,-10,30); [x13,n13] = stepseq(25,-10,30);
[x14,n14] = sigadd(x12,n12,-x13,n13); x1 = x11.*x14; x21 = 0.9 .^ -
n2;
[x22,n22] = stepseq(0,0,25); [x23,n23] = stepseq(20,0,25); x24 =
x22 - x23;
x2 = x21.*x24; x3 = round((rand(1,21)*2 - 1)*5);
% Propiedad 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)),
2.15 Determina analíticamente la convolución y (n) = x (n) ∗ h (n) de las siguientes secuencias
y verifica tus respuestas usando la función conv_m.
       n1 = -3:3; x = [2 -4 5 3 -1 -2 6]; n2 = -1:3; h = [1 -1 1 -1 1];
       [y,n] = conv_m(x,n1,h,n2); y, n
       n1 = -3:3; x = [1 1 0 1 1]; n2 = -3:0; h = [1 -2 -3 4];
       [y,n] = conv_m(x,n1,h,n2); y, n,
       n1 = -2:5; [x11,nx11] = stepseq(-1,-2,5); [x12,nx12] = stepseq(4,-
       2,5);
       [x13,n13] = sigadd(x11,nx11,-x12,nx12); x14 = 0.25 .^ -n1; n14 =
       n1;
       x = x14 .* x13;
       n2 = 0:6; [h11,nh11] = stepseq(0,0,6); [h12,nh12] = stepseq(5,0,6);
       h=h11-h12;
       [y,n] = conv_m(x,n1,h,n2); y, n,
        n1 = 0:7; [x11,nx11] = stepseq(0,0,7); [x12,nx12] = stepseq(6,0,7);
        [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);
        h = 2 * (h11 - h12); [y,n] = conv_m(x,n1,h,n2); y, n,
2.16 Deje x (n) = (0.8) ^n *u (n), h (n) = (−0.9) ^n *u (n), y y (n) = h (n) ∗ x (n). Utilice tres
columnas y una fila de subtramas para las siguientes partes.
        1. Determine y (n) analíticamente. Grafique las primeras 51 muestras de y (n) usando la
        función de raíz.
           2. Truncar x (n) y h (n) a 26 muestras. Utilice la función conv para calcular y (n). Grafique y
           (n) usando la función raíz. Compare sus resultados con los de la parte 1.
           3. Con la función de filtro, determine las primeras 51 muestras de x (n) ∗ h (n).Grafique y
           (n) usando la función raíz. Compare sus resultados con los de las partes 1 y 2.
           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); Hs1 = stem(n,y1,'filled'); set(Hs1,'markersize',2);
           title('Analitico'); xlabel('n'); ylabel('y(n)');
           x2 = x(1:26); h2 = h(1:26); y2 = conv(h2,x2);
           subplot(1,3,2); Hs2 = stem(n,y2,'filled'); set(Hs2,'markersize',2);
           title('Usando la funcion convolucion'); xlabel('n');
           %ylabel('y(n)');
           y3 = filter([1],[1,0.9],x);
           subplot(1,3,3); Hs3 = stem(n,y3,'filled'); set(Hs3,'markersize',2);
           title('Usando la funcion filtro'); xlabel('n'); %ylabel('y(n)');
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
                                                    𝑦 = 𝐻𝑥
            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
           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 en el tiempo?
   la matriz H tiene una estructura interesante. Cada diagonal de H contiene el mismo
   número. Tal llamada matriz de Toeplitz. Se caracteriza por la siguiente propiedad
                                      [𝐻]𝑖,𝑗 = [𝐻]𝑖−𝑗
   que es similar a la definición de invariancia en el tiempo
   ¿Qué puedes decir sobre la primera columna y la primera fila de H?
   La primera columna de H contiene el vector de respuesta al impulso h, n seguido de un
   número de ceros igual al número de valores x,n menos uno. La primera fila contiene el
   primer elemento de h, n seguido por el mismo número de ceros que en la primera
   columna. Usando esta información y la propiedad anterior podemos generar toda la
   matriz de Topelitz.
               x= [1 2 3 4 5];
               h= [6 7 8 9];
               y= conv(x,h)
               stem(y);
               title('Convolucion x*h')
               ylabel('G[n]');
               xlabel('n');
2.18 MATLAB proporciona una función llamada toeplitz para generar una matriz Toeplitz,
dadas la primera fila y la primera columna.
1. Con esta función y su respuesta al problema P2.17, parte 4, desarrolle otra función MATLAB
para implementar la convolución lineal. El formato de la función debe ser
function [y,H]=conv_tp(h,x)
% Convolucion lineal usando Toeplitz Matrix
% ----------------------------------------
% [y,H] = conv_tp(h,x)
% y = secuencia de salida en forma de vector de columna
% H = matriz de Toeplitz correspondiente a la secuencia h de modo que y =
Hx
% h = secuencia de respuesta de impulso en forma de vector de columna
% x = secuencia de entrada en forma de vector de columna
%
Nx = length(x);
  Nh = length(h);
hc = [h; zeros(Nx-1, 1)];
hr = [h(1),zeros(1,Nx-1)];
H = toeplitz(hc,hr);
y = H*x;
2. Verifique su función en las secuencias dadas en el problema P2.17.
2.19 Un sistema lineal e invariante en el tiempo se describe mediante la ecuación en
diferencias
          𝑦(𝑛) − 0.5𝑦(𝑛 − 1) + 0.25𝑦(𝑛 − 2) = 𝑥 (𝑛) + 2𝑥 (𝑛 − 1) + 𝑥(𝑛 − 3)
   1. Usando la función de filtro, calcule y grafique la respuesta al impulso del sistema
      sobre 0 ≤ 𝑛 ≤ 100
      a=[1 -0.5 0.25];
      b=[1 2 0 1 ];
      [delta,n]=impseq(0,0,100);
      h=filter(b,a,delta);
      stem(h)
      title('Impulso')
      ylabel('h[n]');
      xlabel('n');
   2. Determine la estabilidad del sistema a partir de esta respuesta al impulso.
      El sistema es estable dada la gráfica anterior
   3. Si la entrada a este sistema es x (n) = [5 + 3 cos (0.2πn) + 4 sin (0.6πn)] u (n),
      determine la respuesta y (n) sobre 0 ≤ n ≤ 200 usando la función de filtro.
      a=[1 -0.5 0.25];
      b=[1 2 0 1 ];
      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);
      stem(y)
      Hf_1=figure;
      Hs=stem(n,y,'filled');
        set(Hs,'markersize',2);
        title('Respuesta de salida')
        xlabel('n');
        ylabel('v(n)');
2.20 Un diferenciador digital "simple" viene dado por
                                  𝑦(𝑛) = 𝑥 (𝑛) − 𝑥(𝑛 − 1)
que calcula una diferencia de primer orden hacia atrás de la secuencia de entrada.
Implementar este diferenciador en las siguientes secuencias y graficar los resultados.
Comenta sobre la idoneidad de este simple diferenciador
   1.   x(n) = 5[u(n) − u(n − 20)] un pulso rectangular
        a=1;
        b=[1 -1];
        n1=[0:22];
        [x11,nx11]=stepseq(0,0,22);
        [x12,nx12]=stepseq(20,0,22);
        x1=5.*(x11-x12);
        y1=filter(b,a,x1);
        stem(y1)
        title('Respuesta de salida para pulso rectangular')
        ylabel('h[n]');
        xlabel('n');
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:21];
     [x11,nx11]=stepseq(0,0,21);
     [x12,nx12]=stepseq(10,0,21);
     [x13,nx13]=stepseq(20,0,21);
     x2=n2.*(x11-x12)+(20-n2).*(x12-x13);
     y2=filter(b,a,x2);
     stem(y2)
     title('Respuesta de salida para pulso rectangular')
     ylabel('V[n]');
     xlabel('n');
                   πn
3.   𝑥(𝑛) = sin ( 25 )[𝑢(𝑛) − 𝑢(𝑛 − 100)] un pulso sinusoidal
     a=1;
     b=[1 -1];
     n3=[0:101];
     [x11,nx11]=stepseq(0,0,101);
     [x12,nx12]=stepseq(100,0,101);
     x13=x11-x12;
     x3=sin(pi*n3/25).*x13;
     y3=filter(b,a,x3);
     stem(y3)
     title('Respuesta de salida para pulso senoidal')
     ylabel('V[n]');
     xlabel('n');