You are on page 1of 31

Universidad de Ibagu Programa de Ingeniera Electrnica Circuitos V PRCTICA POR PROYECTO No.

1 Introduccin General a Matlab - Generacin de Scripts - Seales Bsicas Convolucin Stephany Florez Meneses cd.: 2420052005 Miguel Alonso Castro cd.: 2420061014

1.1 La representacin grfica de seales discretas se realiza generalmente con la funcin stem() de Matlab. El siguiente conjunto de instrucciones permite generar y graficar una onda senoidal en tiempo discreto de 30 muestras.

clear all; n=-10:19; %generacin del vector de instantes seno = sin(n/2 + 10); %generacin de la seal seno discreta stem (seno); % generacion seal en tiempo discreto xlabel ( 'instantes n' ); ylabel ( ' seno (n) ' );

1.2 Analice las instrucciones y determine la funcin de los principales comandos. Utilice el help para obtener mayor informacin.

Stem: grafica en tiempo discreto Sin(x): seno de X dado en radianes.

1.3 Ejecute desde la lnea de comandos de Matlab las instrucciones dadas en *1.1. Analice la respuesta obtenida. Verifique si la numeracin del eje horizontal corresponde con los valores de la seal seno.

El programa ejecutado se observa que el eje horizontal no muestra el rango de -10 a 19, empieza desde 0. Ejecucin programa n= Columns 1 through 9 -10 -9 -8 -7 -6 -5 -4 -3 -2 Columns 10 through 18 -1 0 1 2 3 4 5 6 7

Columns 19 through 27 8 9 10 11 12 13 14 15 16

Columns 28 through 30 17 18 19

>> seno seno = Columns 1 through 5 -0.9589 -0.7055 -0.2794 0.2151 0.6570 Columns 6 through 10 0.9380 0.9894 0.7985 0.4121 -0.0752 Columns 11 through 15 -0.5440 -0.8797 -1.0000 -0.8755 -0.5366 Columns 16 through 20 -0.0663 0.4202 0.8038 0.9906 0.9349 Columns 21 through 25 0.6503 0.2065 -0.2879 -0.7118 -0.9614 Columns 26 through 30 -0.9756 -0.7510 -0.3425 0.1499 0.6055

1.4 Modifique el programa dado en *1.1. para corregir el problema detectado en el numeral anterior. Consigne los resultados.

>> clear all >> n=-10:19; >> seno=sin(n/2+10); >> stem(n,seno); >> xlabel ('Instantes n'); >> ylabel ('Seno(n)');

Ejecucin del programa:

1 seno vs. n 0.8 0.6 0.4 0.2 Seno(n) 0 30 -0.2 -0.4 -0.6 10 -0.8 -1 -10 20 40 60

50

-5

5 Instantes n

10

15

20

Ejecucin programa n= Columns 1 through 9 -10 -9 -8 -7 -6 -5 -4 -3 -2 Columns 10 through 18

-1

Columns 19 through 27 8 9 10 11 12 13 14 15 16

Columns 28 through 30 17 18 19 >> seno seno = Columns 1 through 5 -0.9589 -0.7055 -0.2794 0.2151 0.6570 Columns 6 through 10 0.9380 0.9894 0.7985 0.4121 -0.0752 Columns 11 through 15 -0.5440 -0.8797 -1.0000 -0.8755 -0.5366 Columns 16 through 20 -0.0663 0.4202 0.8038 0.9906 0.9349 Columns 21 through 25 0.6503 0.2065 -0.2879 -0.7118 -0.9614 Columns 26 through 30 -0.9756 -0.7510 -0.3425 0.1499 0.6055

2 EJECUTANDO UN SCRIPT.
2.1 % Ejemplo de script: Nombre de archivo:rang_mag--- Determina el rango de un cuadrado mgico

Clear all; r= zeros(1,32); for n= 3:32 r(n)= rank(magic(n)); end r bar(r) %

