Filtros digitales MATLAB

download Filtros digitales MATLAB

of 65

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