Sei sulla pagina 1di 6

PROCESAMIENTO DIGITAL DE SEALES

LABORATORIO No. 1
GRFICO DE SEALES PERIDICAS Y NO PERIDICAS. OPERACIN DE
CONVOLUCIN ENTRE SECUENCIAS DISCRETAS.
1.

OBJETIVOS:
1.1
1.2
1.3

2.

Graficar seales peridicas discretas en el tiempo.


Graficar seales no peridicas discretas en el tiempo.
Realizar la operacin de convolucin entre seales discretas.

RESUMEN Y EJEMPLOS:
Graficando seales contnuas y discretas. Impulso y Escaln Unitario.
Para representar una seal en forma continua se hace uso del comando o
funcin plot. Esta se encarga de unir los puntos dando una apariencia de
continuidad. Por otro lado, para graficar una seal discreta, se utiliza el
comando o funcin stem, que se encarga de graficar mediante impulsos,
la seal a representar. Continuacin un ejemplo, ver la figura 1.3.
>> n = [ 0 1 2 3 4 5 6 ];
%tiempo discreto
>> x = [ 5 9 3 -4 0 8 7 ];
%seal discreta
>> figure(1)
>> subplot(1 , 2 , 1 ) , plot ( n , x)
%grfico continuo
>> title ( Seal Contnua ), xlabel (tiempo )
>> subplot(1 , 2, 2 ) , stem ( n , x)
%grfico discreto
>> title ( Seal Discreta ), xlabel (tiempo )

Seal Contnua

Seal Discreta

10

10

-2

-2

-4

-4

tiempo

Figura 1.3

Una seal impulso:


>> n1 = [ 0 : 7];

4
tiempo

Ejemplo de seal continua y discreta.

2 [n - 1]

>> x1 = 2 * [ 0 1 0 0 0 0 0 0];
Una seal escaln:
-5 [ n]
>> n2 = [ -20 : 1 : 20];
>> x2 = -5 * [ zeros( 1, 20 ) ones(1,21) ];

Una seal de ruido entre 0 y 1: r[n]


>> r3 = rand ( 1, 1000 );
>> n3 = 0 :1: 999;
>> subplot(3,1,1), stem ( n1 , x1 )
>> subplot(3,1,2), stem( n2 , x2 )
>> subplot(3,1,3), stem( n3 , r3 )

%ver figura1.4

15

20

0
-2
-4
-6
-20

-15

-10

-5

10

0.5

Figura 1.4

2.1

100

200

300

400

500

600

700

800

900

1000

Ejemplo de seal impulso, escaln y ruido.

Graficando una seal sinusoidal.


Para representar una seal seno o coseno en el Matlab, debe de indicarse la
variable temporal sealando el tiempo de duracin de la onda. Por ejemplo,
para graficar una seal seno de frecuencia igual a 3 Hz, amplitud igual a 2
voltios y fase igual a 90, se aplica el siguiente procedimiento.
Discretizando una seal Senoidal continua, para luego
dominio del tiempo discreto.
x(t) = A * sin (2*pi*f *t + fase )

graficarla en el

Para discretizar, reemplazamos t por nT en la expresin anterior.


x[nT] = sin (2*pi*f*nT + fase)
Donde: T es el periodo de muestreo o 1/Fs
x[ n] = sin(2*pi*f*n / Fs + fase)
>> Fs = 100;
>> n = 0:Fs-1;
>> fase = 90;
>> A = 2;
>> F = 3;

%frecuencia de muestreo

%frecuencia fundamental:

>> x = A * sin ( 2*pi* F*n / Fs + fase*pi/180);


>> stem ( n , x ,r )

% Fs> 2*F
% Ver figura 1.5

2
1.5
1
0.5
0
-0.5
-1
-1.5
-2

10

20

30

40

Figura 1.5

50

60

70

80

90

100

Ejemplo de seal sinusoidal.

Sumando un ruido a la seal seno:


>> r = length(x);
>> R = randn(1,r);
>> xR = 2*x + R;
>> subplot( 1 , 2 , 1) , plot( n , xR)
>> subplot( 1 , 2 , 2) , stem( n , xR)
Cuando no se cumple con el teorema de muestreo, se tiene una
representacin equivocada de la seal discreta. Por ejemplo, a continuacin
se grafica una onda seno con frecuencia fundamental igual a 20 Hz y
frecuencia de muestreo igual a 30 Hz. En este caso no se cumple la relacin
de tener una Fs > 2 * Fo.
>> Fs = 30;
>> F = 20;
>> n = 0:Fs-1;
>> Fase = 90;
>> x = sin ( 2*pi* F*n / Fs + fase*pi/180);
>> stem ( n , x ,b )
>> hold on
>> plot( n , x , r )
>> hold off

% utilizado para congelar la


% figura y %volver a graficar
% sobre ella. Ver figura 1.6

1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6

Figura 1.6

10

15

20

25

Seal sinusoidal distorsionada.