2.2 DESCRIPCION DE LAS FUNCIONES. zeros = crea un vector de ceros Rank= la funcin rango proporciona una estimacin del numero de filas linealmente independientes o columnas de una matriz completa Bar= grafico de barras que muestra valores vectores o matrices en forma vertical u horizontal. Magic= M = magic (n) devuelve una matriz n-por-n construido a partir de los enteros del 1 al n ^ 2 con la fila y la igualdad de sumas de las columnas. FUNCIONAMIENTO DEL PROGRAMA El programa pone en r los valores independientes de filas linealmente independientes en un cuadro mgico que tiene orden n (lo que hace es sumar los elementos de la fila columna diagonal) y luego muestra r a travs de un grafico de barras verticales.

Ejecucin programa

r= Columns 1 through 9 0 0 3 3 5 5 7 3 9

Columns 10 through 18 7 11 3 13 9 15 3 17 11

Columns 19 through 27 19 3 21 13 23 3 25 15 27

Columns 28 through 32 3 29 17 31 3

2.3 Bar= grafico de barras que muestra valores vectores o matrices en forma vertical y barh grafica de barras en forma horizontal.
35

30

25

20

15

10

10

15

20

25

30

35

El vector r incrementa 2unidades (desde x=5 con amplitud 5 hasta x=31 amplitud 31) cada dos posiciones des 3 hasta 31, tambin se observa que en x=3 y x=4 su amplitud es 3 pasando lo mismo cada 4 posiciones. Parece que estuviera representando armnicos con sus respectivos productos intermodulados.

2.4 r(n)= incrementa el vector r 2 unidades cada dos posiciones desde 2 hasta 32. 2.5 Comando Whos
>> whos Name Size n r 1x1 1x32

Bytes Class 8 double 256 double

Attributes

3 GENERACION DE SEALES DISCRETAS


3.1 Seal senosoidal Clear all m=50; % Cantidad de muestras frec=40; % frecuencia de la seal en Hz Tsample=3/frec; % periodo de muestreo en segundos n=-(m-1)/2:(m-1)/2; nT=n*Tsample; y=sin(2*pi*frec*nT); plot(nT,y) title('Seal Discreta'); xlabel('nT') ylabel('Magnitud') % instantes demuestreo

Grafica
8 x 10
-14

Seal Discreta

m a gn itu d

-2

-4

-6

-8 -2

-1.5

-1

-0.5

0 nT

0.5

1.5

Workspace

3.2 Plot= esta seal representa la grafica punto a punto (x,y) Esta funcin no representa la seal discreta para representar la seal discreta se toma la funcin stem

Clear all m=50; % Cantidad de muestras frec=40; % frecuencia de la seal en Hz Tsample=0.2/frec; % periodo de muestreo en segundos n=-(m-1)/2:(m-1)/2; nT=n*Tsample; y=sin(2*pi*frec*nT); plot (nT,y) title('Seal Discreta'); xlabel('nT') ylabel('Magnitud') % instantes demuestreo

Grafica
Seal Discreta 1

0.8

0.6

0.4

0.2 M a g nitu d

-0.2

-0.4

-0.6

-0.8

-1 -0.2

-0.15

-0.1

-0.05 nT

0.05

0.1

0.15

Esta grafica representa una seal senosiodal , en funciones enteras la seal no es peridica, en vez de las seales con fraccionarios o racionales la seal si es peridica.

3.3 Funcin stem. Script

clear all m=50; % Cantidad de muestras frec=40; % frecuencia de la seal en Hz Tsample=0.2/frec; % periodo de muestreo en segundos n=-(m-1)/2:(m-1)/2; nT=n*Tsample; y=sin(2*pi*frec*nT); stem (nT,y) title('Seal Discreta'); xlabel('nT') ylabel('Magnitud') % instantes demuestreo

Grafica
Seal Discreta 1

0.8

0.6

0.4

0.2 M a gn itu d

-0.2

-0.4

-0.6

-0.8

-1 -0.2

-0.15

-0.1

-0.05 nT

0.05

0.1

0.15

Esta grafica mustrala representacin en tiempo discreto con la funcin stem ya que en ella aparecen solo los valores de n.

3.4 Seal Escaln


