PROCESAMIENTO DIGITAL DE SEÑALES LABORATORIO No. 1 GRÁFICO DE SEÑALES PERIÓDICAS Y NO PERIÓDICAS. OPERACIÓN DE CONVOLUCIÓN ENTRE SECUENCIAS DISCRETAS. 1. OBJETIVOS: 1.1 1.2 1.3
Graficar señales periódicas periódicas discretas en el tiempo. Graficar señales no periódicas discretas en el tiempo. Realizar la operación de convolución entre señales discretas. discretas .
2. RESUMEN Y EJEMPLOS: Graficando señales “contínuas” y discretas. Impulso y Escalón Unitario. Para representar una señal en forma continua se hace uso del comando o función “plot”. Esta se encarga de unir los puntos dando una apariencia de continuidad. Por otro lado, para graficar una señal discreta, se utiliza el comando o función “stem”, que se encarga de graficar mediante impulsos, la señal a representar. Continuación 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 ]; %señal discreta >> figure(1) >> subplot(1 , 2 , 1 ) , plot ( n , x) %gráfico “continuo” >> title ( „Señal Contínua‟ ), xlabel („tiempo‟ ) >> subplot(1 , 2, 2 ) , stem ( n , x) %gráfico discreto >> title ( „Señal „Señal Discreta ), xlabel („tiempo‟ („tiempo‟ )
Señal Contínua
Señal Discreta
10
10
8
8
6
6
4
4
2
2
0
0
-2
-2
-4
0
2
4
6
-4
0
tiempo
Figura 1.3
Una señal impulso: >> n1 = [ 0 : 7];
2
4 tiempo
Ejemplo de señal continua y discreta.
2 [n - 1]
6
>> x1 = 2 * [ 0 1 0 0 0 0 0 0];
Una señal escalón:
-5 [ n]
>> n2 = [ -20 : 1 : 20]; >> x2 = -5 * [ zeros( 1, 20 ) ones(1,21) ];
Una señal 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
2
1
0 0
1
2
3
4
5
6
7
0 -2 -4 -6 -20
-15
-10
-5
0
5
10
15
20
1
0.5
0 0
Figura 1.4
2.1
100
200
300
400
500
600
700
800
900
1000
Ejemplo de señal impulso, escalón y ruido.
Graficando una señal sinusoidal. Para representar una señal seno o coseno en el Matlab, debe de indicarse la variable temporal señalando el tiempo de duración de la onda. Por ejemplo, para graficar una señal seno de frecuencia igual a 3 Hz, amplitud igual a 2 voltios y fase igual a 90 º, se aplica el siguiente procedimiento. Discretizando una señal 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 expresión 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 0
10
20
30
40
Figura 1.5
50
60
70
80
90
100
Ejemplo de señal sinusoidal.
Sumando un ruido a la señal 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 representación equivocada de la señal discreta. Por ejemplo, a continuación 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 relación 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
0
5
Figura 1.6
10
15
20
25
Señal sinusoidal distorsionada.
30
También es posible graficar otros tipos de señales periódicas tal como es el caso de la onda cuadrada. Por lo tanto, para graficar la onda cuadrada, un tren de pulsos, o una modulación por ancho de pulso, se utiliza el comando o función 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 0
Figura 1.7
2.2
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Señal tren de pulsos obtenido de la onda cuadrada.
Graficando una señal no periódica. Las últimas versiones del Matlab cuentan con comandos o funciones que permiten representar y posteriormente graficar señales de no periódicas, tal es el caso de la señal de electrocardiograma. Para ello, se utiliza la función 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 duración 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 duración 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
0.1
Figura 1.8
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Señal sinusoidal distorsionada.
Asimismo, para graficar la función SINC, se utiliza el comando o función “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 Contínua. Figura 1.9 %Forma Discreta. Figura 1.9
Convolución. Para realizar la convolución entre dos señales finitas, o secuencias, habrá que definir cada una de ellas en un vector, y luego utilizar el comando “CONV”. Por ejemplo, hacer la convolución entre x[n], h 1[n] y h2[n]. 1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
-0.2
-0.2
-0.4 -10
-5
0
5
Figura 1.9
10
-0.4 -10
-5
0
Función SINC. En forma continua y discreta.
x[n] [n] 4 [n 1] 5 [n 3] 6 [n 4] h1[n]
[n]
2 [n 5]
h2 [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 también conv( h1 , x ) >> y = conv( y1 , h2 ); % o también conv( h2 , y1 ) >> stem( 0:length(y) -1 , y ) % ver figura 1.10
5
10
150
100
50
0
-50
-100
-150
-200
-250
-300 0
2
4
Figura 1.10
6
8
10
12
14
16
18
Resultado de la convolución.
3. PROCEDIMIENTO : 3.1
Graficar 750 mili segundos de una señal triangular. Dicha señal 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 continuación del otro, de tal forma que el primer, quinto y octavo latido tengan una duración de 0.9 segundos, mientras que los latidos restantes tengan una duración de 0.7 segundos.
3.3
Del diagrama de bloques mostrado (figura 1.11), obtener la señal de salida. Para ello, se plantea dos filtros digitales representados en el tiempo discreto h1[n] y h2[n], así como también una señal 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]= señal de ruído r[
3
+
h1[
+
X
x
h2[
Figura 1.11 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 análisis teórico y compararlo con la simulación realizada para el ejercicio 3.3. (Trabajo domiciliario – 5puntos).
-
Observaciones y conclusiones.