30

Tambin es posible graficar otros tipos de seales peridicas tal como es el


caso de la onda cuadrada. Por lo tanto, para graficar la onda cuadrada, un
tren de pulsos, o una modulacin por ancho de pulso, se utiliza el comando
o funcin del Matlab denominado: SQUARE.
>> help square
>> Fs = 1000;
>> t = linspace( 0 ,1 , Fs );
>> x = 1 + square( 2 * pi * t * 4 , 20 );
>> plot( t , x )

%ver figura 1.7

2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0

Figura 1.7

2.2

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Seal tren de pulsos obtenido de la onda cuadrada.

Graficando una seal no peridica.


Las ltimas versiones del Matlab cuentan con comandos o funciones que
permiten representar y posteriormente graficar seales de no peridicas, tal
es el caso de la seal de electrocardiograma. Para ello, se utiliza la funcin
o comando ECG, que permitir graficar un latido cardiaco mostrando las
ondas P, Q, R, S y T.
Considerando que el latido corresponde a una persona sana, entonces
obtenemos el tiempo de duracin para un latido cardiaco: 70 lat / min.
>> help ecg
>> x = ecg(1000);
>> Lat = 60 / 70;
>> t = linspace( 0 , Lat , 1000 );
>> plot( t , x ), grid
>> text(0.35,0.7, 'Complejo QRS')

% considerando 1000 muestras


% tiempo de duracin de un latido
% 70 latidos por minuto
% ver figura 1.8

1
0.8
Complejo QRS
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1

0.1

Figura 1.8

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

Seal sinusoidal distorsionada.

Asimismo, para graficar la funcin SINC, se utiliza el comando o funcin


SINC. Tal como es mostrado en la figura 1.8.

f (t ) sin c( )

sen( )

>> theta=linspace(-10,10,100);
>> w =sinc( theta );
>> subplot( 1 , 2 , 1) ,
>> plot(t,W)
>> subplot( 1 , 2 , 2) ,
>> stem(t,W)
2.3

%Forma Contnua. Figura 1.9


%Forma Discreta. Figura 1.9

Convolucin.
Para realizar la convolucin entre dos seales finitas, o secuencias, habr
que definir cada una de ellas en un vector, y luego utilizar el comando
CONV. Por ejemplo, hacer la convolucin entre x[n], h1[n] y h2[n].
1

0.8

0.8

0.6

0.6

0.4

0.4

0.2

0.2

-0.2

-0.2

-0.4
-10

-5

Figura 1.9

10

-0.4
-10

-5

Funcin SINC. En forma continua y discreta.

x[n] [n] 4 [n 1] 5 [n 3] 6 [n 4]

h1[n] [n] 2 [n 5]
h 2 [n] 0.5 [n 7] 8 [n 8] 17 [n 9]

x [n]

h1[n]

h2 [n]

y [n]

>> x = [ 1 4 0 5 6 ];
>> h1 = [ 1zeros(1,4) -2 ];
>> h2 = [ zeros(1,7) -0.5 8 17 ];
>> y1 = conv( x , h1 );
% o tambin conv( h1 , x )
>> y = conv( y1 , h2 );
% o tambin conv( h2 , y1 )
>> stem( 0:length(y) -1 , y )
% ver figura 1.10

10

150
100
50
0
-50
-100
-150
-200
-250
-300

Figura 1.10

3.

10

12

14

16

18

Resultado de la convolucin.

PROCEDIMIENTO :
3.1

Graficar 750 mili segundos de una seal triangular. Dicha seal deber tener
una frecuencia igual a 12 Hz, una amplitud igual a 1.5 voltios y un nivel DC
igual a -0.75 voltios.

3.2

Graficar 10 latidos cardiacos, uno a continuacin del otro, de tal forma que el
primer, quinto y octavo latido tengan una duracin de 0.9 segundos,
mientras que los latidos restantes tengan una duracin de 0.7 segundos.

3.3

Del diagrama de bloques mostrado (figura 1.11), obtener la seal de salida.


Para ello, se plantea dos filtros digitales representados en el tiempo discreto
h1[n] y h2[n], as como tambin una seal de ruido representada por r[n].
Considerar:
x [ n ] = [n] - 2 [n-2]
h1 [ n ] = [n] - 8 [n-1] + 3 [n-2 ]
h2 [ n ] = 2 [n - 1] + 2 [n - 3]
r[n]= seal de rudo
3
[n]

+
x[
n]

Figura 1.11

r[
n]

h1[
n]

y[
n]

h2[
n]

Diagrama de bloques por analizar.

INFORME FINAL
- Realizar y presentar cada una de los ejercicios propuestos en el procedimiento
(Trabajo de casa 10 puntos)
-

Realizar el anlisis terico y compararlo con la simulacin realizada para el


ejercicio 3.3.
(Trabajo domiciliario 5puntos).

Observaciones y conclusiones.

Potrebbero piacerti anche