clear all; inter= -30:30; t = inter; y = zeros (1, length(t)); A = 10; T =15; desp = find (t >= T); y(desp) = A; stem(t,y,'r') title('escalon'); xlabel('t'); ylabel('Y(desp)');

% intervalos min y max

%amplitud %rango desplazamiento %desplazamiento seal

Grafica

3.5 Intervalo de -50 a 50 Amplitud de 5 Desplazamiento 10

Grafica

3.6 Seal Rampa


clear all k = -20:20; n = 5; t= n+k; x = k; axis([-10 25 -10 25]); stem(x, t,'magent') xlabel('k'); ylabel('x(k)'); title('RAMPA DISCRETA') % intervalos min y max %dezplazamiento % funcin rampa para x % define xmax xmin ymax ymin) %seal discreta

Grafica
RAMPA DISCRETA 25 20 15 10 x(k) 5 0 -5 -10 -15 -20

-15

-10

-5

0 k

10

15

20

3.7 Intervalo de -10 a 5


clear all k = -10:5; n = 8; t= n+k; x = k; axis([-10 5 -10 5]); stem(x,t,'magent') xlabel('k'); ylabel('x(k)'); title('RAMPA DISCRETA')

% intervalos min y max % amplitud %dezplazamiento % funcin rampa para x % define xmax xmin ymax ymin) %seal discreta

Grafica

3.8 Funcin exponencial.


clear all; A=2; n=[-5:5]; nc=0; F= A.^(n-nc); stem(n,F,'m'); title('Seal Exponencial'); xlabel('instantes n'); ylabel('Magnitud');

%base positiva o negativa %intervalo %inicio

Grafica

3.9 Intervalo de -15 a 1 5 Base=-0.5 Inicio =5

clear all; A=-0.5; n=[-15:15]; nc=5; F= A.^(n-nc); stem(n,F,'m'); title('Exponencial'); xlabel('instantes n'); ylabel('Magnitud');

%Base positiva o negativa %intervalo %inicio

Grafica

4 CONVOLUCION.

4.1 Utilizando ejemplo de clase se tomo la siguiente Convolucion: X(n)= [1,2,3,1] H(n)=[1,2,1,-1] 1 2 1 -1 1 2 3 1 1 2 1 -1 2 4 2 3 6 + 1 1 4 8 8 Script
clear all; %utilizando ejemplo de clase nx=4; %numero x nh=4; %numero h x1=1; x2=2; x3=3; x4=1; n1=[0 1 2 3]; x=[x1 x2 x3 x4]; h1=1; h2=2; h3=1; h4=-1; n2=[0 1 2 3]; h=[h1 h2 h3 h4]; % t1=h1*x1; t2=h1*x2; t3=h1*x3; t4=h1*x4; %multiplicacin de x*h t5=h2*x1; t6=h2*x2; t7=h2*x3; t8=h2*x4; t9=h3*x1; t10=h3*x2; t11=h3*x3; t12=h3*x4; t13=h4*x1; t14=h4*x2; t15=h4*x3; t16=h4*x4; % s1=t1; s2=t2+t5; s3=t3+t6+t9; s4=t4+t7+t10+t13; s5=t8+t11+t14; %suma s6=t12+t15; s7=t16; % S=[s1 s2 s3 s4 s5 s6 s7]; %matriz suma y=S longitudy=(nx+nh)-1 n=[0 1 2 3 4 5 6]; % subplot(3,1,1) stem(n,y,'b'); title('y(n)=x(n)*h(n)'); xlabel('muestras'); ylabel('y(n)'); subplot(3,1,2) stem(n1,x,'k'); xlabel('muestras'); ylabel('h(n)'); subplot(3,1,3) stem(n2,h,'m'); xlabel('muestras'); ylabel('x(n)');

-2 3 -3 2 1 -1 3 -2 -1

Grafica

Comprobando con el ejercicio desarrollado en clase se obtiene el mismo resultado de la Convolucion. y= 1 4 8 8 3 -2 -1

longitudy = 7 >> tic >> toc Elapsed time is 2.158669 seconds. >>

