Está en la página 1de 13

Práctica II laboratorio de DSP

Jesus Santander, Universidad de Carabobo 11/06/15

Tratamiento con sistemas discretos.

1. Genere un sistema que introduzca un eco de la señal de entrada. Para lograr este sistema, la
señal de entrada se suma con una versión escalada por α (0<α<1) y retardada k muestras.

Describa el sistema con la ecuación en diferencia

y[n] = x[n] − α · x[n − k]

Obtenga analíticamente la expresión de la función de transferencia.

y[n] = x[n] − α · x[n − k]

y(z) = x(z) − α · z −k · x(z)


y(z)
= 1 − α · z −k
x(z)
H(z) = 1 − α · z −k

Grafique en Octave el diagrama de polos y ceros. para α=0.7 y k=10 muestras.

1 w=linspace(0,2*pi,1000); %Vector de frecuencia


2 h=1-0.7.*exp(-1i.*w.*10); %F. de transferencia
3 figure(1)
4 plot(w,abs(h))
5 xlabel(’Frecuencia [rad/s]’)
6 ylabel(’Amplitud’)
7 grid on
8
9 figure(2)
10 b=[1 0 0 0 0 0 0 0 0 0 -0.7]; %Num
11 a=1; %Denom
12 zplane(b,a)
13 xlabel(’Parte real’)
14 ylabel(’Parte imaginaria’)

Práctica № II Página 1 de 13
Figura 1: Diagrama de polos y ceros

Figura 2: Función de transferencia

Práctica № II Página 2 de 13
Repita el apartado anterior para diferentes valores de α y k.
Para k=5 y α = 1

Figura 3: Diagrama de polos y ceros

Figura 4: Función de transferencia

Práctica № II Página 3 de 13
Grafíque en Octave el diagrama de bode. Analice esta gráfica para α=0.7 y k=10 mues-
tras.

1 b=[1 0 0 0 0 0 0 0 0 0 -0.7];
2 a=1;
3 sys = tf(b,a,0.1,’Variable’,’z^-1’); %sistema con formato para DSP
4 bode(sys)

Figura 5: Función de transferencia

Repita el apartado anterior para diferentes valores de α y k.


Para α=0.9 y k=10

Figura 6: Función de transferencia

Práctica № II Página 4 de 13
Implemente el sistema utilizando la ecuación en diferencia.

1 // Plantilla de trabajo para la USB Stick 5505


2 #include "stdio.h"
3 #include "dsplib.h"
4 #include "math.h"
5 #include "usbstk5505.h"
6 #include "aic3204.h"
7
8 #define Fs 48000 // Frecuencia de muestreo, se puede utilizar 48kHz←-
,
9 // 24kHz, 16kHz, 12kHz, 9600Hz,8kHz y 6857Hz.
10 #define G 30 // Ganancia (dB). Si se utiliza microfono utilizar 30←-
dB.
11
12 DATA *x1;
13 DATA *x2;
14 DATA *x;
15 DATA *y;
16 int i;
17 int c = 0;
18 long int j = 0;
19 void main(void)
20 {
21 USBSTK5505_init( ); // Inicializacion de la tarjeta
22 aic3204_hardware_init(); // Configuracion del codec en la ←-
tarjeta
23 aic3204_init(); // Inicializacion del codec de audio AIC3204
24 set_sampling_frequency_and_gain(Fs, G); // Conf. de frecuencia ←-
de muestreo y ganancia
25
26 for(i = 0 ;i < 24000; i++) //Establenciendo condiciones←-
iniciales
27 {
28 x[i]= 0;
29 }
30 while(j <= 96000) //Para un tiempo de reproduccion de 2s
31 {
32 aic3204_codec_read(x1,x2);
33 x[c]= x1[c] + x2[c]; //Asumiendo que el microfono es←-
mono
34
35 if(c < 10){
36 y[c]= x[c] - 22937*x[23989+c];
37 }

Práctica № II Página 5 de 13
38 else if(c >= 10){
39 y[c] = x[c] - 22937*x[c-10];
40 }
41 aic3204_codec_write(*y,*y);
42 c++;
43 if(c == 23999) c=0;
44 j++;
45 }
46 aic3204_disable(); // Desabilitar codec AIC3204
47 }

