Subido por DAVID CHIRME SISA

Diseño de filtros IIR y FIR en Matlab

Anuncio
U NIVERSIDAD NACIONAL DE S AN
A NTONIO A BAD DEL C USCO
FACULTAD DE I NGENIERÍA E LÉCTRICA ,
E LECTRÓNICA , I NFORMÁTICA Y M ECÁNICA
E SCUELA P ROFESIONAL DE I NGENIERÍA E LECTRÓNICA
SEÑALES ALEATORIAS, FILTROS DIGITALES IIR, FIR
Asignatura:
I NSTRUMENTACIÓN E LECTRÓNICA
Docente : Palomino Peña, Celso
Alumno :
: Chirme Sisa, David
Cusco - Perú
2022 - II
182960
Í NDICE GENERAL
1. Espectro de señales determinísticas
2
1.1. Estime el espectro de las siguientes señales determinísticas . . . . . . . . . . . . . .
2
1.1.1. Una señal sinusoidal con una frecuencia de 1.2 Hz . . . . . . . . . . . . . .
2
1.1.2. Una señal compuesta de varias sinusoides : 0.6 Hz, 2.4 Hz, 3.2 Hz. . . . . . .
3
1.2. Periodogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
1.3. Espectrogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2. Filtros digitales IIR - FIR
13
2.1. Filtro digital IIR Elíptico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.2. Filtro FIR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
3. Espectro de señales aleatorias y procesamiento de audio
21
3.1. Ruido Blanco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.2. Análisis de señales de voz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.2.1. Análisis de la vocal A . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.2.2. Análisis de la vocal E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
3.2.3. Análisis de la vocal I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.2.4. Análisis de la vocal O . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.2.5. Análisis de la vocal U . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4. Filtro adaptativo
38
1
C APÍTULO 1:
E SPECTRO DE SEÑALES DETERMINÍSTICAS
1.1.
1.1.1.
Estime el espectro de las siguientes señales determinísticas
Una señal sinusoidal con una frecuencia de 1.2 Hz
La señal que que se analizará es:
X(t) = sin(2π(1.2)t)
(1.1)
El código para generar la señal en el dominio del tiempo y la frecuencia se muestra a continuación:
% a ) onda senoidal de 1.2 Hz
% datos
3 f = 1.2; % frecuencia de la onda
4 Fs = 100; % frecuencia de muestreo >= 2 f
5 T = 1/ Fs ; % periodo de muestras
6 L = 500; % longitud de la onda
7 t = (0: L -1) * T ;
1
2
8
9X
= sin (2* pi * f * t ) ;
% grafica en el dominio del tiempo
11 subplot (2 , 1 , 1) ;
12 plot (t , X ) ; grid on
13 title ( 'X ( t ) en el tiempo ')
14 xlabel ( 't ( s ) ')
15 ylabel ( 'X ( t ) = sin (2\ pi 1.2 t ) ')
16 % dominio de la frecuencia
17 Y = fft ( X ) ;
18 P2 = abs ( Y / L ) ; % espectro bilateral
19 P1 = P2 (1: L /2+1) ; % espectro unilateral
20 P1 (2: end -1) = 2* P1 (2: end -1) ;
21 % graficar el espectro
22 subplot (2 , 1 , 2)
23 f = Fs *(0:( L /2) ) / L ;
24 plot (f , P1 ) ; grid on
25 title ( ' Espectro de X ( t ) ')
26 xlabel ( 'f ( Hz ) ')
27 ylabel ( '| P1 ( f ) | ')
10
En la figura 1.1 se tiene la onda en el tiempo y la frecuencia.
2
Figura 1.1: Señal en el tiempo y la frecuencia
1.1.2.
Una señal compuesta de varias sinusoides : 0.6 Hz, 2.4 Hz, 3.2 Hz.
Para este caso se tiene:
X(t) = sin(2π(0.6)t) + 0.5sin(2π(2.4)t) + 0.8sin(2π(3.2)t)
El código para generar las ondas en el tiempo y frecuencia se muestra a continuación:
% b ) onda compuesta de
% 2.4 Hz y 3.2 Hz
3 % datos
4 f1 = 0.6; % frecuencia
5 f2 = 2.4; % frecuencia
6 f3 = 3.2; % frecuencia
7 Fs = 100; % frecuencia
8 T = 1/ Fs ; % periodo de
9 L = 500; % longitud de
10 t = (0: L -1) * T ;
1
senoides de 0.6 Hz
2
de la onda1
de la onda2
de la onda3
de muestreo >= max ( f1 , f2 , f3 )
muestras
la onda
3
(1.2)
11
12 X
= sin (2* pi * f1 * t ) + 0.5* sin (2* pi * f2 * t ) + 0.8* sin (2* pi * f3 * t ) ;
% grafica en el dominio del tiempo
14 subplot (2 , 1 , 1) ;
15 plot (t , X ) ; grid on
16 title ( 'X ( t ) = sin (2\ pi (0.6) t ) + 0.5 sin (2\ pi (2.4) t ) + 0.8 sin (2\ pi (3.2) t ) ')
17 xlabel ( 't ( s ) ')
18 ylabel ( 'X ( t ) ')
19 % dominio de la frecuencia
20 Y = fft ( X ) ;
21 P2 = abs ( Y / L ) ; % espectro bilateral
22 P1 = P2 (1: L /2+1) ; % espectro unilateral
23 P1 (2: end -1) = 2* P1 (2: end -1) ;
24 % graficar el espectro
25 subplot (2 , 1 , 2)
26 f = Fs *(0:( L /2) ) / L ;
27 plot (f , P1 ) ; grid on
28 title ( ' Espectro de X ( t ) ')
29 xlabel ( 'f ( Hz ) ')
30 ylabel ( '| P1 ( f ) | ')
13
Figura 1.2: Señal en el tiempo y la frecuencia
4
1.2.
Periodogramas
Realice el cálculo del periodograma de una señal sinusoidal compuesta de tres frecuencias y amplitudes iguales. Grafique los resultados. Considere las frecuencias 0.2, 2, 6 Hz.
Evalué y compare resultados utilizando las ventanas de Hammning, Bartlet y Kaiser.
Asuma que la frecuencia de muestreo de la señal sinusoidal es de 8 kHz.
En procesamiento de señales, el periodograma es la densidad espectral de una señal dada por la
ecuación (1.3).
S( f ) = |X( f )|2
(1.3)
X(t) = sin(2π(0.2)t) + sin(2π(2)t) + sin(2π(6)t)
(1.4)
La señal a analizar es:
El código a continuación se encarga de calcular el periodograma de la señal y también usando las
ventanas Hamming, Bartlett y Kaiser.
% % periodogramas
clear ;
3 % parametros de la onda
4 f1 = 0.2; % frecuencia de la onda1
5 f2 = 2.0; % frecuencia de la onda2
6 f3 = 6.0; % frecuencia de la onda3
7 Fs = 8000; % frecuencia de muestreo
8 T = 1/ Fs ; % periodo de muestras
9 L = 2^ nextpow2 (68000) ; % longitud del vector
10 t = (0: L -1) * T ; % vector tiempo
1
2 clc ;
11
12 X
= sin (2* pi * f1 * t ) + sin (2* pi * f2 * t ) + sin (2* pi * f3 * t ) ;
% grafica en el dominio del tiempo
14 subplot (2 , 1 , 1) ;
15 plot (t , X ) ; grid on
16 title ( 'X ( t ) = sin (2\ pi (0.2) t ) + sin (2\ pi (2) t ) + sin (2\ pi (6) t ) ')
17 xlabel ( 't ( s ) ')
18 ylabel ( 'X ( t ) ')
19 % dominio de la frecuencia
20 Y = fft ( X ) ;
21 % periodograma - densidad espectral
22 SDP2 = (1/( L * Fs ) ) * abs ( Y ) .^2; % densidad bilateral
23 SDP1 = SDP2 (1: L /2+1) ;
24 % grafica del periodograma
25 subplot (2 , 1 , 2)
26 f = Fs *(0: L /2) / L ;
27 stem (f , SDP1 ) ; grid on
28 title ( ' Periodograma de X ( t ) ')
29 xlabel ( 'f ( Hz ) ')
30 ylabel ( '| P1 ( f ) |^2 ')
13
31
32
%periodograma unsando la ventana hamming
5
33 [ Sxx ,
f ] = periodogram (X , hamming ( length ( X ) ) ,[0.2 , 2.0 , 6.0] , Fs ) ;
% grafica del periograma
35 figure
36 stem (f , Sxx ) ; grid on
37 title ( ' Periodograma - Ventana Hamming X ( t ) ')
38 xlabel ( 'f ( Hz ) ')
39 ylabel ( '| P1 ( f ) |^2 ')
40 %periodograma unsando la ventana bartlett
41 [ Sxx , f ] = periodogram (X , bartlett ( length ( X ) ) ,[0.2 , 2.0 , 6.0] , Fs ) ;
42 % grafica del periograma
43 figure
44 stem (f , Sxx ) ; grid on
45 title ( ' Periodograma - Ventana Bartlett X ( t ) ')
46 xlabel ( 'f ( Hz ) ')
47 ylabel ( '| P1 ( f ) |^2 ')
48 %periodograma unsando la ventana kaiser
49 [ Sxx , f ] = periodogram (X , kaiser ( length ( X ) ) ,[0.2 , 2.0 , 6.0] , Fs ) ;
50 % grafica del periograma
51 figure
52 stem (f , Sxx ) ; grid on
53 title ( ' Periodograma - Ventana Kaiser X ( t ) ')
54 xlabel ( 'f ( Hz ) ')
55 ylabel ( '| P1 ( f ) |^2 ')
34
El resultado se muestra en la figura 1.3
Figura 1.3: Señal en el tiempo y el periodograma
6
Figura 1.4: El periodograma usando la ventana Hamming
Figura 1.5: El periodograma usando la ventana Bartlett
El periodograma lleva la información de densidad de potencia, y la comparación se muestra en la
table 1.1.
7
Figura 1.6: El periodograma usando la ventada Kaiser
Frecuencia (Hz)
Sin ventana
Vent. Hamming
Vent. Bartlett
Vent. Kaiser
0.2
2.0
2.0
3.287
3.357
2.990
3.012
3.004
3.006
3.077
3.072
3.072
4.173
4.083
4.098
Cuadro 1.1: Tabla de comparación de las ventanas
1.3.
Espectrogramas
1.3.a Calcule y grafique un espectrograma de banda ancha de una señal sinusoidal
compuesta de tres frecuencias y amplitudes iguales. Grafique los resultados. Considere
las frecuencias 0.2, 2, 6 Hz. Evalué y compare resultados utilizando las ventanas de
Hammning, Hanning
La señal a analizar es:
X(t) = sin(2π(0.2)t) + sin(2π(2)t) + sin(2π(6)t)
(1.5)
El código para generar la señal en el tiempo y el espectrograma de banda ancha se muestra a
continuación:
8
% parametros de la onda
= 0.2; % frecuencia de la onda1
3 f2 = 2.0; % frecuencia de la onda2
4 f3 = 6.0; % frecuencia de la onda3
5 Fs = 8000; % frecuencia de muestreo
6 T = 1/ Fs ; % periodo de muestras
7 L = 2^ nextpow2 (68000) ; % longitud del vector
8 t = (0: L -1) * T ; % vector tiempo
1
2 f1
9
10 X
= sin (2* pi * f1 * t ) + sin (2* pi * f2 * t ) + sin (2* pi * f3 * t ) ;
% grafica en el dominio del tiempo
12 subplot (2 , 1 , 1) ;
13 plot (t , X ) ; grid on
14 title ( 'X ( t ) = sin (2\ pi (0.2) t ) + sin (2\ pi (2) t ) + sin (2\ pi (6) t ) ')
15 xlabel ( 't ( s ) ')
16 ylabel ( 'X ( t ) ')
11
17
% espectrograma de banda ancha enfatiza cambios temporales
% con periodo de ventanas de 3 ms aprox
20 % el tiempo de duracion de la onda es T_total = T * length ( X ) *1000 [ ms ]
21 % la longitud de la ventana es WL = ( length ( X ) / T_total ) *3 = 24
22 % ventana hamming
23 nfft = 256;
24 window_length = 24;
25 window_func = hamming ( window_length ) ;
26 Noverlap = window_length /2; % numero de punto de solapamiento
27 % calculando el espectrograma
28 subplot (2 , 1 , 2) ;
29 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
30 title ( " Espectrograma de banda ancha - Ventana Hamming " ) ;
18
19
31
32
% grafica en el dominio del tiempo
33 figure
34 subplot (2 ,
1 , 1) ;
X ) ; grid on
36 title ( 'X ( t ) = sin (2\ pi (0.2) t ) + sin (2\ pi (2) t ) + sin (2\ pi (6) t ) ')
37 xlabel ( 't ( s ) ')
38 ylabel ( 'X ( t ) ')
39 % ventana hanning
40 nfft = 256;
41 window_length = 24;
42 window_func = hanning ( window_length ) ;
43 Noverlap = window_length /2; % numero de punto de solapamiento
44 % calculando el espectrograma
45 subplot (2 , 1 , 2) ;
46 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
47 title ( " Espectrograma de banda ancha - Ventana Hanning " ) ;
35 plot (t ,
9
Figura 1.7: Espectrograma de banda ancha con ventana Hamming
Figura 1.8: Espectrograma de banda ancha con ventana Hanning
10
1.3.b Calcule y grafique un espectrograma de banda angosta de una señal sinusoidal
compuesta de tres frecuencias y amplitudes iguales. Grafique los resultados. Considere
las frecuencias 0.2, 2, 6 Hz. Evalúe y compare resultados utilizando las ventanas de
Hammning, Hanning
El código se muestra a continuación:
% parametros de la onda
= 0.2; % frecuencia de la onda1
3 f2 = 2.0; % frecuencia de la onda2
4 f3 = 6.0; % frecuencia de la onda3
5 Fs = 8000; % frecuencia de muestreo
6 T = 1/ Fs ; % periodo de muestras
7 L = 2^ nextpow2 (68000) ; % longitud del vector
8 t = (0: L -1) * T ; % vector tiempo
1
2 f1
9
10 X
= sin (2* pi * f1 * t ) + sin (2* pi * f2 * t ) + sin (2* pi * f3 * t ) ;
% grafica en el dominio del tiempo
12 subplot (2 , 1 , 1) ;
13 plot (t , X ) ; grid on
14 title ( 'X ( t ) = sin (2\ pi (0.2) t ) + sin (2\ pi (2) t ) + sin (2\ pi (6) t ) ')
15 xlabel ( 't ( s ) ')
16 ylabel ( 'X ( t ) ')
11
17
% espectrograma de banda angosta enfatiza cambios de frecuencia
% con periodo de ventanas de 20 ms aprox , lo que implica WL = 160
20 % ventana hamming
21 nfft = 256;
22 window_length = 130;
23 window_func = hamming ( window_length ) ;
24 Noverlap = window_length /2;
25 % calculando el espectrograma
26 subplot (2 , 1 , 2) ;
27 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
28 title ( " Espectrograma de banda angosta - Ventana Hamming " ) ;
18
19
29
30
% grafica en el dominio del tiempo
31 figure
32 subplot (2 ,
1 , 1) ;
X ) ; grid on
34 title ( 'X ( t ) = sin (2\ pi (0.2) t ) + sin (2\ pi (2) t ) + sin (2\ pi (6) t ) ')
35 xlabel ( 't ( s ) ')
36 ylabel ( 'X ( t ) ')
37 % ventana hanning
38 nfft = 256;
39 window_length = 130;
40 window_func = hanning ( window_length ) ;
41 Noverlap = window_length /2; % numero de punto de solapamiento
42 % calculando el espectrograma
43 subplot (2 , 1 , 2) ;
44 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
45 title ( " Espectrograma de banda angosta - Ventana Hanning " ) ;
33 plot (t ,
11
Figura 1.9: Espectrograma de banda angosta con ventana Hamming
Figura 1.10: Espectrograma de banda angosta con ventana Hanning
12
C APÍTULO 2:
F ILTROS DIGITALES IIR - FIR
2.1.
Filtro digital IIR Elíptico
Evalúe el comportamiento de un filtro digital IIR Elíptico paso bajo de decimo orden,
cuya frecuencia de corte es 3.4 Khz y emplea una frecuencia de muestreo de 8 kHz.
Para generar un filtro digital de IIR elíptico se usa el código a continuación.
% requer imient os del filtro
= 3400; % frecuencia de corte
3 fs = 8000; % frecuencia de muestreo
4 [b , a ] = ellip (10 ,0.1 ,50 , fc /( fs /2) ) ; % creacion del filtro
5 freqz (b ,a ,[] , fs ) % diagrama de bode
1
2 fc
La respuesta en frecuencia del filtro se muestra en la figura 2.1.
Figura 2.1: Respuesta en frecuencia del filtro
13
a) Determinar la Respuesta al impulso.
El código para generar la respuesta al impulso se tiene a continuación:
1 fvtool (b ,a , ' Analysis ' , ' impulse ')
Figura 2.2: Respuesta al impulso del filtro
b) Determine su magnitud, fase y retardo de grupo
El código a continuación calcula la magnitud, fase y retardo de grupo.
1 n =512;
2 [ gd ,
f ] = grpdelay (b ,a ,n , fs ) ; % retardo de grupo
w ]= freqz (b ,a ,[] , fs ) ; % respuesta en frecuencia
4 angulo = unwrap ( angle ( h ) ) ; % obteniendo la fase
5 magnitud = mag2db ( abs ( h ) ) ; % magnitud en dB
6 subplot (3 ,1 ,1) ;
7 plot (w , magnitud )
8 title ( " Magnitud del filtro " ) ;
9 ylabel ( " Magnitud ( dB ) " )
10 xlabel ( " f ( Hz ) " )
11 subplot (3 ,1 ,2) ;
12 plot (w , angulo *180/ pi )
13 title ( " Fase del filtro " ) ;
14 ylabel ( " Fase (\ circ ) " )
15 xlabel ( " f ( Hz ) ) " )
16 subplot (3 ,1 ,3) ;
17 plot (f , gd )
18 title ( " Retardo de grupo del filtro " ) ;
19 ylabel ( " (\ circ ) / rad " )
20 xlabel ( " f ( Hz ) " )
3 [h ,
14
Figura 2.3: Magnitud, Fase y Retardo de grupo
c) Indique como probaría si el diseño del filtro esta de acuerdo a las especificaciones planteadas
Para comprobar el filtro se tiene que generar un onda con varios armónicos y hacer que el filtro
cumpla su trabajo. El código a continuación muestra la utilización del filtro.
1 fs
= 8000;
= 0:1/ fs :1;
3 f1 = 1000; % frecuencia 1
4 f2 = 2000; % frecuencia 2
5 f3 = 3000; % frecuencia 3
6 f4 = 3500; % frecuencia 4
7 f5 = 3600; % frecuencia 5
8 % onda generada
9 X = sin (2* pi * f1 * t ) + sin (2* pi * f2 * t ) + sin (2* pi * f3 * t ) ...
10
+ sin (2* pi * f4 * t ) + sin (2* pi * f5 * t ) ;
11 % onda filtrada
12 X_filt = filter (b , a , X ) ;
13 subplot (2 ,2 ,1) ;
14 plot (t , X )
15 title ( " Onda de prueba " ) ;
16 subplot (2 ,2 ,2) ;
17 profft (X , fs )
18 title ( " FFT de onda de prueba " ) ;
19 subplot (2 ,2 ,3) ;
20 plot (t , X_filt ) ;
21 title ( " Onda filtrada " ) ;
22 subplot (2 ,2 ,4) ;
23 profft ( X_filt , fs )
24 title ( " FFT de onda filtrada " ) ;
2t
15
Figura 2.4: Aplicación del filtro IIR
2.2.
Filtro FIR
Evalúe utilizando el comportamiento de un filtro digital FIR paso bajo de orden 10,
cuya frecuencia de corte es 3.4 kHz y emplea una frecuencia de muestreo de 8 kHz
El filtro se diseña usando el toolbox fdatool.
Exportando el filtro al workspace de Matlab, se tiene el siguiente código para usar estos filtros.
% numerador del filtro
-0.0708 , 0.0998 , -0.1241 , 0.1403 , 0.8273 , 0.1403 , -0.1241 , ...
3
0.0998 -0.0708 0.0412];
4 b = Num ;
5 a = 1;
6 %Filtro FIR de orden 10
7 freqz (b ,a ,[] , fs )
1
2 Num =[0.0412 ,
16
Figura 2.5: Diseño del filtro FIR
Figura 2.6: Respuesta en frecuencia del filtro FIR
a) Respuesta al impulso
1
%Respuesta al impulso
a , ' Analysis ' , ' impulse ')
2 fvtool (b ,
17
Figura 2.7: Respuesta al impulso del filtro FIR
b) Determine su magnitud, fase y retardo de grupo.
1
% Magnitud fase y retardo de grupo
2 n =512;
3 fs =8000;
4 [ gd ,
f ] = grpdelay (b ,a ,n , fs ) ; % retardo de grupo
w ] = freqz (b ,a ,[] , fs ) ; % respuesta en frecuencia
6 angulo = unwrap ( angle ( h ) ) ; % fase
7 magnitud = mag2db ( abs ( h ) ) ; % magnitud
8 subplot (3 ,1 ,1) ;
9 plot (w , magnitud )
10 title ( " Magnitud del filtro " ) ;
11 ylabel ( " Magnitud ( dB ) " )
12 xlabel ( " f ( Hz ) " )
13 subplot (3 ,1 ,2) ;
14 plot (w , angulo *180/ pi )
15 title ( " Fase del filtro " ) ;
16 ylabel ( " Fase (\ circ ) " )
17 xlabel ( " f ( Hz ) " )
18 subplot (3 ,1 ,3) ;
19 plot (f , gd )
20 title ( " Retardo de grupo del filtro " ) ;
21 ylabel ( " (\ circ ) / rad " )
22 xlabel ( " f ( Hz ) " )
5 [h ,
18
Figura 2.8: Magnitud, fase y retardo de grupo del filtro FIR
c) Indique como probaría si el diseño del filtro esta de acuerdo a las especificaciones planteadas
Para comprobar el filtro se tiene que generar un onda con varios armónicos y hacer que el filtro
cumpla su trabajo. El código a continuación muestra la utilización del filtro.
1 fs
= 8000;
= 0:1/ fs :1;
3 f1 = 1000; % frecuencia 1
4 f2 = 2000; % frecuencia 2
5 f3 = 3000; % frecuencia 3
6 f4 = 3500; % frecuencia 4
7 f5 = 3600; % frecuencia 5
8 % onda generada
9 X = sin (2* pi * f1 * t ) + sin (2* pi * f2 * t ) + sin (2* pi * f3 * t ) ...
10
+ sin (2* pi * f4 * t ) + sin (2* pi * f5 * t ) ;
11 % onda filtrada
12 X_filt = filter (b , a , X ) ;
13 subplot (2 ,2 ,1) ;
14 plot (t , X )
15 title ( " Onda de prueba " ) ;
16 subplot (2 ,2 ,2) ;
17 profft (X , fs )
18 title ( " FFT de onda de prueba " ) ;
19 subplot (2 ,2 ,3) ;
20 plot (t , X_filt ) ;
21 title ( " Onda filtrada " ) ;
22 subplot (2 ,2 ,4) ;
23 profft ( X_filt , fs )
24 title ( " FFT de onda filtrada " ) ;
2t
19
Figura 2.9: Aplicación del filtro FIR
Se observa que el filtro no es tan efectivo como filtro IIR, no obstante tiene un retardo de grupo
lineal.
20
C APÍTULO 3:
E SPECTRO DE SEÑALES ALEATORIAS Y PROCESAMIENTO DE AUDIO
3.1.
Ruido Blanco
Para generar el ruido blanco y representar en el dominio temporal y de la frecuencia se usa el
siguiente código:
% generando el ruido blanco
% considerando
3 Fs = 1000; % frecuencia de muestreo
4 L = 10000; % longitud del ruido
5 t = (0: L -1) / Fs ;
6 mu = 0;
7 sigma = 0.5;
8 RB = sigma * randn (L , 1) + mu ;
9 subplot (2 , 1 , 1) ;
10 plot (t , RB ) ;
11 title ( ' Ruido blanco ')
12 xlabel ( 't ( s ) ')
13 ylabel ( ' RB ( t ) ')
1
2
14
% espectro del ruido blanco
= fft ( RB ) ;
17 P2 = abs ( Y / L ) ; % espectro bilateral
18 P1 = P2 (1: L /2+1) ; % espectro unilateral
19 P1 (2: end -1) = 2* P1 (2: end -1) ;
20 % graficar el espectro
21 subplot (2 , 1 , 2) ;
22 f = Fs *(0:( L /2) ) / L ;
23 plot (f , P1 ) ; grid on
24 title ( ' Espectro del ruido blanco ')
25 xlabel ( 'f ( Hz ) ')
26 ylabel ( '| P1 ( f ) | ')
15
16 Y
21
Figura 3.1: Ruido blanco en el tiempo y la frecuencia
3.2.
Análisis de señales de voz
Los archivo de audio se grabaron con el software Audacity a una frecuencia de muestreo de 8kHz
y se guardaron con el formato vocal(a,e,etc).wav.
Figura 3.2: Grabación del audio con Audacity
22
3.2.1.
Análisis de la vocal A
Para generar el periodograma, y los espectrogramas de banda ancha y banda angosta se usa el
código que sigue:
% leer los archivos de audio
Fs ] = audioread ( 'a . wav ') ; % vocal a
3 T = 1/ Fs ;
1
2 [X ,
4
% vocal en el dominio del tiempo
% las grabaciones tienen cada una
7 % frecuencia de muestreo de 8000 Hz
8 t = (0: length ( X ) -1) *1/ Fs ; % vector tiempo , audio a
9 % tomando la porcion importante de datos
10 t = t (3500:6500) ;
11 X = X (3500:6500) ;
12 % grafica en el tiempo
13 subplot (2 , 1 , 1) ;
14 plot (t , X ) ; grid on
15 title ( ' Audio de la vocal a ')
16 xlabel ( 't ( s ) ')
17 ylabel ( 'X ( t ) ')
5
6
18
% dominio de la frecuencia
= length ( X ) ;
21 Y = fft ( X ) ;
22 P2 = abs ( Y / L ) ; % espectro bilateral
23 P1 = P2 (1:( L + 1) /2+1) ; % espectro unilateral
24 P1 (2: end -1) = 2* P1 (2: end -1) ;
25 % graficar el espectro
26 subplot (2 , 1 , 2) ;
27 f = Fs *(0:(( L +1) /2) ) / L ;
28 plot (f , P1 ) ; grid on
29 title ( ' Espectro de la vocal a ')
30 xlabel ( 'f ( Hz ) ')
31 ylabel ( '| P1 ( f ) | ')
19
20 L
32
% calculo del periodograma ventana hamming
= hamming ( L ) ;
35 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
36 figure
37 subplot (2 , 1 , 1) ;
38 stem (f , Sxx ) ; grid on
39 title ( ' Periodograma - Ventana Hamming vocal a ')
40 xlabel ( 'f ( Hz ) ')
41 ylabel ( '| P1 ( f ) |^2 ')
42 % calculo del periodograma ventana hanning
43 win = hanning ( L ) ;
44 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
45 subplot (2 , 1 , 2) ;
46 stem (f , Sxx ) ; grid on
47 title ( ' Periodograma - Ventana Hanning vocal a ')
48 xlabel ( 'f ( Hz ) ')
49 ylabel ( '| P1 ( f ) |^2 ')
33
34 win
50
%
%
53 %
54 %
55 %
51
52
espectrograma de banda ancha enfatiza cambios temporales
con periodo de ventanas de 3 ms aprox
el tiempo de duracion de la onda es T_total = T * length ( X ) *1000 [ ms ]
la longitud de la ventana es WL = ( length ( X ) / T_total ) *3 = 24
ventana hamming
23
56 nfft
= 256;
57 window_length
= 24;
= hamming ( window_length ) ;
59 Noverlap = window_length /2; % numero de punto de solapamiento
60 % calculando el espectrograma
61 figure
62 subplot (2 , 1 , 1) ;
63 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
64 title ( " Espectrograma de banda ancha - Ventana Hamming vocal a " ) ;
58 window_func
65
% ventana hanning
= hanning ( window_length ) ;
68 Noverlap = window_length /2; % numero de punto de solapamiento
69 % calculando el espectrograma
70 subplot (2 , 1 , 2) ;
71 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
72 title ( " Espectrograma de banda ancha - Ventana Hanning vocal a " ) ;
66
67 window_func
Figura 3.3: Vocal a en el tiempo y la frecuencia
24
Figura 3.4: Espectrograma de la vocal a
Figura 3.5: Periodograma de la vocal a
25
3.2.2.
Análisis de la vocal E
El código se muestra a continuación:
% ler los archivos de audio
Fs ] = audioread ( 'e . wav ') ; % vocal e
3 T = 1/ Fs ;
1
2 [X ,
4
% vocal en el dominio del tiempo
% las grabaciones tienen cada una
7 % frecuencia de muestreo de 8000 Hz
8 t = (0: length ( X ) -1) *1/ Fs ; % vector tiempo
9 % tomando la porcion importante de datos
10 t = t (4000:7000) ;
11 X = X (4000:7000) ;
12 % grafica en el tiempo
13 subplot (2 , 1 , 1) ;
14 plot (t , X ) ; grid on
15 title ( ' Audio de la vocal e ')
16 xlabel ( 't ( s ) ')
17 ylabel ( 'X ( t ) ')
5
6
18
% dominio de la frecuencia
= length ( X ) ;
21 Y = fft ( X ) ;
22 P2 = abs ( Y / L ) ; % espectro bilateral
23 P1 = P2 (1:( L + 1) /2+1) ; % espectro unilateral
24 P1 (2: end -1) = 2* P1 (2: end -1) ;
25 % graficar el espectro
26 subplot (2 , 1 , 2) ;
27 f = Fs *(0:(( L +1) /2) ) / L ;
28 plot (f , P1 ) ; grid on
29 title ( ' Espectro de la vocal e ')
30 xlabel ( 'f ( Hz ) ')
31 ylabel ( '| P1 ( f ) | ')
19
20 L
32
% calculo del periodograma ventana hamming
= hamming ( L ) ;
35 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
36 figure
37 subplot (2 , 1 , 1) ;
38 stem (f , Sxx ) ; grid on
39 title ( ' Periodograma - Ventana Hamming vocal e ')
40 xlabel ( 'f ( Hz ) ')
41 ylabel ( '| P1 ( f ) |^2 ')
42 % calculo del periodograma ventana hanning
43 win = hanning ( L ) ;
44 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
45 subplot (2 , 1 , 2) ;
46 stem (f , Sxx ) ; grid on
47 title ( ' Periodograma - Ventana Hanning vocal e ')
48 xlabel ( 'f ( Hz ) ')
49 ylabel ( '| P1 ( f ) |^2 ')
33
34 win
50
% espectrograma de banda ancha enfatiza cambios temporales
% con periodo de ventanas de 3 ms aprox
53 % el tiempo de duracion de la onda es T_total = T * length ( X ) *1000 [ ms ]
54 % la longitud de la ventana es WL = ( length ( X ) / T_total ) *3 = 24
55 % ventana hamming
56 nfft = 256;
51
52
26
57 window_length
= 24;
= hamming ( window_length ) ;
59 Noverlap = window_length /2; % numero de punto de solapamiento
60 % calculando el espectrograma
61 figure
62 subplot (2 , 1 , 1) ;
63 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
64 title ( " Espectrograma de banda ancha - Ventana Hamming vocal e " ) ;
58 window_func
65
% ventana hanning
= hanning ( window_length ) ;
68 Noverlap = window_length /2; % numero de punto de solapamiento
69 % calculando el espectrograma
70 subplot (2 , 1 , 2) ;
71 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
72 title ( " Espectrograma de banda ancha - Ventana Hanning vocal e " ) ; e
66
67 window_func
Figura 3.6: Vocal e en el tiempo y frecuencia
27
Figura 3.7: Periodograma de la vocal e
Figura 3.8: Espectrograma de la vocal e
28
3.2.3.
Análisis de la vocal I
% leer los archivos de audio
Fs ] = audioread ( 'i . wav ') ; % vocal i
3 T = 1/ Fs ;
1
2 [X ,
4
% vocal en el dominio del tiempo
% las grabaciones tienen cada una
7 % frecuencia de muestreo de 8000 Hz
8 t = (0: length ( X ) -1) *1/ Fs ; % vector tiempo
9 % tomando la porcion importante de datos
10 t = t (4000:7000) ;
11 X = X (4000:7000) ;
12 % grafica en el tiempo
13 subplot (2 , 1 , 1) ;
14 plot (t , X ) ; grid on
15 title ( ' Audio de la vocal i ')
16 xlabel ( 't ( s ) ')
17 ylabel ( 'X ( t ) ')
5
6
18
% dominio de la frecuencia
= length ( X ) ;
21 Y = fft ( X ) ;
22 P2 = abs ( Y / L ) ; % espectro bilateral
23 P1 = P2 (1:( L + 1) /2+1) ; % espectro unilateral
24 P1 (2: end -1) = 2* P1 (2: end -1) ;
25 % graficar el espectro
26 subplot (2 , 1 , 2) ;
27 f = Fs *(0:(( L +1) /2) ) / L ;
28 plot (f , P1 ) ; grid on
29 title ( ' Espectro de la vocal i ')
30 xlabel ( 'f ( Hz ) ')
31 ylabel ( '| P1 ( f ) | ')
19
20 L
32
% calculo del periodograma ventana hamming
= hamming ( L ) ;
35 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
36 figure
37 subplot (2 , 1 , 1) ;
38 stem (f , Sxx ) ; grid on
39 title ( ' Periodograma - Ventana Hamming vocal i ')
40 xlabel ( 'f ( Hz ) ')
41 ylabel ( '| P1 ( f ) |^2 ')
42 % calculo del periodograma ventana hanning
43 win = hanning ( L ) ;
44 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
45 subplot (2 , 1 , 2) ;
46 stem (f , Sxx ) ; grid on
47 title ( ' Periodograma - Ventana Hanning vocal i ')
48 xlabel ( 'f ( Hz ) ')
49 ylabel ( '| P1 ( f ) |^2 ')
33
34 win
50
% espectrograma de banda ancha enfatiza cambios temporales
% con periodo de ventanas de 3 ms aprox
53 % el tiempo de duracion de la onda es T_total = T * length ( X ) *1000 [ ms ]
54 % la longitud de la ventana es WL = ( length ( X ) / T_total ) *3 = 24
55 % ventana hamming
56 nfft = 256;
57 window_length = 24;
58 window_func = hamming ( window_length ) ;
51
52
29
59 Noverlap
= window_length /2; % numero de punto de solapamiento
% calculando el espectrograma
61 figure
62 subplot (2 , 1 , 1) ;
63 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
64 title ( " Espectrograma de banda ancha - Ventana Hamming vocal i " ) ;
60
65
% ventana hanning
= hanning ( window_length ) ;
68 Noverlap = window_length /2; % numero de punto de solapamiento
69 % calculando el espectrograma
70 subplot (2 , 1 , 2) ;
71 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
72 title ( " Espectrograma de banda ancha - Ventana Hanning vocal i " ) ;
66
67 window_func
Figura 3.9: Vocal i en el tiempo y frecuencia
30
Figura 3.10: Periodograma de la vocal i
Figura 3.11: Espectrograma de la vocal i
31
3.2.4.
Análisis de la vocal O
% leer los archivos de audio
Fs ] = audioread ( 'o . wav ') ; % vocal o
3 T = 1/ Fs ;
1
2 [X ,
4
% vocal en el dominio del tiempo
% las grabaciones tienen cada una
7 % frecuencia de muestreo de 8000 Hz
8 t = (0: length ( X ) -1) *1/ Fs ; % vector tiempo
9 % tomando la porcion importante de datos
10 t = t (3500:7000) ;
11 X = X (3500:7000) ;
12 % grafica en el tiempo
13 subplot (2 , 1 , 1) ;
14 plot (t , X ) ; grid on
15 title ( ' Audio de la vocal o ')
16 xlabel ( 't ( s ) ')
17 ylabel ( 'X ( t ) ')
5
6
18
% dominio de la frecuencia
= length ( X ) ;
21 Y = fft ( X ) ;
22 P2 = abs ( Y / L ) ; % espectro bilateral
23 P1 = P2 (1:( L + 1) /2+1) ; % espectro unilateral
24 P1 (2: end -1) = 2* P1 (2: end -1) ;
25 % graficar el espectro
26 subplot (2 , 1 , 2) ;
27 f = Fs *(0:(( L +1) /2) ) / L ;
28 plot (f , P1 ) ; grid on
29 title ( ' Espectro de la vocal o ')
30 xlabel ( 'f ( Hz ) ')
31 ylabel ( '| P1 ( f ) | ')
19
20 L
32
% calculo del periodograma ventana hamming
= hamming ( L ) ;
35 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
36 figure
37 subplot (2 , 1 , 1) ;
38 stem (f , Sxx ) ; grid on
39 title ( ' Periodograma - Ventana Hamming vocal o ')
40 xlabel ( 'f ( Hz ) ')
41 ylabel ( '| P1 ( f ) |^2 ')
42 % calculo del periodograma ventana hanning
43 win = hanning ( L ) ;
44 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
45 subplot (2 , 1 , 2) ;
46 stem (f , Sxx ) ; grid on
47 title ( ' Periodograma - Ventana Hanning vocal o ')
48 xlabel ( 'f ( Hz ) ')
49 ylabel ( '| P1 ( f ) |^2 ')
33
34 win
50
% espectrograma de banda ancha enfatiza cambios temporales
% con periodo de ventanas de 3 ms aprox
53 % el tiempo de duracion de la onda es T_total = T * length ( X ) *1000 [ ms ]
54 % la longitud de la ventana es WL = ( length ( X ) / T_total ) *3 = 24
55 % ventana hamming
56 nfft = 256;
57 window_length = 24;
58 window_func = hamming ( window_length ) ;
51
52
32
59 Noverlap
= window_length /2; % numero de punto de solapamiento
% calculando el espectrograma
61 figure
62 subplot (2 , 1 , 1) ;
63 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
64 title ( " Espectrograma de banda ancha - Ventana Hamming vocal o " ) ;
60
65
% ventana hanning
= hanning ( window_length ) ;
68 Noverlap = window_length /2; % numero de punto de solapamiento
69 % calculando el espectrograma
70 subplot (2 , 1 , 2) ;
71 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
72 title ( " Espectrograma de banda ancha - Ventana Hanning vocal o " ) ;
66
67 window_func
Figura 3.12: Vocal o en el tiempo y frecuencia
33
Figura 3.13: Periodograma de la vocal o
Figura 3.14: Espectrograma de la vocal o
34
3.2.5.
Análisis de la vocal U
% leer los archivos de audio
Fs ] = audioread ( 'u . wav ') ; % vocal u
3 T = 1/ Fs ;
1
2 [X ,
4
% vocal en el dominio del tiempo
% las grabaciones tienen cada una
7 % frecuencia de muestreo de 8000 Hz
8 t = (0: length ( X ) -1) *1/ Fs ; % vector tiempo
9 % tomando la porcion importante de datos
10 t = t (4000:7000) ;
11 X = X (4000:7000) ;
12 % grafica en el tiempo
13 subplot (2 , 1 , 1) ;
14 plot (t , X ) ; grid on
15 title ( ' Audio de la vocal u ')
16 xlabel ( 't ( s ) ')
17 ylabel ( 'X ( t ) ')
5
6
18
% dominio de la frecuencia
= length ( X ) ;
21 Y = fft ( X ) ;
22 P2 = abs ( Y / L ) ; % espectro bilateral
23 P1 = P2 (1:( L + 1) /2+1) ; % espectro unilateral
24 P1 (2: end -1) = 2* P1 (2: end -1) ;
25 % graficar el espectro
26 subplot (2 , 1 , 2) ;
27 f = Fs *(0:(( L +1) /2) ) / L ;
28 plot (f , P1 ) ; grid on
29 title ( ' Espectro de la vocal u ')
30 xlabel ( 'f ( Hz ) ')
31 ylabel ( '| P1 ( f ) | ')
19
20 L
32
% calculo del periodograma ventana hamming
= hamming ( L ) ;
35 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
36 figure
37 subplot (2 , 1 , 1) ;
38 stem (f , Sxx ) ; grid on
39 title ( ' Periodograma - Ventana Hamming vocal u ')
40 xlabel ( 'f ( Hz ) ')
41 ylabel ( '| P1 ( f ) |^2 ')
42 % calculo del periodograma ventana hanning
43 win = hanning ( L ) ;
44 [ Sxx , f ] = periodogram (X , win ,1024 , Fs ) ;
45 subplot (2 , 1 , 2) ;
46 stem (f , Sxx ) ; grid on
47 title ( ' Periodograma - Ventana Hanning vocal u ')
48 xlabel ( 'f ( Hz ) ')
49 ylabel ( '| P1 ( f ) |^2 ')
33
34 win
50
% espectrograma de banda ancha enfatiza cambios temporales
% con periodo de ventanas de 3 ms aprox
53 % el tiempo de duracion de la onda es T_total = T * length ( X ) *1000 [ ms ]
54 % la longitud de la ventana es WL = ( length ( X ) / T_total ) *3 = 24
55 % ventana hamming
56 nfft = 256;
57 window_length = 24;
58 window_func = hamming ( window_length ) ;
51
52
35
59 Noverlap
= window_length /2; % numero de punto de solapamiento
% calculando el espectrograma
61 figure
62 subplot (2 , 1 , 1) ;
63 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
64 title ( " Espectrograma de banda ancha - Ventana Hamming vocal u " ) ;
60
65
% ventana hanning
= hanning ( window_length ) ;
68 Noverlap = window_length /2; % numero de punto de solapamiento
69 % calculando el espectrograma
70 subplot (2 , 1 , 2) ;
71 spectrogram (X , window_func , Noverlap , nfft , Fs , ' yaxis ') ;
72 title ( " Espectrograma de banda ancha - Ventana Hanning vocal u " ) ;
66
67 window_func
Figura 3.15: Vocal u en el tiempo y frecuencia
36
Figura 3.16: Periodograma de la vocal u
Figura 3.17: Espectrograma de la vocal u
37
C APÍTULO 4:
F ILTRO ADAPTATIVO
4.1. Realice la mezcla de un ruido blanco con una señal de voz “a” y aplíquele
un filtro adaptivo de tal forma de atenuar el ruido blanco y reproducir la “a”
con mayor claridad.
El código para leer la señal de audio, la adición de ruido y el filtrado de la señal se presenta a
continuación.
% leer el archivo de audio
Fs ] = audioread ( 'a . wav ') ; % vocal a
3 T = 1/ Fs ; % frecuencia de muestreo de 8000 Hz
4 t = (0: length ( X ) -1) *1/ Fs ; % vector tiempo
5 % tomando la porcion importante de datos
6 %t = t (3500:6500) ;
7 %X = X (3500:6500) ;
8 % grafica en el tiempo
9 subplot (2 , 1 , 1) ;
10 plot (t , X ) ; grid on
11 title ( ' Audio de la vocal a ')
12 xlabel ( 't ( s ) ')
13 ylabel ( 'X ( t ) ')
14 % dominio de la frecuencia
15 L = length ( X ) ;
16 Y = fft ( X ) ;
17 P2 = abs ( Y / L ) ; % espectro bilateral
18 P1 = P2 (1: L /2+1) ; % espectro unilateral
19 P1 (2: end -1) = 2* P1 (2: end -1) ;
20 % graficar el espectro
21 subplot (2 , 1 , 2) ;
22 f = Fs *(0:( L /2) ) / L ;
23 plot (f , P1 ) ; grid on
24 title ( ' Espectro de la vocal a ')
25 xlabel ( 'f ( Hz ) ')
26 ylabel ( '| P1 ( f ) | ')
1
2 [X ,
27
% reproducir audio
= audioplayer (X , Fs ) ;
30 play ( a ) ;
31 pause (1) ;
28
29 a
32
% ruido blanco
= 0;
35 sigma = 0.005;
36 RB = sigma * randn (L , 1) + mu ;
37 % grafica en el tiempo
38 figure
33
34 mu
38
39 subplot (2 ,
1 , 1) ;
RB ) ;
41 title ( ' Ruido blanco ')
42 xlabel ( 't ( s ) ')
43 ylabel ( ' RB ( t ) ')
44 % espectro del ruido blanco
45 Y = fft ( RB ) ;
46 P2 = abs ( Y / L ) ; % espectro bilateral
47 P1 = P2 (1: L /2+1) ; % espectro unilateral
48 P1 (2: end -1) = 2* P1 (2: end -1) ;
49 % graficar el espectro
50 subplot (2 , 1 , 2) ;
51 f = Fs *(0:(( L +1) /2) ) / L ;
52 plot (f , P1 ) ; grid on
53 title ( ' Espectro del ruido blanco ')
54 xlabel ( 'f ( Hz ) ')
55 ylabel ( '| P1 ( f ) | ')
40 plot (t ,
56
% adicion de ruido blanco
= X + RB ;
59 figure
60 subplot (2 , 1 , 1) ;
61 plot (t , X_RB )
62 title ( ' Audio + Ruido blanco ')
63 xlabel ( 't ( s ) ')
64 ylabel ( ' Audio + RB ( t ) ')
65 % espectro del audio +
el rudio blanco
66 Y = fft ( X_RB ) ;
67 P2 = abs ( Y / L ) ; % espectro bilateral
68 P1 = P2 (1: L /2+1) ; % espectro unilateral
69 P1 (2: end -1) = 2* P1 (2: end -1) ;
70 % graficar el espectro
71 subplot (2 , 1 , 2) ;
72 f = Fs *(0:(( L +1) /2) ) / L ;
73 plot (f , P1 ) ; grid on
74 title ( ' Espectro del audio + rudio blanco ')
75 xlabel ( 'f ( Hz ) ')
76 ylabel ( '| P1 ( f ) | ')
77 % reproducir audio con ruido
78 a_ruido = audioplayer ( X_RB , Fs ) ;
79 play ( a_ruido ) ;
80 pause (1) ;
57
58 X_RB
81
% reduccion de rudio
= n o i s e R e d u c t i o n _ Y W ( X_RB , Fs ) ; % filtrando ruido
84 figure
85 subplot (2 , 1 , 1) ;
86 plot (t , X_filtered ) ;
87 title ( ' Audio Filtrado ')
88 xlabel ( 't ( s ) ')
89 ylabel ( ' Audio ')
90 % espectro del audio filtrado
91 Y = fft ( X_filtered ) ;
92 P2 = abs ( Y / L ) ; % espectro bilateral
93 P1 = P2 (1: L /2+1) ; % espectro unilateral
94 P1 (2: end -1) = 2* P1 (2: end -1) ;
95 % graficar el espectro
96 subplot (2 , 1 , 2) ;
97 f = Fs *(0:(( L +1) /2) ) / L ;
98 plot (f , P1 ) ; grid on
99 title ( ' Espectro del audio filtrado ')
100 xlabel ( 'f ( Hz ) ')
101 ylabel ( '| P1 ( f ) | ')
102 % reproducir audio con ruido
82
83 X_filtered
39
103 a_filtrado
= audioplayer ( X_filtered , Fs ) ;
104 play ( a_filtrado ) ;
Figura 4.1: Lectura de audio
Figura 4.2: Ruido Blanco
40
Figura 4.3: Audio con ruido adicionado
Figura 4.4: Audio filtrado
41
Descargar