4.2 Comprobando script con otros resultados. X(n)= [5,-3,0,6] H(n)=[-2,4,3,2,1,4]

-2 4 3 2 1 4 5 -3 0 6 -10 20 15 10 5 20 6 -12 - 9 -6 - 3 0 0 0 0 + -12 24 18 -10 26 3 -11 23 35 Script

-12 0 0 12 6 24 0 6 24

clear all; %utilizando ejemplo de clase nx=4; %numero x nh=6; %numero h x1=5; x2=-3; x3=0; x4=6; n1=[0 1 2 3]; x=[x1 x2 x3 x4]; h1=-2; h2=4; h3=3; h4=2; h5=1; h6=4; n2=[0 1 2 3 4 5]; h=[h1 h2 h3 h4 h5 h6]; % t1=h1*x1; t2=h1*x2; t3=h1*x3; t4=h1*x4; %multiplicacin de x*h t5=h2*x1; t6=h2*x2; t7=h2*x3; t8=h2*x4; t9=h3*x1; t10=h3*x2; t11=h3*x3; t12=h3*x4; t13=h4*x1; t14=h4*x2; t15=h4*x3; t16=h4*x4; t17=h5*x1; t18=h5*x2; t19=h5*x3; t20=h5*x4; t21=h6*x1; t22=h6*x2; t23=h6*x3; t24=h6*x4; % s1=t1; s2=t2+t5; s3=t3+t6+t9; s4=t4+t10+t13; s5=t8+t11+t14+t17; %suma s6=t12+t15+t18+t21; s7=t16+t19+t22; s8=t20+t23; s9=t24; % S=[s1 s2 s3 s4 s5 s6 s7 s8 s9]; %matriz suma y=S longitudy=(nx+nh)-1 n=[0 1 2 3 4 5 6 7 8]; % subplot(3,1,1) stem(n,y,'m'); title('y(n)=x(n)*h(n)'); xlabel('muestras'); ylabel('y(n)'); subplot(3,1,2) stem(n1,x,'b'); xlabel('muestras'); ylabel('h(n)'); subplot(3,1,3) stem(n2,h,'r'); xlabel('muestras'); ylabel('x(n)');

Grafica

Empleando commando tic y toc

>> tic >> toc Elapsed time is 2.112410 seconds. >>

1 -3 0 5 4 12 5 8 12 14 16 5 -15 0 25 20 60 8 -24 0 40 32 96 12 -36 0 60 -48 144 14 -42 0 70 56 168 + 16 -48 0 80 64 192 5 7 12 3 34 104 214 280 232 192

Script
clear all; %convolucion nx=4; %numero x nh=4; %numero h x1=5; x2=8; x3=12; x4=14;x5=16; n1=[0 1 2 3 4]; x=[x1 x2 x3 x4 x5]; h1=1; h2=-3; h3=0; h4=5; h5=4; h6=12; n2=[0 1 2 3 4 5]; h=[h1 h2 h3 h4 h5 h6]; % t1=h1*x1; t2=h1*x2; t3=h1*x3; t4=h1*x4; t5=h1*x5; %multiplicacin de x*h t6=h2*x1; t7=h2*x2; t8=h2*x3; t9=h2*x4; t10=h2*x5; t11=h3*x1; t12=h3*x2; t13=h3*x3; t14=h3*x4; t15=h3*x5; t16=h4*x1; t17=h4*x2; t18=h4*x3; t19=h4*x4; t20=h4*x5; t21=h5*x1; t22=h5*x2; t23=h5*x3; t24=h5*x4; t25=h5*x5; t26=h6*x1; t27=h6*x2; t28=h6*x3; t29=h6*x4; t30=h6*x5; % s1=t1; s2=t2+t6; s3=t3+t7+t11; s4=t4+t8+t12+t16; s5=t5+t9+t13+t17+t21; %suma s6=t10+t14+t18+t22+t26; s7=t15+t19+t23+t27; s8=t20+t24+t28; s9=t25+t29; s10=t30; % S=[s1 s2 s3 s4 s5 s6 s7 s8 s9 s10]; %matriz suma y=S longitudy=(nx+nh)-1 n=[0 1 2 3 4 5 6 7 8 9]; % subplot(3,1,1) stem(n,y,'b'); title('y(n)=x(n)*h(n)'); xlabel('muestras'); ylabel('y(n)'); subplot(3,1,2) stem(n1,x,'k'); xlabel('muestras'); ylabel('x(n)'); subplot(3,1,3) stem(n2,h,'m'); xlabel('muestras'); ylabel('h(n)');

