Filtros digitales MATLAB
-
Upload
carlos-puchaicela -
Category
Documents
-
view
270 -
download
1
Transcript of Filtros digitales MATLAB
-
8/13/2019 Filtros digitales MATLAB
1/65
PROCESAMIENTO DIGITAL DE SEALESCON MATLAB1
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
2/65
Generacin y Grfica de Seales
Sea una seal:
Dnde:A: AmplitudFo: Frecuenciaphi: Fase
La representacin de esta seal en tiempo discreto est dada por:
Donde:Fs=1/Ts: Frecuencia de muestreo.
La grfica de seales discretas se realiza con el comando:
stem(t,xt)
http://lonely113.blogspot.com
2
-
8/13/2019 Filtros digitales MATLAB
3/65
Ejemplo: Generacin y grfica de una sealmuestreada a 8 KHz.
Se genera una seal sinusoidal de 400 Hz y amplitud 2.
>> F0=400;>> A=2;>> phi=pi/4;>> Fs=8000;
>> Ts=1/Fs;>> t=-0.002:Ts:0.002;>> xt=A*sin(2*pi*F0*t+phi);>> stem(t,xt) -2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x 10-3
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
3
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
4/65
Ejemplo: Seales no sinusoidales peridicas.
Generacin de una seal diente de sierra.
>> F0=400;>> A=2;
>> Fs=8000;>> Ts=1/Fs;>> t=-0.002:Ts:0.002;>> xt=sawtooth(2*pi*F0*t);>> stem(t,xt)
>> hold on>> plot(t,xt)>> xlabel('time (s)');>> ylabel('x(t)');
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x 10-3
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
time (s)
x(t)
4
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
5/65
Ejemplo: Seal aperidica.
Muestreo de la seal Sinc.
>> F0=400;>> A=2;>> Fs=8000;>> Ts=1/Fs;>> t=-0.003:Ts:0.003;>> xt=A*sinc(2*F0*t);>> stem(t,xt)
-3 -2 -1 0 1 2 3
x 10-3
-0.5
0
0.5
1
1.5
2
5
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
6/65
Generacin de Ruido
Se utilizan los comandos:
Y=rand(rows,cols): Genera ruido con distribucin uniforme.
Y=randn(rows,cols):Genera ruido Gaussiano.
Dnde:
rows, cols: Indica la dimensin de la matriz de ruido aleatorio agenerar.
Para observar el histograma se utiliza el comando:
hist(y,m): Representa el ruido "y"mediante m "contenedores".
6
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
7/65
Ejemplo: Generacin y Representacin de RuidoGaussiano
>> Gnoise=randn(1,1e6);
>> hist(Gnoise,100);
-6 -4 -2 0 2 4 60
0.5
1
1.5
2
2.5
3
3.5
4x 10
4
7
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
8/65
Submuestreo y Sobremuestro
Submuestreo
xtDown=downsample(xt,N)
La seal xDowntendr una frecuencia de muestro Fs/N.
Submuestrear la seal significa conservar cada N-sima muestra y eliminar las muestrasrestantes.
Sobremuestreo
xtUp=upsample(xt,N)
La seal xUptendr una frecuencia de muestreo NFs.
Sobremuestrear la seal significa introducir N-1 ceros entre muestras consecutivas.
8
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
9/65
Ejemplo: Submuestreo.
Se submuestrea la seal sinusoidal generada anteriormente (Fs=8KHz) para obtener una seal xtDown muestreada a 2 KHz.
>> F0=400;>> A=2;
>> phi=pi/4;>> Fs=8000;>> Ts=1/Fs;>> t=-0.002:Ts:0.002;>> xt=A*sin(2*pi*F0*t+phi);>> stem(t,xt)>>xtDown=downsample(xt,4);>> tDown=downsample(t,4);>> hold on>> stem(tDown,xtDown,'r');
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
x 10-3
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
9
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
10/65
Procesamiento de Audio
Para escuchar un tono de seal en Matlab se utiliza el comando:
soundsc(xt,Fs)
Donde:xt: Tono a escuchar.Fs: Frecuencia de muestreo.
Por ejemplo: Para escuchar la seal sinusoidal generadaanteriormente:
>> soundsc(xt,Fs)
10
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
11/65
Grabacin de Audio
Para grabar una seal audible mediante la tarjeta de sonido y unmicrfono se utilizan los siguientes comandos:
r=audiorecorder: Crea un objeto de grabacin.
record(r): Inicio de grabacin.
pause(r) ,stop(r): Pausa y finalizacin.
play(r): Escuchar la grabacin
y=getaudiodata(r): Para obtener la matriz que contiene las muestrasde la seal audible. sta es la seal que se puede procesar.
Fs=r.SampleRate: Para obtener la frecuencia de muestreo.
11
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
12/65
Ejemplo:
>> r=audiorecorder;
>> record(r)
>> pause(r)
>> record(r)>> stop(r)
>> play(r)
>> y=getaudiodata(r);
>> Fs=r.SampleRate
Fs =
8000
12
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
13/65
Guardar como Archivo de Audio
Para guardar la seal de audio que se acaba de grabar se utiliza elcomando:
wavwrite(y,Fs,grabacion)
Se guarda en formato wav en la carpeta de trabajo de Matlab.
>> wavwrite(y,Fs,'grabacion');>> which grabacion.wav
C:\Users\Casa\Documents\MATLAB\grabacion.wav
13
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
14/65
Leer un Archivo de Audio
Para leer un archivo de audio en formato wav que se encuentra en la carpeta de trabajo deMatlab se utiliza la funcin:
[xt,Fs]=wavread(nombre_de_archivo)
Se guardan las muestras y la frecuencia de muestro en xty Fsrespectivamente.
>> [xt,Fs]=wavread('tuner1');
14
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
15/65
Anlisis en Frecuencia
Transformada Rpida de Fourier:
xF=fft(xt,nFFT)
Donde: nFFT=nmero de puntos a representar.
Comandos adicionales:
magxF=abs(xF): Magnitud de la fft de xt.phasexF=angle(xF): Fase de la fft de xt.phasexF=unwrap(phasexF): Para obtener la apropiada
informacin de fase.
15
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
16/65
Ejemplo: Obtencin de La FFT de la FuncinCompuerta.
>> Fs=2000;
>> Ts=1/Fs;
>> t=-0.005:Ts:0.005;
>> xt=rectpuls(t,0.004);
>> nFFT=64;>> xF=fft(xt,nFFT);
>> magxF=abs(xF);
>> phasexF=angle(xF);
>> phasexF=unwrap(phasexF);
>> figure,stem(magxF);
>>title(Magnitud de xF)
>> figure,stem(phasexF)
>>title(Fase de xF)
0 10 20 30 40 50 60 700
1
2
3
4
5
6
7
8
Magnitud de xF
0 10 20 30 40 50 60 70-40
-35
-30
-25
-20
-15
-10
-5
0Fase de xF
16
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
17/65
El comando fft obtiene la transformadade Fourier en la regin comprendida entre0 y la frecuencia de muestro Fs. Serequiere desplazar una parte de la grficapara obtener la regin negativa de la
transformada de Fourier.
>> magxF=fftshift(magxF);>> phasexF=fftshift(phasexF);>> stem(magxF);
>>title(Magnitud de xF)>> figure,stem(phasexF);>>title(Fase de xF)
0 10 20 30 40 50 60 700
1
2
3
4
5
6
7
8
Magnitud de xF
0 10 20 30 40 50 60 70-40
-35
-30
-25
-20
-15
-10
-5
0Fase de xF
17
http://lonely113.blogspot.com
Ejemplo: Obtencin de La FFT de la FuncinCompuerta.
-
8/13/2019 Filtros digitales MATLAB
18/65
Los grficos anteriores nopresentan el eje de frecuenciacorrecto. Se debe crear el vectorde eje de frecuencias para
graficar correctamente.
>> f_esp=Fs/nFFT;>> fNyquist=Fs/2;>> f_inicio=-fNyquist;
>> f_fin=fNyquist-f_esp;>> f_eje=f_inicio:f_esp:f_fin;>> stem(f_eje,magxF)>> figure,stem(f_eje,phasexF)
-1000 -800 -600 -400 -200 0 200 400 600 800 10000
1
2
3
4
5
6
7
8
Magnitud de xF
-1000 -800 -600 -400 -200 0 200 400 600 800 1000-40
-35
-30
-25
-20
-15
-10
-5
0Fase de xF
18
http://lonely113.blogspot.com
Ejemplo: Obtencin de La FFT de la FuncinCompuerta.
-
8/13/2019 Filtros digitales MATLAB
19/65
Sistemas LTI
Todos los sistemas LTIpueden ser analizados
como Filtros LTIdiscretos.
19
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
20/65
Ecuacin de Diferencias Para FiltrosCausales
Dnde:x[n]: Entraday[n]: Salida
En el dominio Z
Funcin de transferenciaen el dominio Z
20
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
21/65
Representacin de Filtros en Matlab
Para representar la funcin de transferencia del filtro:
en Matlab:
>> num=[1 1.1];
>> den=[1 0 -0.1];
21
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
22/65
Respuesta al Impulso y Convolucin
Para obtener la respuesta al impulso se utilizan los comandos:
Impz(num,den): Grafica la respuesta al impulso del filtro. Por defecto se considera Fs=1 Hz ygrafica las 10 primeras muestras.
Impz(num,den,n,Fs): Grafica la respuesta al impulso. Se especifica el nmero de muestras agraficar y la frecuencia de muestro utilizada.
[h,t]= Impz(num,den,n,Fs): Guarda los vectores de magnitud y eje de tiempo en h y trespectivamente.
22
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
23/65
Ejemplo: Graficando la respuesta al impulso delfiltro creado anteriormente.
>> num=[1 1.1];>> den=[1 0 -0.1];>> impz(num,den);>> Fs=8000;>> [h,t]=impz(num,den,32,Fs);>> figure,stem(t,h)
0 1 2 3 4 5 6 70
0.2
0.4
0.6
0.8
1
1.2
1.4
n (sam les)
Amplitude
Impulse Response
0 0.5 1 1.5 2 2.5 3 3.5 4
x 10-3
0
0.2
0.4
0.6
0.8
1
1.2
1.4
23
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
24/65
Seal de Salida del Filtro Para una Sealde Entrada
Se realiza mediante los comandos:
y=conv(h,x)
Donde: hes la respuesta al impulso del filtro.xes la seal de entrada.
y=filter(num,den,x)
Donde: xes la seal de entrada.
24
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
25/65
Ejemplo:
Se obtendr la seal de salidadel filtro para una seal deentrada audible:
>> [xt,Fs]=wavread('tuner1');>> [h,t]=impz(num,den,10,Fs);>> y1=convn(h,xt);>> soundsc(xt,Fs);
>> soundsc(y1,Fs);>> y2=filter(num,den,xt);>> soundsc(xt,Fs);>> soundsc(y2,Fs);
500 1000 1500 2000 2500 3000 3500 40000
10
20
30
40
50
60
70
80
Espectro de y2
0 500 1000 1500 2000 2500 3000 3500 4000
0
5
10
15
20
25
30
35
Espectro de xt
25
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
26/65
Anlisis de Filtros en el Dominio de laFrecuencia
Relacin Entrada Salida de un filtro en el dominio de la frecuencia.
Respuesta de magnitud:
Respuesta de fase:
Retardo de grupo:
26
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
27/65
Respuesta de Magnitud y Fase de Filtros
Se utilizan los comandos:
[H,F]=freqz(num,den): Por defecto asume 512 puntosequidistantemente espaciados y el eje de frecuencias esnormalizada.
[H,F]=freqz(num,den,n,Fs): Donde se especifica nmerode puntos n y la frecuencia de muestreo Fs.
[H,F]=freqz(num,den,f,Fs): Donde f es un vector en el quese especifica las frecuencias particulares en las que seobtendr la respuesta de magnitud y fase.
27
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
28/65
Ejemplo: Respuesta en frecuencia del filtro creadoanteriormente.
>> num=[1 1.1];
>> den=[1 0 -0.1];>> Fs=8000;>> freqz(num,den)>>figure,freqz(num,den,1024,Fs);>> f=[0,200,400];>> [H,F]=freqz(num,den,f,Fs);
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-200
-150
-100
-50
0
Normalized Frequency (rad/sample)
Phase(
degrees)
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1-20
-10
0
10
Normalized Frequency (rad/sample)
Magnitude(dB)
0 500 1000 1500 2000 2500 3000 3500 4000-200
-150
-100
-50
0
Frequency (Hz)
Phase(degrees)
0 500 1000 1500 2000 2500 3000 3500 4000-20
-10
0
10
Frequency (Hz)
Magnitude(dB)
28
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
29/65
Grfico de Retardo de Grupo
Se utilizan los comandos:
[G,F]=grpdelay(num,den)[G,F]=grpdelay(num,den,n,Fs)
[G,F]=grpdelay(num,den,f,Fs)
Los argumentos son iguales a los del caso anterior.
29
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
30/65
Ejemplo: Continuando con el ejemplo anterior
>> [G,F]=grpdelay(num,den);>> grpdelay(num,den);>> figure,grpdelay(num,den,1024,Fs);
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
2
4
6
8
10
12
Normalized Frequency (rad/sample)
Groupdelay(samples)
0 500 1000 1500 2000 2500 3000 3500 40000
2
4
6
8
10
12
Frequency (Hz)
Groupdelay(samp
les)
30
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
31/65
Anlisis de Polos y Ceros de Funciones deTransferencia
Para estudiar la estabilidad de los sistemas LTI.
Funcin de transferencia:
Ganancia polo cero:
31
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
32/65
Obtencin de Polos y Ceros
Se realiza una transformacin del dominio tfal dominio zp.
[z,p,k]=tf2zp(num,den)
Dnde los vectores:z:cerosp:polosk:ganancia de cada numerador de tf.
De manera inversa:
[num,den]=zp2tf(z,p,k)
32
http://lonely113.blogspot.com
j l l fil i l d
-
8/13/2019 Filtros digitales MATLAB
33/65
Ejemplo: Con el filtro implementadoanteriormente.
>> num=[1 1.1];>> den=[1 0 -0.1];>> [z,p,k]=tf2zp(num,den)z =
-1.1000
p =0.3162-0.3162
k =1
>> [num,den]=zp2tf(z,p,k)num =
0 1.0000 1.1000den =
1.0000 0 -0.1000
33
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
34/65
Grfico de Polos y Ceros
Se utiliza el comando:zplane(z,p)
Si hay polos fuera del crculo unitario significa que el sistema es inestable.Continuando con el ejemplo anterior:
>> zplane(z,p)
-1 -0.5 0 0.5 1
-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Real Part
ImaginaryPart
34
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
35/65
Uso del FVTool
FVTool(Filter Visualization Tool) Es una herramienta que simplificael trabajo de estudiar el comportamiento de los filtros.
Se trata de una interfaz GUI para el anlisis de filtros.
35
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
36/65
Llamada al FVtool
Se llama a la herramienta con el comando:
fvtool(num,den)
Donde: numy dencorresponden al filtro en estudio.
Continuando con el ejemplo anterior:
>>fvtool(num,den)
36
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
37/65
Configuracin de FVtool
El eje de frecuencias por defecto no se corresponde conlos valores correctos. Para configurarlo correctamente:
MenAnalysis>Sampling Frecuency. En el cuadro
Fsse introduce el valor de la frecuencia de muestreo.
37
http://lonely113.blogspot.com
L h i t F t l it i li
-
8/13/2019 Filtros digitales MATLAB
38/65
La herramienta Fvtool permite visualizardiferentes respuestas del filtro en estudio
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 escaln Grfico de polos y ceros Etc
38
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
39/65
Ejemplo:
Respuesta al impulso
Respuestas de Magnitud y fase
39
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
40/65
Visualizacin de Mltiples Filtros
Es posible visualizar la respuesta de varios filtros en simultneo.
Ejemplo:
>> num1=[1 1];>> den1=[1];>> num2=[1 -1];>> den2=[1];
>> fvtool(num1,den1,num2,den2)
40
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
41/65
Diseo de Filtros Digitales en Matlab
Los filtros elementales son los siguientes:
41
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
42/65
Diseo de Filtros IIR
IIR: Infinite Impulse Response.
Funcin de transferencia:
Respuesta en frecuencia:
42
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
43/65
Tipos y Caractersticas de Filtros IIR43
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
44/65
Especificaciones Para un Filtro Pasabanda
Para el diseo de un filtro pasabanda se especifica:
fstop1:Frecuencia stop 1. fpass1:Frecuencia pass 1. fpass2:Frecuencia pass 2.
fstop2:Frecuencia stop 2. Rp:Rizado en la banda de paso en dB. Rs:Atenuacin en la banda de supresin en dB.
44
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
45/65
Diseo de un Filtro Pasabanda
El diseo de filtros en Matlab se realiza con valoresnormalizados. Para esto se realiza:
Especificar Fs. Fnyquist=Fs/2 Ws(1)=fstop1/Fnyquist Wp(1)=fpass1/Fnyquist Wp(2)=fpass2/Fnyquist Ws(2)=fstop2/Fnyquist
DndeWsyWpson vectores de frecuencias normalizadas.
45
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
46/65
Diseo de un Filtro Butterworth
1. Determinar el orden del filtro para las especificaciones:
[nB,WnB]=buttord(Wp,Ws,Rp,Rs)
Wp,Ws, Rpy Rscorresponden a las especificaciones.WnB: Frecuencia a -3 dB.
2. Obtener los coeficientes del filtro.
[numB,denB]=butter[nB,WnB]
En el diseo de filtros Pasabanda o rechazo de banda el orden delfiltro resulta ser en realidad el doble del especificado por elcomandobuttord.
46
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
47/65
Ejemplo: Diseo de un filtro Butterworth
>> 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 =22WnB =
0.2958 0.5551>>[numB,denB]=butter(nB,WnB);
47
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
48/65
Diseo de un Filtro Elptico
Se realiza un procedimiento similar al caso anterior.
>> [nE,WnE]=ellipord(Wp,Ws,Rp,Rs)
nE =6
WnE =0.3000 0.5500
>> [numE,denE]=ellip(nE,Rp,Rs,Wp);
Se puede observar que la cantidad decoeficientes es mucho menor que en elcaso de un filtro Butterworth.
48
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
49/65
Verificacin del Diseo de Filtros
Con la herramienta Fvtool.
>> fvtool(numB,denB,numE,denE)
Se observa que ambos filtros sonestables.
49
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
50/65
Ejemplo: Filtrando el archivo tuner1.wav
>> [xt,fs]=wavread('tuner1');>> yt=filter(numE,denE,xt);>> soundsc(xt,fs)>> soundsc(yt,fs)
0 500 1000 1500 2000 2500 3000 3500 4000
0
5
10
15
20
25
30
35
Espectro de xt
500 1000 1500 2000 2500 3000 3500 4000
0
2
4
6
8
10
Espectro de yt
50
http://lonely113.blogspot.com
Llamada a los Comandos de Diseo de
-
8/13/2019 Filtros digitales MATLAB
51/65
Llamada a los Comandos de Diseo deFiltros
Los ms usuales son los siguientes:
Butterworth Pasabajas
[num,den]=butter(nB,Wn)
Elptico Pasabajas
[num,den]=ellip(nE,Rp,Rs,Wp)
Butterworth Pasaaltas
[num,den]=butter(nB,Wn,high)
Elptic0 Pasaaltas
[num,den]=ellip(nE,Rp,Rs,Wp,high)
51
http://lonely113.blogspot.com
Di d Fil FIR
-
8/13/2019 Filtros digitales MATLAB
52/65
Diseo de Filtros FIR
Funcin de transferencia:
Respuesta en frecuencia:
FIR: Finite Impulse Response.
52
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
53/65
Diseo Mediante Mtodo de Ventanas
Se multiplica la respuesta en el tiempo de un filtro ideal con una funcinventana. Truncando la respuesta ideal a un nmero finito de elementos.
Se realiza mediante el comando:
num=fir1(n,Wp)
Dnde:n: Orden del filtro
Wp:Vector que contiene las frecuencias de corte. Si slo tieneun elemento se obtiene un filtro pasabajas y si contiene doselementos se obtiene un filtro pasabanda.
53
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
54/65
Ejemplo:
Se disea un filtro mediante el mtodo de ventanas para lassiguientes especificaciones:
Fs=8000 Hzfpass1=2200 Hzfpass2=3200 HzRp=1 dBRs=60 dB
Orden=127
54
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
55/65
Ejemplo:
>> 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)
55
http://lonely113.blogspot.com
Wintool Para diseo de Funciones
-
8/13/2019 Filtros digitales MATLAB
56/65
Wintool Para diseo de FuncionesVentana
>> wintoolInitializing Window Design & Analysis Tool ..... done.
Herramienta con interfaz GUI quepermite disear y visualizar larespuesta en el tiempo y en frecuenciade varios tipos de funciones ventana.
56
http://lonely113.blogspot.com
Propiedades de Algunas Funciones
-
8/13/2019 Filtros digitales MATLAB
57/65
Propiedades de Algunas FuncionesVentana de Longitud M
Tipo Anchura de LbuloPrincipal
Mnima Atenuacinen la Banda de
RechazoAnchura de Banda
de Transicin
Rectangular 2Fs/(2M+1) 20.9 0.46Fs/MHann 4Fs/(2M+1) 43.9 1.55Fs/M
Hamming
2Fs/(2M+1)
54.5
1.55Fs/M
Blackman 6Fs/(2M+1) 75.3 2.78Fs/M
57
http://lonely113.blogspot.com
Diseo de un Filtro FIR Utilizando una
-
8/13/2019 Filtros digitales MATLAB
58/65
Diseo de un Filtro FIR Utilizando unaVentana Diseada Previamente
Se disea la funcin ventana Blackman de longitud 128mediante la herramienta wintool y se exporta a Matlab conSave to workspace. El nombre por defecto es window_1.
58
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
59/65
Continuacin
>> numBlackman=fir1(n,Wp,window_1);>>fvtool(numBlackman)
59
http://lonely113.blogspot.com
Ejemplo: Filtrando el archivo de audio
-
8/13/2019 Filtros digitales MATLAB
60/65
Ejemplo: Filtrando el archivo de audiotuner1.wav con el filtro diseado.
>> [xt,Fs]=wavread('tuner1');>> yt=filter(numBlackman,1,xt);>> soundsc(xt,Fs)>> soundsc(yt,Fs)
500 1000 1500 2000 2500 3000 3500 4000
0
1
2
3
4
5
6
Espectro de yt
0 500 1000 1500 2000 2500 3000 3500 4000
0
5
10
15
20
25
30
35
Espectro de xt
60
http://lonely113.blogspot.com
Diseo de Filtros Mediante la
-
8/13/2019 Filtros digitales MATLAB
61/65
Diseo de Filtros Mediante laHerramienta FDATool
Fdatool (Filter Design and Analysis tool) es unaherramienta con interfaz GUI para el diseo de filtrosdigitales.
>> fdatool
61
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
62/65
Diseo de un Filtro usando FDATool
Se disear un filtro pasaaltas con las siguientes especificaciones:
PasaaltasTipo IIR ElpticoMnimo orden posible
Fs=8000 HzFstop=2800 HzFpass=3200 HzRs=60 dBRp=1 dB
Se introducen todas estasEspecificaciones en laherramienta y un clic enDesign Filter.
62
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
63/65
Exportacin al rea de Trabajo
Se realiza el siguiente procedimiento:
1. Clic derecho en Structure en el campo Current filterinformationy en seguida se escoge convert to single section.
2. Men File>ExportSe le da nombres al numerador y denominador delfiltro. Luego clic en Export.
63
http://lonely113.blogspot.com
Ejemplo: Filtrando el archivo de audio
-
8/13/2019 Filtros digitales MATLAB
64/65
Ejemplo: Filtrando el archivo de audiotuner1.Wav
>> [xt,Fs]=wavread('tuner1');>> yt=filter(numHp,denHp,xt);>> soundsc(xt)>> soundsc(yt)
0 500 1000 1500 2000 2500 3000 3500 4000
0
5
10
15
20
25
30
35
Espectro de xt
500 1000 1500 2000 2500 3000 3500 40000
0.2
0.4
0.6
0.8
1
1.2
Espectro de yt
64
http://lonely113.blogspot.com
-
8/13/2019 Filtros digitales MATLAB
65/65