Sei sulla pagina 1di 19

UNAS FIPS EPIS

PROCESAMIENTO DIGITAL DE SEALES


PRIMERA PRCTICA
SEALES Y SISTEMAS EN MATLAB


1. OBJETIVOS
Construir seales discretas
Implementar funciones sobre seales discretas

2. MARCO TERICO

2.1 Seal

Una seal es una portadora fsica de informacin (adquirida por algn sistema de medicin
o sensado), que dependen de la naturaleza de la informacin (mientras una seal de audio
es presin de aire, una imagen es una onda de luz). Pueden ser representadas
matemticamente como una funcin de una o ms variables, que suelen depender del
tiempo.

2.2 Seales discretas

Una seal x[n] en tiempo discreto, es una funcin de una variable independiente entera
(nmero de muestra), es decir est definida solo para valores enteros del argumento


Seal discreta
Las seales discretas ms usadas son:















III. ACTIVIDADES

Para los ejercicios siguientes:
Indicar los comandos de MatLab que us
Consignar las tabulaciones y las grficas obtenidas para las funciones construidas
Al final de todas las actividades incluir un anexo con el help de todos los comandos
utilizados
En todas las grficas generadas indique a que actividad corresponden y etiquete
adecuadamente los ejes usando los comandos usando title, ylabel, xlabel)



Grficos Bsicos

1. Construir la grfica siguiente

x = [1 3 0.5 2.5 2];
y = [0 1 2 3 4];
plot(y,x)


2. Cambiar el comando plot por el comando stem, reconozca el tipo de seales graficada
en ambos casos, indique que representa la segunda seal


Impulso unitario
3. Usando el editor de MatLab crear la funcin, comente cada lnea

function[x,n]=impseq1(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)==0];
stem(n,x);





function[x,n]=impseq2(n0,n1,n2)
n=[n1:n2];
x=zeros(size(n));
x(n0-n1+1)=1;
stem(n,x);

>> help impseql

creamos un vector que va desde el valor que el usuario le da a n1 hasta n2
la amplitud por defecto es 1
creamos un vector x al que asignamos el valor del vector n, siempre y
cuando al restarle n0 el resultado sea 0
realizamos la grafica


>> help impseq2

creamos un vector n con elementos que estan entre n1 y n2
creamos un vector x de ceros con el mismo tamao del vector n
asigno 1 al elemento del vector x en la posicion n0-n1+1
realizamos la graficamos


identifique que hacen las funciones, corra el help generado

4. Utiliza la funcin para genera un impulso en n=5 visualizando entre -2 y 8 el nmero de
muestras

>> impseq2(5,-2,8)
ans =
0 0 0 0 0 0 0 1 0 0 0

5. Agregar el comando grid on.


6. Modifique la funcin para darle al pulso una amplitud A, donde A sera el cuarto
parmetro de entrada

function[x,n]=impseq2_6(n0,n1,n2,a)
%creamos un vector n con elementos que estan entre n1 y n2
%creamos un vector x de ceros con el mismo tamao del vector n
%asigno el valor a al elemento del vector x en la posicion n0-n1+1
%graficamos
n=[n1:n2];
x=zeros(size(n));
x(n0-n1+1)=a;
stem(n,x);
grid on


7. Repita 5 considerando un pulso de amplitud 4 en n=5 visto de -5 a 15

>> impseq2_6(5,-5,15,4)
ans =
Columns 1 through 12
0 0 0 0 0 0 0 0 0 0 4 0
Columns 13 through 21
0 0 0 0 0 0 0 0 0