Grafica

y(n)=x(n)*h(n) 300 200 y (n ) 100 0 -100 0 1 2 3 4 muestras 5 6 7 8 9

20 x (n )

10

0.5

1.5

2 muestras

2.5

3.5

20 10 h (n ) 0

-10

0.5

1.5

2.5 muestras

3.5

4.5

y= 5 -7 -12 3 34 104 214 280 232 192

longitudy = 7 >> tic >> toc Elapsed time is 1.760051 seconds. >>

4.3 Utilizando la funcin conv() Script


clear all; nx=4; %numero x nh=4; %numero h x=[1 2 3 1]; n1=[0 1 2 3]; h=[1 2 1 -1]; n2=[0 1 2 3]; % y=conv(x,h); n=[0 1 2 3 4 5 6]; %numero de sumas que se realizan % longitudy=(nx+nh)-1 % subplot(3,1,1) stem(n,y,'b'); title('y(n)=x(n)*h(n)'); xlabel('muestras'); ylabel('y(n)'); subplot(3,1,2) stem(n1,x,'r'); xlabel('muestras'); ylabel('x(n)'); subplot(3,1,3) stem(n2,h,'k'); xlabel('muestras'); ylabel('h(n)');

Grafica

Empleando commando tic y toc >> tic >> toc Elapsed time is 1.894789 seconds.

4.4 Usando funcin deconv()

deconv()= division de polinomios.

[q,r]=deconv(x,h)donde:

Q es el cociente de la divisin de los dos polinomios R es el residuo divisin de los dos polinomios (residuo) X entrada a deconvolucionar h respuesta impulsional. Esta funcin permite atenuar el registro de las seales, por ello permite restaurar una imagen borrosa. Script()

clear all; nx=4; %numero x nh=4; %numero h x=[1 2 3 1]; n1=[0 1 2 3]; h=[1 2 1 -1]; n2=[0 1 2 3 ]; % [q,r]=deconv(x,h); % longitudy=(nx+nh)-1 % subplot(3,1,1) stem([q,r],'M'); title('[q,r]=x(n)/h(n)'); xlabel('muestras'); ylabel('y(n)'); subplot(3,1,2) stem(n1,x,'B'); xlabel('muestras'); ylabel('x(n)'); subplot(3,1,3) stem(n2,h,'R'); xlabel('muestras'); ylabel('h(n)');

Grafica

El instante n=0 en la secuencia de salida arrojada por la funcin deconv() se podra establecer de la siguiente forma: ( cuando el vector Q tiene elemento nulo, de lo contrario no servira. [q,r]=deconv(x,h); % x= entrada h=respuesta impulsional n=[0 1 2 3 n] % subplot(3,1,1) stem(n,R,'r'); title('[Q,R]=x(n)/h(n)'); de esta manera se podra corregir el instante=0.

Conclusiones

El programa MATLAB es una herramienta til para el diseo de algoritmos, generar seales etc. Puesto que es un lenguaje de alto nivel el cual facilita el diseo de algoritmos debido al gran nmero de comandos que este contiene. Se comprob el concepto de frecuencia en seales discretas, al realizar el ejercicio de la seal senoidal en el cual se toma el valor del periodos de seal entere, el resultado de la seal era no peridica adems que su amplitud no era la unidad tal; al cambiar el periodo a un nmero racional se observo que la seal se vuelve peridica y se obtiene una grfica consistente.

Al emplear los comandos tic y toc se observo que el tiempo de ejecucin es menor en las funciones de matlab que con un algoritmo diseado para realizar el mismo calculo.

You might also like