LABORATORIO No. 1 DE SEÑALES Y SISTEMAS
JUAN CAMILO RODRÍGUEZ LUNA SARAY DANIELA ROA BLANCO
PROFESOR CARLOS JULIO ARIZMENDI PEREIRA
FACULTAD DE INGENIERÍA INGENIERÍA MECATRÓNICA 2017
INTRODUCCIÓN Matlab es una herramienta que, entre sus múltiples beneficios, permite representar gráficamente funciones. Un sistema discreto transforma entradas de tiempo discreto en salidas de tiempo discreto. Con el presente laboratorio se busca analizar y representar funciones discretas mediante el uso de Matlab.
OBJETIVOS Objetivo General Analizar funciones discretas y graficarlas haciendo uso de la herramienta Matlab. Objetivos Específicos Analizar con Matlab si una señal es periódica o no. Graficar diferentes tipos de señales que se encuentren en cualquier intervalo de tiempo. Investigar y aplicar el uso de distintos comandos como lo son: “real, imag, abs y angle” Entender e interpretar diferentes señales, para luego graficarlas manualmente.
MARCO TEÓRICO Comando abs angle imag plot real step subplot
Descripción Valor absoluto y magnitud compleja Devuelve los ángulos de fase, en radianes, para cada elemento del conjunto complejo Z. Devuelve la parte imaginaria de un número complejo Dibuja un gráfico. Crea un diagrama de línea 2-D de los datos en Y frente a los valores correspondientes en X Devuelve la parte real de un número complejo Dibuja la respuesta al escalón Divide la ventana Gráfico en secciones xlabel(txt) Etiqueta el eje x de los ejes o gráficos actuales devueltos por el comando. Reemitir el xlabel comando sustituye a la etiqueta antigua por la nueva. xlabel(target,txt) xlabel(target,txt) Agrega la etiqueta a los ejes o el gráfico especificado especificado por target.
X, Y label:
xlabel( ,Name,Value) Modifica Modifica el aspecto aspecto de la etiqueta etiqueta utilizando uno o más argumentos de par de nombre-valor. t = xlabel( ) Devuelve el objeto de texto utilizado como etiqueta x- axis. Se utiliza t para realizar modificaciones modificaciones futuras futuras en la etiqueta etiqueta después de que se cree.
Punto 1. Generar en Matlab y dibujar cada una de las secuencias sobre el intervalo indicado.
Punto 1-a: X(n)=2delta(n+2) – delta(n-4),
-5≤n≤5
Código: clear all, clc n1=-5, n2=5 p=2*impseq(-2, n1, n2)-impseq(4,n1,n2) %Se declara la ecuacion impulso usando la función impseq. n=[n1:n2]; %se declara la variable tiempo discreto en el rango especificado; Los";" stem(n,p) %Se grafican la señal con la función stem colocando primero la variable n para que quede el eje horizontal. xlabel('n') %Se usa la función xlabel y ylabel para darle los nombre a los ejes "x" y "y" respectivamente. ylabel('X[n]') title ('Punto 1-A') %Se usa la función title para darle el nombre a la grafica.
Punto 1-b: X(n)=n[u(n) – u(n-10)] + 10 e^(-0.3(n-10)) [u(n-10)- u(n-20)],
-0≤n≤20
Código: clear all close all clc n1= 0, n2=20 n=[0:20]; P=n.*((stepseq(0,n1,n2)-stepseq(10,n1,n2)))+(10.*exp((-3/10)*(n10)).*(stepseq(10,n1,n2)-stepseq(20,n1,n2))) %%Se declara la ecuacion escalón unitario usando la función stepseq. %en la linea 8 se utiliza ".*" para poder multiplicar al matriz. stem(n,P,'r') xlabel('n') ylabel('X[n]') title ('Punto 1-B')
Punto 1-c: X(n)= cos(0.04*pi*n) +0.2 w(n) -0≤n≤50, donde w(n) es una secuencia gaussiana aleatoria con media zero y varianza igual a uno. Código: clear all close all clc n1=0 n2=50 n=[0:50]; P=length(n)%Se usa la funcion length para crear un vector del mismo tamaño de la variable n. X=cos(0.04*pi*n)+0.2*randn(1,P)%Se declara la ecuación usando la funcion randn para crear la secuencia gaussiana aleatoria de tamaño igual a "n" con media cero y varianza uno. stem(n,X,'b') title('Punto 1C') xlabel('n') ylabel('X[n]')
Punto 1-d: ̌()
= {… . . ,5,4,3,2,1,5,4,3,2,1,5,4,3,2,1, … …}; −10 ≤ ≤ 9
Código: clear all close all clc n1=-10 n2=9 n=[-10:9] %se declara la variable tiempo discreto en el rango especificado. X=[5,4,3,2,1] Xinv=X'*ones(1,4)%Se invierte para realiazar la operacion y luego se vuelve a invertir Xtilde=(Xinv(:))' stem(n,Xtilde,'b') title('Punto 1D') xlabel('n') ylabel('x[n]')
Gráfica de las cuatro secuencias: Código: clear all, clc % A) n1=-5, n2=5 p=2*impseq(-2, n1, n2)-impseq(4,n1,n2) %Se declara la ecuacion impulso usando la función impseq. n=[n1:n2]; %se declara la variable tiempo discreto en el rango especificado; Los";" subplot(2,2,1) stem(n,p) %Se grafican la señal con la función stem colocando primero la variable n para que quede el eje horizontal. xlabel('n') %Se usa la función xlabel y ylabel para darle los nombre a los ejes "x" y "y" respectivamente. ylabel('X[n]') title ('Punto 1-A') %Se usa la función title para darle el nombre a la grafica. % % % B) n1= 0, n2=20 n=[0:20]; P=n.*((stepseq(0,n1,n2)-stepseq(10,n1,n2)))+(10.*exp((-3/10)*(n10)).*(stepseq(10,n1,n2)-stepseq(20,n1,n2))) %%Se declara la ecuacion escalón unitario usando la función stepseq. %en la linea 8 se utiliza ".*" para poder multiplicar al matriz. subplot(2,2,2) stem(n,P,'r') xlabel('n') ylabel('X[n]') title ('Punto 1-B') % %C) n1=0 n2=50 n=[0:50]; P=length(n)%Se usa la funcion length para crear un vector del mismo tamaño de la variable n. X=cos(0.04*pi*n)+0.2*randn(1,P)%Se declara la ecuación usando la funcion randn para crear la secuencia gaussiana aleatoria de tamaño igual a "n" con media cero y varianza uno. subplot(2,2,3) stem(n,X,'b') title('Punto 1C') xlabel('n') ylabel('X[n]') % % D) n1=-10 n2=9 n=[-10:9] %se declara la variable tiempo discreto en el rango especificado.
X=[5,4,3,2,1] Xinv=X'*ones(1,4)%Se invierte para realiazar la operacion y luego se vuelve a invertir Xtilde=(Xinv(:))' subplot(2,2,4) stem(n,Xtilde,'b') title('Punto 1D') xlabel('n') ylabel('x[n]')
Punto 2. Sea x(n)={1,2,3,4,5,6,7,6,5,4,3,2,1}, -2≤n≤-10
Punto 2-a: X1(n)=2x(n-5)-3x(n+4) Código: clear all close all clc n=[-2:1:10]; x=[1:1:7,6:-1:1]; [a,b]=sigshift(x,n,5); [c,d]=sigshift(x,n,-4); [y,z]=sigadd(2*a,b,-3*c,d); stem(z,y); title('Punto 2A (x1[n]=2x[n-5]-3x[n+4])'); xlabel('n'); ylabel('X[n]');
Punto 2-b: X2(n)=x(3-n) +x(n)x(n-2). Código: clear all close all clc n=[-2:1:10]; x=[1:1:7,6:-1:1]; [a,b]=sigfold(x,n); [a,b]=sigshift(a,b,3); [c,d]=sigshift(x,n,2); [c,d]=sigmult(x,n,c,d); [y,z]=sigadd(a,b,c,d); stem(z,y,'r'); xlabel('n') ylabel('X[n]') title('Punto 2B (x2[n]=x[3-n]+x[n]x[n-2])');
Punto 2-c: 3()
= ∑ 0.5 =0 Código: clear all close all clc n=[-2:1:10]; x3=2.*(1-0.5.^(n+1)); disp(x3); stem(n,x3,'k') title('Punto 2C (x3[n]=Sumatoria desde k=0 hasta k=n de 0.5^k)'); xlabel('n'); ylabel('X[n]');
Gráfica de las cuatro secuencias: Código: clear all close all clc subplot(2,2,1); n=[-2:1:10]; x=[1:1:7,6:-1:1]; [a,b]=sigshift(x,n,5); [c,d]=sigshift(x,n,-4); [y,z]=sigadd(2*a,b,-3*c,d); stem(z,y,'r'); title('Punto 2A (x1[n]=2x[n-5]-3x[n+4])'); xlabel('n'); ylabel('X[n]'); subplot(2,2,2); n=[-2:1:10]; x=[1:1:7,6:-1:1]; [a,b]=sigfold(x,n); [a,b]=sigshift(a,b,3); [c,d]=sigshift(x,n,2); [c,d]=sigmult(x,n,c,d); [y,z]=sigadd(a,b,c,d); stem(z,y,'b'); title('Punto 2B (x2[n]=x[3-n]+x[n]x[n-2])'); xlabel('n'); ylabel('X[n]'); subplot(2,2,3); n=[-2:1:10]; x3=2.*(1-0.5.^(n+1)); disp(x3); stem(n,x3,'k') title('Punto 3C (x3[n]=Sumatoria desde k=0 hasta k=n de 0.5^k)'); xlabel('n'); ylabel('X[n]');
Punto 2-1. Encontrar si son periódicas o no las señales y en caso de ser periódicas dibujar las gráficas , donde se puedan apreciar al menos 4 periodos de la señal. En caso de no ser periódicas dibujarlas utilizando 51 muestras centradas en zero.
Punto 2-1-a: X4(n)= cos(pi*n/6). Código: clear all close all clc %% n=0:50; P=cos((1/6)*pi*n)%Las funciones trigonoometricas son comandos de matlab y se usan para graficar todas las funciones en este punto. stem(n,P,'g') title('Punto 2-1A') xlabel('n') ylabel('x[n]')
Punto 2-1-b: X5(n)= cos(n/106). Código: clear all close all clc n=-25:26; P=cos((1/106)*n) stem(n,P,'b') title('Punto 2-1B') xlabel('n') ylabel('X[n]')
Punto 2-1-c: X6(n)= cos(56*pi*n/217). Código: clear all close all clc %% n=0:200; P=cos((56/217)*pi*n) stem(n,P,'o') title('Punto 2-1C') xlabel('n') ylabel('x[n]')
Punto 2-1-d: X7(n)= cos(2*pi*n). Código: clear all close all clc n=[0:1:4]; x7 = cos((2*pi.*n)); figure(4); stem(n,x7); xlabel('n'); ylabel('X[n]'); title('Punto 2-1D');
Punto 2-1-e: X8(n)= cos(0*n). Código: clear all close all clc
n=[-10:10] P = cos((0.*n)) stem(n,P,'r') xlabel('n') ylabel('X[n]') title('Punto 2-1E')
Punto 2-1-f: X9(n)= cos(7*pi*n/4). Código: clear all close all clc %% n=0:50; P=cos((7/4)*pi*n) stem(n,P,'b') title('Punto 2-1F') xlabel('n') ylabel('x[n]')
Punto 3. Generar la secuencia compleja, investigar a que corresponde la parte real, la parte imaginaria, la Magnitud y la fase de esta señal. X(n)=exp^((-0.1+j0.3)n).
-10≤n≤-10
Dibujar su magnitud, su fase, la parte real y la imaginaria en una sola grafica, buscar el uso de los comandos (real, imag, abs, y angle), en matlab la fase se puede encontrar utilizando (180/pi*angle()). Poner titulo a cada una de las subgráficas. Código: clear all close all clc n=-10:10; P=exp((-0.1+0.3j)*n) %% subplot(2,2,1) stem(n, real(P),'r') %Se grafica la parte real de la funcion "x" usando el comando real. title('Parte Real') ylabel('X[n]') xlabel('n') %% subplot(2,2,2) stem(n, imag(P),'b') %Se grafica la parte real de la funcion "x" usando el comando imag. title('Parte Imaginaria') ylabel('x[n]') xlabel('n') %% subplot(2,2,3) stem(n, abs(P),'b') %Se grafica la parte real de la funcion "x" usando el comando abs. title('Magnitud') ylabel('X[n]') xlabel('n') %% subplot(2,2,4) stem(n, 180/pi*angle(P), 'k') %Se grafica la parte real de la funcion "x" usando el comando angle. title('Fase') ylabel('X[n]') xlabel('n')
Punto 4. Punto 4.1 y 4.2 Encontrar algebraicamente y graficar, la parte par e impar de x(n). Si tenemos que x1(n)={1,- 2,4,6,-5,8,10}: Utilizar el comando evenodd para generar la parte par e impar de las tres secuencias descritas anteriormente, dibujarlas.
Punto 4.1-a: x(n) =u(n)-u(n-10) Código: clear all close all clc n=[0:1:10]; x=stepseq(0,0,10)-stepseq(10,0,10); [xe,xo,m]=evenodd(x,n); subplot(2,2,1); stem(m,xe); title('Parte Par de x[n]=u[n]-u[n-10]') xlabel('n'); ylabel('xe[n]'); subplot(2,2,2); stem(m,xo); title('Parte Impar de x[n]=u[n]-u[n-10]') xlabel('n'); ylabel('xo[n]');
Punto 4.1-b: x(n)= 5 x1(5+n)+4 x1(n+4)+3 x1(n). Código: clear all close all clc n=[0:1:6]; x1=[1 -2 4 6 -5 8 10]; [a,b]=sigshift(x1,n,-5); [c,d]=sigshift(x1,n,-4); [e,f]=sigadd(5*a,b,4*c,d); [y,z]=sigadd(e,f,3*x1,n); [xe,xo,m]=evenodd(y,z); subplot(2,2,1); stem(m,xe); title('Parte Par') xlabel('n'); ylabel('xe[n]'); subplot(2,2,3); stem(m,xo); title('Parte Impar') xlabel('n'); ylabel('xo[n]');
Punto 4.1-c: x(n)= 3 x1(2+n)+ x1(n+4)+3 x1(n). Código: clear all close all clc n=[0:1:6]; x1=[1 -2 4 6 -5 8 10]; [a,b]=sigshift(x1,n,-2); [c,d]=sigshift(x1,n,-4); [e,f]=sigadd(3*a,b,c,d); [y,z]=sigadd(e,f,3*x1,n); [xe,xo,m]=evenodd(y,z); subplot(2,2,1); stem(m,xe); title('Parte Par') xlabel('n'); ylabel('xe[n]'); subplot(2,2,3); stem(m,xo); title('Parte Impar') xlabel('n'); ylabel('xo[n]');
CONCLUSIONES
Por medio del Software Matlab podemos encontrar solución a secuencias y señales diseñadas para su respectivo análisis. Además, permite la discretización de dichas señales, representándolas gráficamente en forma de pulso, con su debida magnitud. Teniendo en cuenta las diferentes funciones en Matlab, se pueden generar graficas las cuales presentan una lectura de las mismas mucho más sencilla. Al trabajar señales análogas, pulsos, las gráficas obtenidas me muestran el comportamiento de una secuencia en determinada variación del tiempo.
BIBLIOGRAFÍA
MATLAB. (2016). 1st ed. Natick, MA: MathWorks. Oppenheim, A. and Willsky, A. (1998). Se n ̃ales y sistemas. Me ́ xico, D.F. [etc.]: Prentice-Hall Hispanoamericana.