Filtros FIR
Existen diversos métodos para diseñar filtros en Matlab, por ahora solo se hará mención de 2 métodos.
FIR1
Diseña un filtro FIR (Finite Impulse Response) basado en ventanas.
Se pueden diseñar filtros pasa alta, pasa baja, pasa banda y rechaza banda.
La sintaxis que puede aceptar este comando es la siguiente:1. b = fir1(n,Wn)
Esta función regresa un vector b que contiene n+1 coeficientes, en un filtro pasa bajas de orden n. Este es un filtro de tipo ventana (Hamming), de fase lineal, con frecuencia de corte Wn, normalizada a la frecuencia de Nyquist.
Wn es un número entre 0 y 1, donde 1 corresponde a la frecuencia de Nyquist.
2. b = fir1(n,Wn,'ftype')
Con esta opción adicional podemos especificar eltipo de filtro que queremos, cambiando 'ftype' por las siguientes opciones:
'high' Entrega un filtro pasa altas de frecuencia de corte Wn.
'stop' Entrega un filtro rechaza banda de frecuencia de corte Wn= [w1 w2] para especificar el rango del filtro.
'DC-1' Entrega la primera banda de un filtro pasa banda.
'DC-0' Entrega la primera banda de un filtro rechaza banda.
Para filtros pasa y rechaza banda,si se introducen valores impares, Matlab le agrega 1. Debido a que solo trabaja con valores pares.
3. b = fir1(n,Wn, window)
Con esta opción se puede especificar el tipo de ventana que se desee utilizar para diseñar el filtro FIR, para esto debemos de cambiar la opción window con algunas de las siguientes:
barthannwin
bartlett
blackman
blackmanharris
bohmanwin
chebwin
flattopwin
gausswinhamming
hann
kaiser
nuttallwin
parzenwin
rectwin
taylorwin
triang
tukeywinR
4.
5. b = fir1(n,Wn,'ftype',window)
6. Aquí se puede especificar aún más las características del filtro deseado, cambiando las opciones con las que uno desee, las opciones ftype y window se nombran como las opciones anteriores.
7.
8. Método de ventanas.
9. En el siguiente método se aplican una determinada serie de pasos, estose hace cuando se tienen algunos otros valores con los cuales diseñar un filtro.
10. Para esto se hace uso del comando “kaiserord”, el cual funciona de la siguiente manera:
11. Kaiserord devuelve un orden de filtro N y beta parámetro para especificar una ventana de Kaiser para su uso con la función FIR1. Dado un conjunto de especificaciones en el dominio de la frecuencia, kaiserord estima el ordendel filtro FIR mínimo que se reunirá aproximadamente a las especificaciones. Kaiserord convierte las especificaciones del filtro dado en la banda de paso y la banda de parada, así como las ondulaciones o rizos de banda y convierte las frecuencias de corte en la forma necesaria para el diseño de filtros FIR.
12. Sin taxis:
1. [n,Wn,beta,ftype] = kaiserord(f,a,dev)
2. [n,Wn,beta,ftype] =kaiserord(f,a,dev,fs)
13. En las primeras 2 opciones, el comando devuelve 4 variables:
N. Orden aproximado del filtro
Wn. Frecuencia de corte normalizada.
Beta. Parámetro de la ventana kaiser.
Ftype. Tipo de filtro que se está diseñando
14. Las variables que se le introducen son:
15. F. frecuencia de corte o banda de frecuencias.
16. a. Especifica la determinada amplitud que deben de tener las bandas delfiltro.
17. dev. Es un vector del mismo tamaño que a, que especifica el error máximo permisible o la desviación entre la respuesta de frecuencia del filtro de salida y su amplitud deseada, para cada banda.
18. Fs. Es la frecuencia de muestro.
19. Una vez obtenidos los parámetros arrojados por kaiserord, estos se introducen en la función FIR1, para que cree el filtro deseado.
20. 2.- Diseñar lossiguientes filtros:
A. Filtro pasa bajas con ventana Blackman:
21. Fbpaso= 200 Hz
22. Fbparo= 300 Hz
23. Código:
24. %Diseño de un filtro pasa bajas de ventana blackman
25. clear;clc;
26. [f,fs]=wavread('C:\Users\User\Music\Rayman');
27. fsamp = fs; % define frecuencia de muestreo
28. fcuts = [200 300]; % frecuencia del pasabanda Fs1 Fp1 Fp2 Fs2
29. mags = [1 0 ]; %magnitud de la respuesta en la...
Regístrate para leer el documento completo.