8. Modifique las propiedades del grfico en trminos de colores y smbolo (genere al
menos tres variantes.

























-5 0 5 10 15
0
0.5
1
1.5
2
2.5
3
3.5
4



-5 0 5 10 15
0
0.5
1
1.5
2
2.5
3
3.5
4
-5 0 5 10 15
0
0.5
1
1.5
2
2.5
3
3.5
4
-5 0 5 10 15
0
0.5
1
1.5
2
2.5
3
3.5
4
9. Agregar leyenda al grfico usando el comnado legend

Escaln unitario
10. Usando el editor de MatLab crear la funcin, comente cada lnea
function[x,n]=stepseq(n0,n1,n2)
n=[n1:n2];
x=[(n-n0)>=0];
stem(n,x);




11. Utilice la funcin para genera un escaln a partir de n=4 visualizando entre -2 y 8 el
nmero de muestras, colocar los nombres y leyendas respectivas

>> stepseq_10(4,-2,8)
ans =
0 0 0 0 0 0 1 1 1 1 1


-5 0 5 10 15
0
0.5
1
1.5
2
2.5
3
3.5
4


impulso unitario
-2 -1 0 1 2 3 4 5 6 7 8
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
n
u
(
n
)
Escalon Unitario Discreto


Escalon unitario
>> help stepseq_10
Creamos un vector n con elementos que van desde n1 hasta n2
realizamos la comparacion booleana, si los elementos de x son
mayores o iguales a cero, graficamos


12. Modifique la funcin para darle al escaln una amplitud A, donde A sera el cuarto
parmetro de entrada

function[x,n]=stepseq_12(n0,n1,n2,a)
%Creamos un vector n con elementos que van desde n1 hasta n2
%realizamos la comparacion booleana, si los elementos de x son
%mayores o iguales a cero, graficamos
n=[n1:n2];
x=[(n-n0)>=a];
stem(n,x);
legend('Escalon unitario')
title('Escalon Unitario Discreto')
xlabel('n')
ylabel('u(n)')


13. Repita 12 para generar un escaln de amplitud -4 a partir de n=4 visualizando muestras
entre -2 y 15


Exponencial
Una secuencia exponencial responde a la expresin:

x[n] = C z^n Donde C y z son, en general, nmeros complejos.

14. Construya las siguientes exponenciales, identifique en cada caso si es unipolar o
bipolar, creciente o decreciente
n1=0;n2=20;
n=[n1:n2];
x=0.25.^n;
stem(n,x);

decreciente unipolar

o
n = 0:0.1:10;
x=0.25.^n;
stem(n,x);

decreciente unipolar

El comando n = 0:0.1:10; define el vector con componentes de rango de 0 a 10 en pasos de 0.1; La
funcin x = 0.25.^n; define un vector con componentes 0.25.^(0.1), 0.25.^(0.2), 0.25.^(0.3), etc.

n = 0:20;
x=-5.^n;
stem(n,x);

unipolar


n1=0;n2=10;
n=[n1:n2];
x=exp((2+3j)*n);
stem(n,x);

bipolar

n1=0;n2=10;
n=[n1:n2];
x=exp((0.2+0.3*j)*n);
stem(n,x);

bipolar


Uso del comando subplot
El comando subplot nos permite desplegar en pantalla varias grficas. subplot(m,n,a) 'm' y 'n' son
una matriz que representa las cantidades de grficas que se van desplegar; 'a' indicara el lugar que
ocupara la grfica en el subplot.

15. Crear un programa en matlab donde grafique la seal, la parte real, la parte imaginaria, el
mdulo y la fase por separado; usando subplot, de cualquier exponencial compleja, usar los
comnados real, imag, abs, phase

%se define la ecuacion x=(0.5+2*j).^t
%graficamos la seal, la parte real, imaginaria, fase y modulo
%con el comando subplot

t=0:20
x=(0.5+2*j).^t
subplot(2,3,1)
stem(t, x,'r','*'), title('seal: x=(0.5+2*j).^t')
grid on;

y1=real(x);
subplot(2,3,2)
stem(t, y1,'b','*'), title('real')
grid on;

y2 = imag(x);
subplot(2,3,3)
stem(t, y2,'m','*'), title('imaginaria')
grid on;

y3 = abs(x);
subplot(2,3,4)
stem(t, y3,'g','o'), title('modulo')
grid on;

y4 = phase(x);
subplot(2,3,5)
stem(t, y4,'r','+'), title('fase')
grid on;




Seal senoidal
16. Graficar la siguiente seal senoidal, identifique el periodo
n1=0;n2=60;
n=[n1:n2];
x=2*sin(0.2*pi*n+pi/3);

stem(n,x);
PERIODO: 10




17. Graficar la siguiente seal senoidal, observe que la suma tambin es peridica, identifique el
periodo
n1=0;n2=100;
n=[n1:n2];
x=2*sin(0.2*pi*n+pi/5)+sin(0.5*pi*n);
stem(n,x);

PERIODO: 10





CUESTIONARIO FINAL

1. Crear un programa en matlab donde se grafiquen las siguientes ondas: (use subplot), que
observa

cos(2n/32)
cos(2n2/32)
cos(2n4/32)
cos(2n8/32)
cos(2n12/32)

%se define el vector con componentes de rango de 0 a 20
%se crean las 5 funciones y se grafica con subplot

n1=0;n2=20;
n=[n1:n2];

y1 = cos(2*pi*n/32) ;
subplot(3,2,1), plot(n, y1), title('cos(2*pi*n/32)')
grid on
y2 = cos(2*pi*n*2/32) ;
subplot(3,2,2), plot(n, y2), title('cos(2*pi*n*2/32)')
grid on
y3 = cos(2*pi*n*4/32) ;
subplot(3,2,3), plot(n, y3), title('cos(2*pi*n*4/32)')
grid on
y4 = cos(2*pi*n*8/32) ;
subplot(3,2,4), plot(n, y4), title('cos(2*pi*n*8/32)')
grid on
y5 = cos(2*pi*n*12/32) ;
subplot(3,2,5), plot(n, y5), title('cos(2*pi*n*12/32)')
grid on




2. Forme y grafique el muestreo de las siguientes seales usando una razn de muestreo de l0 Hz
(10 muestras por segundo). Incluya las grficas en su informe
a. y1 = 2sen(6t);

b. y2 = 3exp(-2t)*cos(2t);
0 5 10 15 20
-1
0
1
cos(2*pi*n/32)
0 5 10 15 20
-1
0
1
cos(2*pi*n*2/32)
0 5 10 15 20
-1
0
1
cos(2*pi*n*4/32)
0 5 10 15 20
-1
0
1
cos(2*pi*n*8/32)
0 5 10 15 20
-1
0
1
cos(2*pi*n*12/32)
0 1 2 3 4 5 6 7 8 9 10
-2
-1.8
-1.6
-1.4
-1.2
-1
-0.8
-0.6
-0.4
-0.2
0
sen(6t)


c. sume un ruido escalado a 0.2 en y1. (use la funcin randn, y escriba help randn si no
sabe cmo usarla).



CONCLUSIONES

Emita al menos cinco conclusiones en torno al manejo de seales en MatLab
0 1 2 3 4 5 6 7 8 9 10
-0.5
0
0.5
1
1.5
2
2.5
3
3exp(-2t)*cos(2t)
0 1 2 3 4 5 6 7 8 9 10
-2
-1.5
-1
-0.5
0
0.5
funcion mas ruido escalado

1. Segn el ejemplo 15, pudimos comprobar que las secuencias sinusoidales,
y las secuencias exponenciales complejas son seales peridicas de perodo N si
, siendo N y r enteros; es decir, la frecuencia digital es un nmero racional


2. El software matlab nos permite simular diversas seales analgicas y discretas, a travs de
comandos sencillos de fcil uso para los usuarios
3. El desarrollo de la practica nos permitio conocer los diversos tipos de seales en tiempo
discreto, las cuales son representadas por una funcin de una variable independiente entera
x(n).






































ANEXOS

CUESTIONARIO

Actividad 1

%se define el vector con componentes de rango de 0 a 20
%se crean las 5 funciones y se grafica con subplot

n1=0;n2=20;
n=[n1:n2];

y1 = cos(2*pi*n/32) ;
subplot(3,2,1), plot(n, y1), title('cos(2*pi*n/32)')
grid on
y2 = cos(2*pi*n*2/32) ;
subplot(3,2,2), plot(n, y2), title('cos(2*pi*n*2/32)')
grid on
y3 = cos(2*pi*n*4/32) ;
subplot(3,2,3), plot(n, y3), title('cos(2*pi*n*4/32)')
grid on
y4 = cos(2*pi*n*8/32) ;
subplot(3,2,4), plot(n, y4), title('cos(2*pi*n*8/32)')
grid on
y5 = cos(2*pi*n*12/32) ;
subplot(3,2,5), plot(n, y5), title('cos(2*pi*n*12/32)')
grid on

Actividad 2

Parte a

function[x,t]=act_2a()
%graficamos el muestreo de sen(6t)
%usamos la razon de muestreo de 10 Hz
t=[0:10];
x=2*sin(6*t);
stem(t,x,'r','*') ;
title('sen(6t)')

Parte b

function[x,t]=act_2b()
%graficamos el muestreo de 3exp(-2t)*cos(2t);
%usamos la razon de muestreo de 10 Hz
t=[0:10];
x= 3*exp(-2*t).*cos(2*t);
stem(t,x,'g','*') ;
title('3exp(-2t)*cos(2t)')


Parte c

function[x,t]=act_2c()
%graficamos el muestreo de sen(6t)
%usamos la razon de muestreo de 10 Hz
%le aumentamos un ruido escalado de 0.2
t=[0:10];
x=2*sin(6*t);
y = x + 0.2*rand(size(t));
stem(t,y,'b','+') ;
title('funcion mas ruido escalado ' )

Potrebbero piacerti anche