Implemente el sistema utilizando la función FIR de la librería DSPLIB.

La función de transferencia en el dominio n queda definida de la siguiente forma:


h[n] = δ[n] − α · δ[n − k]

1 // Plantilla de trabajo para la USB Stick 5505


2 #include "stdio.h"
3 #include "dsplib.h"
4 #include "math.h"
5 #include "usbstk5505.h"
6 #include "aic3204.h"
7
8 #define Fs 48000 // Frecuencia de muestreo, se puede utilizar 48kHz←-
,
9 // 24kHz, 16kHz, 12kHz, 9600Hz,8kHz y 6857Hz.
10 #define G 30 // Ganancia (dB). Si se utiliza microfono utilizar 30←-
dB.
11
12 DATA *x1;
13 DATA *x2;
14 DATA *x;
15 DATA *y;
16 DATA h[]={32768,0,0,0,0,0,0,0,0,0,-22937};
17 int i= 0;
18 DATA dbuffer[24000];
19 void main(void)
20 {
21 USBSTK5505_init( ); // Inicializacion de la tarjeta
22 aic3204_hardware_init(); // Configuracion del codec en la ←-
tarjeta
23 aic3204_init(); // Inicializacion del codec de audio AIC3204
24 set_sampling_frequency_and_gain(Fs, G); // Conf. de frecuencia ←-
de muestreo y ganancia
25
26

Práctica № II Página 6 de 13
27 for(i = 0 ;i < 24000; i++)
28 {
29 aic3204_codec_read(x1,x2);
30 x[i]= x1[i] + x2[i];
31 }
32 fir (x, h, y, dbuffer, 24000, 11);
33 aic3204_codec_write(*y,*y);
34 aic3204_disable(); // Desabilitar codec AIC3204
35 }

2. Genere un sistema de reverberación. Para lograr este sistema, la entrada del sistema se
suma con una versión de la salida escalada por "α"(0<α<1) y retardada "k"muestras.

Describa el sistema con la ecuación en diferencia.

y[n] = x[n] + α · x[n − k]

Obtenga analíticamente la expresión de la función de transferencia.

y[n] = x[n] + α · x[n − k]

y(z) = x(z) + α · z −k · x(z)


y(z)
= 1 + α · z −k
x(z)
H(z) = 1 + α · z −k

Grafique en Octave el diagrama de polos y ceros. Para α=0.7 y k=10 muestras.

1 w=linspace(0,2*pi,1000); %Vector de frecuencia


2 h=1-0.7.*exp(-1i.*w.*10); %F. de transferencia
3 figure(1)
4 plot(w,abs(h))
5 xlabel(’Frecuencia [rad/s]’)
6 ylabel(’Amplitud’)
7 grid on
8
9 figure(2)
10 b=[1 0 0 0 0 0 0 0 0 0 0.7]; %Num
11 a=1; %Denom
12 zplane(b,a)
13 xlabel(’Parte real’)
14 ylabel(’Parte imaginaria’)

Práctica № II Página 7 de 13
Figura 7: Diagrama de polos y ceros

Figura 8: Función de transferencia

Práctica № II Página 8 de 13
Repita el apartado anterior para diferentes valores de α y k. Para α = 0,5 y k=5

Figura 9: Diagrama de polos y ceros

Figura 10: Función de transferencia

Práctica № II Página 9 de 13
Grafíque en Octave el diagrama de bode. Analice esta gráfica para α=0.7 y k=10 mues-
tras.

1 b=[1 0 0 0 0 0 0 0 0 0 0.7];
2 a=1;
3 sys = tf(b,a,0.1,’Variable’,’z^-1’); %sistema con formato para DSP
4 bode(sys)

Figura 11: Función de transferencia

Repita el apartado anterior para diferentes valores de α y k.


Para α=0.9 y k=10

Figura 12: Función de transferencia

