Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CON MATLAB
1
http://lonely113.blogspot.com
Generación y Gráfica de Señales
2
Dónde:
A: Amplitud
Fo: Frecuencia
phi: Fase
Donde:
Fs=1/Ts: Frecuencia de muestreo.
stem(t,xt)
http://lonely113.blogspot.com
Ejemplo: Generación y gráfica de una señal
muestreada a 8 KHz.
3
1.5
>> A=2; 0
>> phi=pi/4;
>> Fs=8000; -0.5
>> Ts=1/Fs; -1
>> xt=A*sin(2*pi*F0*t+phi);
>> stem(t,xt)
-2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
-3
x 10
http://lonely113.blogspot.com
Ejemplo: Señales no sinusoidales periódicas.
4
>> xt=sawtooth(2*pi*F0*t);
x(t) 0
>> ylabel('x(t)'); -1
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
time (s) -3
x 10
http://lonely113.blogspot.com
Ejemplo: Señal aperiódica.
5
>> F0=400;
1.5
>> A=2;
>> Fs=8000; 1
>> Ts=1/Fs;
>> t=-0.003:Ts:0.003; 0.5
>> xt=A*sinc(2*F0*t);
>> stem(t,xt) 0
-0.5
-3 -2 -1 0 1 2 3
-3
x 10
http://lonely113.blogspot.com
Generación de Ruido
6
Dónde:
http://lonely113.blogspot.com
Ejemplo: Generación y Representación de Ruido
Gaussiano
7
4
x 10
4
3.5
>> hist(Gnoise,100); 2
1.5
0.5
0
-6 -4 -2 0 2 4 6
http://lonely113.blogspot.com
Submuestreo y Sobremuestro
8
Submuestreo
xtDown=downsample(xt,N)
Submuestrear la señal significa conservar cada N-ésima muestra y eliminar las muestras
restantes.
Sobremuestreo
xtUp=upsample(xt,N)
http://lonely113.blogspot.com
Ejemplo: Submuestreo.
9
>> F0=400;
>> A=2;
1.5
>> phi=pi/4; 1
>> Fs=8000;
>> Ts=1/Fs;
0.5
>> t=-0.002:Ts:0.002; 0
>> xt=A*sin(2*pi*F0*t+phi);
>> stem(t,xt)
-0.5
>>xtDown=downsample(xt,4); -1
>> tDown=downsample(t,4);
-1.5
>> hold on
>> stem(tDown,xtDown,'r'); -2
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
-3
x 10
http://lonely113.blogspot.com
Procesamiento de Audio
10
soundsc(xt,Fs)
Donde:
xt: Tono a escuchar.
Fs: Frecuencia de muestreo.
>> soundsc(xt,Fs)
http://lonely113.blogspot.com
Grabación de Audio
11
>> r=audiorecorder;
>> record(r)
>> pause(r)
>> record(r)
>> stop(r)
>> play(r)
>> y=getaudiodata(r);
>> Fs=r.SampleRate
Fs =
8000
http://lonely113.blogspot.com
Guardar como Archivo de Audio
13
wavwrite(y,Fs,’grabacion’)
>> wavwrite(y,Fs,'grabacion');
>> which grabacion.wav
C:\Users\Casa\Documents\MATLAB\
grabacion.wav
http://lonely113.blogspot.com
Leer un Archivo de Audio
14
Para leer un archivo de audio en formato wav que se encuentra en la carpeta de trabajo de
Matlab se utiliza la función:
[xt,Fs]=wavread(‘nombre_de_archivo’)
>> [xt,Fs]=wavread('tuner1');
http://lonely113.blogspot.com
Análisis en Frecuencia
15
xF=fft(xt,nFFT)
Donde:
nFFT=número de puntos a representar.
Comandos adicionales:
http://lonely113.blogspot.com
Ejemplo: Obtención de La FFT de la Función
Compuerta. 16
Magnitud de xF
8
>> Fs=2000;
7
>> Ts=1/Fs; 5
>> t=-0.005:Ts:0.005; 4
>> xt=rectpuls(t,0.004); 3
>> nFFT=64;
2
>> xF=fft(xt,nFFT); 0
0 10 20 30 40 50 60 70
>> magxF=abs(xF); 0
Fase de xF
>> phasexF=angle(xF); -5
>>title(‘Magnitud de xF’)
-20
-25
-40
0 10 20 30 40 50 60 70
http://lonely113.blogspot.com
Ejemplo: Obtención de La FFT de la Función
Compuerta. 17
Magnitud de xF
8
transformada de Fourier. 2
>> magxF=fftshift(magxF);
0 10 20 30 40 50 60 70
Fase de xF
>> phasexF=fftshift(phasexF);
0
-5
-30
-35
-40
0 10 20 30 40 50 60 70
http://lonely113.blogspot.com
Ejemplo: Obtención de La FFT de la Función
Compuerta. 18
Magnitud de xF
8
graficar correctamente. 2
>> f_esp=Fs/nFFT;
-1000 -800 -600 -400 -200 0 200 400 600 800 1000
Fase de xF
0
>> fNyquist=Fs/2; -5
>> stem(f_eje,magxF)
-25
>> figure,stem(f_eje,phasexF)
-30
-35
-40
-1000 -800 -600 -400 -200 0 200 400 600 800 1000
http://lonely113.blogspot.com
Sistemas LTI
19
http://lonely113.blogspot.com
Ecuación de Diferencias Para Filtros
Causales
20
En el dominio Z
Función de transferencia
en el dominio Z
http://lonely113.blogspot.com
Representación de Filtros en Matlab
21
en Matlab:
>> num=[1 1.1];
>> den=[1 0 -0.1];
http://lonely113.blogspot.com
Respuesta al Impulso y Convolución
22
Impz(num,den): Grafica la respuesta al impulso del filtro. Por defecto se considera Fs=1 Hz y
grafica las 10 primeras muestras.
http://lonely113.blogspot.com
Ejemplo: Graficando la respuesta al impulso del
filtro creado anteriormente.
23
Impulse Response
1.4
1.2
Amplitude
0.8
0.6
>> impz(num,den);
0
0 1 2 3 4 5 6 7
n (samples)
>> figure,stem(t,h) 1
0.8
0.6
0.4
0.2
0
0 0.5 1 1.5 2 2.5 3 3.5 4
-3
x 10
http://lonely113.blogspot.com
Señal de Salida del Filtro Para una Señal
de Entrada
24
y=conv(h,x)
y=filter(num,den,x)
http://lonely113.blogspot.com
Ejemplo:
25
Espectro de xt
30
entrada audible: 20
15
10
>> [xt,Fs]=wavread('tuner1'); 0
0 500 1000 1500 2000 2500 3000 3500 4000
>> y1=convn(h,xt); 80
>> soundsc(xt,Fs); 70
>> soundsc(y1,Fs); 60
>> y2=filter(num,den,xt);
50
40
>> soundsc(xt,Fs); 30
>> soundsc(y2,Fs); 20
10
0
500 1000 1500 2000 2500 3000 3500 4000
http://lonely113.blogspot.com
Análisis de Filtros en el Dominio de la
Frecuencia
26
Respuesta de magnitud:
Respuesta de fase:
Retardo de grupo:
http://lonely113.blogspot.com
Respuesta de Magnitud y Fase de Filtros
27
http://lonely113.blogspot.com
Ejemplo: Respuesta en frecuencia del filtro creado
anteriormente.
28
10
Magnitude (dB)
0
-10
-20
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized Frequency ( rad/sample)
Phase (degrees)
-50
>> Fs=8000;
-150
-200
>> freqz(num,den)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Normalized Frequency ( rad/sample)
>>figure,freqz(num,den,1024,Fs); 10
>> f=[0,200,400];
Magnitude (dB)
0
-20
0 500 1000 1500 2000 2500 3000 3500 4000
Frequency (Hz)
0
Phase (degrees)
-50
-100
-150
-200
0 500 1000 1500 2000 2500 3000 3500 4000
Frequency (Hz)
http://lonely113.blogspot.com
Gráfico de Retardo de Grupo
29
[G,F]=grpdelay(num,den)
[G,F]=grpdelay(num,den,n,Fs)
[G,F]=grpdelay(num,den,f,Fs)
http://lonely113.blogspot.com
Ejemplo: Continuando con el ejemplo anterior
30
12
10
>> [G,F]=grpdelay(num,den); 0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
>> grpdelay(num,den); 12
Normalized Frequency ( rad/sample)
>> figure,grpdelay(num,den,1024,Fs); 10
0
0 500 1000 1500 2000 2500 3000 3500 4000
Frequency (Hz)
http://lonely113.blogspot.com
Análisis de Polos y Ceros de Funciones de
Transferencia
31
Función de transferencia:
http://lonely113.blogspot.com
Obtención de Polos y Ceros
32
[z,p,k]=tf2zp(num,den)
De manera inversa:
[num,den]=zp2tf(z,p,k)
http://lonely113.blogspot.com
Ejemplo: Con el filtro implementado
anteriormente.
33
http://lonely113.blogspot.com
Gráfico de Polos y Ceros
34
Se utiliza el comando:
zplane(z,p)
Si hay polos fuera del círculo unitario significa que el sistema es inestable.
Continuando con el ejemplo anterior:
1
0.8
0.6
0.4
Imaginary Part
0.2
>> zplane(z,p) 0
-0.2
-0.4
-0.6
-0.8
-1
-1 -0.5 0 0.5 1
Real Part
http://lonely113.blogspot.com
Uso del FVTool
35
http://lonely113.blogspot.com
Llamada al FVtool
36
fvtool(num,den)
Donde: num y den corresponden al filtro en estudio.
Continuando con el ejemplo anterior:
>>fvtool(num,den)
http://lonely113.blogspot.com
Configuración de FVtool
37
http://lonely113.blogspot.com
La herramienta Fvtool permite visualizar
diferentes respuestas del filtro en estudio
38
Respuesta de Magnitud
Respuesta de fase
Respuestas de magnitud y fase
Respuesta de retardo de grupo
Respuesta de retardo de fase
Respuesta al impulso
Respuesta al escalón
Gráfico de polos y ceros
Etc
http://lonely113.blogspot.com
Ejemplo:
39
Respuesta al impulso
http://lonely113.blogspot.com
Visualización de Múltiples Filtros
40
Ejemplo:
http://lonely113.blogspot.com
Diseño de Filtros Digitales en Matlab
41
http://lonely113.blogspot.com
Diseño de Filtros IIR
42
Función de transferencia:
Respuesta en frecuencia:
http://lonely113.blogspot.com
Tipos y Características de Filtros IIR
43
http://lonely113.blogspot.com
Especificaciones Para un Filtro Pasabanda
44
http://lonely113.blogspot.com
Diseño de un Filtro Pasabanda
45
Especificar Fs.
Fnyquist=Fs/2
Ws(1)=fstop1/Fnyquist
Wp(1)=fpass1/Fnyquist
Wp(2)=fpass2/Fnyquist
Ws(2)=fstop2/Fnyquist
http://lonely113.blogspot.com
Diseño de un Filtro Butterworth
46
[nB,WnB]=buttord(Wp,Ws,Rp,Rs)
[numB,denB]=butter[nB,WnB]
>> fstop1=1000;
>> fpass1=1200;
>> fpass2=2200;
>> fstop2=2400;
>> Rp=1;
>> Rs=60;
>> Fs=8000;
>> Fnyquist=Fs/2;
>> Ws(1)=fstop1/Fnyquist;
>> Wp(1)=fpass1/Fnyquist;
>> Wp(2)=fpass2/Fnyquist;
>> Ws(2)=fstop2/Fnyquist;
>> [nB,WnB]=buttord(Wp,Ws,Rp,Rs)
nB =
22
WnB =
0.2958 0.5551
>>[numB,denB]=butter(nB,WnB);
http://lonely113.blogspot.com
Diseño de un Filtro Elíptico
48
>> [nE,WnE]=ellipord(Wp,Ws,Rp,Rs)
nE =
6
WnE =
0.3000 0.5500
>> [numE,denE]=ellip(nE,Rp,Rs,Wp);
http://lonely113.blogspot.com
Verificación del Diseño de Filtros
49
>> fvtool(numB,denB,numE,denE)
http://lonely113.blogspot.com
Ejemplo: Filtrando el archivo «tuner1.wav»
50
Espectro de xt
35
30
25
20
15
10
>> [xt,fs]=wavread('tuner1'); 5
>> yt=filter(numE,denE,xt); 0
0 500 1000 1500 2000 2500 3000 3500 4000
>> soundsc(yt,fs) 10
0
500 1000 1500 2000 2500 3000 3500 4000
http://lonely113.blogspot.com
Llamada a los Comandos de Diseño de
Filtros
51
Butterworth – Pasabajas
[num,den]=butter(nB,Wn)
Elíptico – Pasabajas
[num,den]=ellip(nE,Rp,Rs,Wp)
Butterworth – Pasaaltas
[num,den]=butter(nB,Wn,’high’)
Elíptic0 – Pasaaltas
[num,den]=ellip(nE,Rp,Rs,Wp,’high’)
http://lonely113.blogspot.com
Diseño de Filtros FIR
52
Función de transferencia:
Respuesta en frecuencia:
http://lonely113.blogspot.com
Diseño Mediante Método de Ventanas
53
0.8
0.6
0.4
0.2
-0.2
-0.4
-50 -40 -30 -20 -10 0 10 20 30 40 50
Se realiza mediante el comando:
num=fir1(n,Wp)
Dónde:
n: Orden del filtro
Wp: Vector que contiene las frecuencias de corte. Si sólo tiene
un elemento se obtiene un filtro pasabajas y si contiene dos
elementos se obtiene un filtro pasabanda.
http://lonely113.blogspot.com
Ejemplo:
54
Fs=8000 Hz
fpass1=2200 Hz
fpass2=3200 Hz
Rp=1 dB
Rs=60 dB
Orden=127
http://lonely113.blogspot.com
Ejemplo:
55
>> Fs=8000;
>> Fnyquist=Fs/2;
>> fpass1=2200;
>> fpass2=3200;
>> Rp=1;
>> Rs=60;
>> Wp(1)=fpass1/Fnyquist;
>> Wp(2)=fpass2/Fnyquist;
>> n=127;
>> num=fir1(n,Wp);
>>fvtool(num)
http://lonely113.blogspot.com
Wintool Para diseño de Funciones
Ventana
56
>> wintool
Initializing Window Design & Analysis Tool ..... done.
http://lonely113.blogspot.com
Propiedades de Algunas Funciones
Ventana de Longitud M
57
Mínima Atenuación
Anchura de Lóbulo Anchura de Banda
Tipo en la Banda de
Principal de Transición
Rechazo
http://lonely113.blogspot.com
Diseño de un Filtro FIR Utilizando una
Ventana Diseñada Previamente
58
http://lonely113.blogspot.com
Continuación…
59
>> numBlackman=fir1(n,Wp,window_1);
>>fvtool(numBlackman)
http://lonely113.blogspot.com
Ejemplo: Filtrando el archivo de audio
«tuner1.wav» con el filtro diseñado.
60
Espectro de xt
35
30
25
20
15
10
>> [xt,Fs]=wavread('tuner1'); 5
>> yt=filter(numBlackman,1,xt); 0
0 500 1000 1500 2000 2500 3000 3500 4000
>> soundsc(yt,Fs) 6
0
500 1000 1500 2000 2500 3000 3500 4000
http://lonely113.blogspot.com
Diseño de Filtros Mediante la
Herramienta FDATool
61
>> fdatool
http://lonely113.blogspot.com
Diseño de un Filtro usando FDATool
62
Pasaaltas
Tipo IIR – Elíptico
Mínimo orden posible
Fs=8000 Hz
Fstop=2800 Hz
Fpass=3200 Hz
Rs=60 dB
Rp=1 dB
http://lonely113.blogspot.com
Exportación al Área de Trabajo
63
http://lonely113.blogspot.com
Ejemplo: Filtrando el archivo de audio
«tuner1.Wav»
64
Espectro de xt
35
30
25
20
15
10
>> [xt,Fs]=wavread('tuner1'); 5
>> yt=filter(numHp,denHp,xt); 0
0 500 1000 1500 2000 2500 3000 3500 4000
>> soundsc(xt)
Espectro de yt
0.8
0.6
0.4
0.2
0
500 1000 1500 2000 2500 3000 3500 4000
http://lonely113.blogspot.com
http://lonely113.blogspot.com 65