Práctica № II Página 10 de 13
Implemente el sistema utilizando la ecuación en diferencia para un valor de α y k donde
éste sea estable.

1 // Plantilla de trabajo para la USB Stick 5505


2 #include "stdio.h"
3 #include "dsplib.h"
4 #include "math.h"
5 #include "usbstk5505.h"
6 #include "aic3204.h"
7
8 #define Fs 48000 // Frecuencia de muestreo, se puede utilizar 48kHz←-
,
9 // 24kHz, 16kHz, 12kHz, 9600Hz,8kHz y 6857Hz.
10 #define G 30 // Ganancia (dB). Si se utiliza microfono utilizar 30←-
dB.
11
12 DATA *x1;
13 DATA *x2;
14 DATA *x;
15 DATA *y;
16 int i;
17 int c = 0;
18 long int j = 0;
19 void main(void)
20 {
21 USBSTK5505_init( ); // Inicializacion de la tarjeta
22 aic3204_hardware_init(); // Configuracion del codec en la ←-
tarjeta
23 aic3204_init(); // Inicializacion del codec de audio AIC3204
24 set_sampling_frequency_and_gain(Fs, G); // Conf. de frecuencia ←-
de muestreo y ganancia
25
26 for(i = 0 ;i < 24000; i++) //Establenciendo condiciones←-
iniciales
27 {
28 x[i]= 0;
29 }
30 while(j <= 96000) //Para un tiempo de reproduccion de 2s
31 {
32 aic3204_codec_read(x1,x2);
33 x[c]= x1[c] + x2[c]; //Asumiendo que el microfono es←-
mono
34
35 if(c < 10){
36 y[c]= x[c] + 22937*x[23989+c];

Práctica № II Página 11 de 13
37 }
38 else if(c >= 10){
39 y[c] = x[c] + 22937*x[c-10];
40 }
41 aic3204_codec_write(*y,*y);
42 c++;
43 if(c == 23999) c=0;
44 j++;
45 }
46 aic3204_disable(); // Desabilitar codec AIC3204
47 }

3. Genere un sistema que distorsione por saturación (Fuzz). Para lograr este sistema, sola-
mente se debe limitar la amplitud de la señal de entrada entre -X y X. Siendo X es un valor
constante menor a la amplitud máxima de la señal de entrada.

Implemente el sistema mediante ecuaciones en diferencia utilizando como señal de


entrada el audio suministrado por el profesor.

1 // Plantilla de trabajo para la USB Stick 5505


2 #include "stdio.h"
3 #include "dsplib.h"
4 #include "math.h"
5 #include "usbstk5505.h"
6 #include "aic3204.h"
7
8 #define Fs 48000 // Frecuencia de muestreo, se puede utilizar 48kHz←-
,
9 // 24kHz, 16kHz, 12kHz, 9600Hz,8kHz y 6857Hz.
10 #define G 0 // Ganancia (dB). Si se utiliza microfono utilizar 30dB←-
.
11
12 DATA *x;
13 DATA *y;
14 DATA *arg;
15 int j = 0;
16 int i;
17
18 void main(void)
19 {
20 USBSTK5505_init( ); // Inicializacion de la tarjeta
21 aic3204_hardware_init(); // Configuracion del codec en la ←-
tarjeta
22 aic3204_init(); // Inicializacion del codec de audio AIC3204

Práctica № II Página 12 de 13
23 set_sampling_frequency_and_gain(Fs, G); // Conf. de frecuencia ←-
de muestreo y ganancia
24
25 for(i = 0 ; i <= 24000; i++){
26 arg = 1486 + arg; //argumento del seno formato q.15 frecuencia ←-
1KHz
27 sine(arg,x,2);
28 }
29 while( j < 24000){
30 if( x[j] >= 25000){
31 y[j] = 25000;
32 }
33 else if(x[j] <= -25000){
34 y[j] = -25000;
35 }
36 else{
37 y[j] = x[j];
38 }
39 aic3204_codec_write(*y,*y);
40 j++;
41 }
42 aic3204_disable(); // Desabilitar codec AIC3204
43 }

Práctica № II Página 13 de 13

También podría gustarte