Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I. 1.
INFORME DEL PROYECTO
PP
2. YY
1. Título
Diseño de una aplicación basada en Matlab, para el modelado de Filtros Digitales FIR
mediante la Técnica de Ventanas.
2. Objetivos
2.1. General
Diseñar una aplicación basada en el software Matlab que permita modelar filtros digitales
de respuesta finita mediante el método de las ventanas.
2.2. Específicos
Conocer detenidamente las ventajas de los filtros de respuesta finita (FIR).
Discernir la principal aplicación del método de ventaneo, en las diferentes
configuraciones de filtros FIR.
Analizar técnicas comunes para el diseño de filtros discretos en el dominio de la
frecuencia, así como los parámetros básicos que especifican a un filtro.
Analizar técnicas del filtraje, así como algoritmos que permitan la implementación
de diferentes tipos de filtros usando modelos de identificación que se utilizan en
equipos de la ingeniería electrónica.
Analizar la facilidad que genera la aplicación en el modelado de filtros FIR
3. Resumen
El presente proyecto hace hincapié en el diseño de filtros digitales FIR por medio de la
técnica de ventaneo, la cual nos ayuda a generar filtros más exactos y más rápidos según
nuestras necesidades. Está diseñado para cuatro tipos de filtros: Pasa bajo, alto, banda y
rechaza banda. La técnica que se utilizó consta de varias ventanas: Rectangular,
Blackman, Hanning y Kaiser, con las cuales se hicieron comparaciones de respuestas para
obtener el filtro más adecuado. El diseño se realizó mediante una interfaz programada en
Matlab.
5. Introducción
Los filtros son sistemas que se diseñan principalmente para eliminar ciertas componentes
no deseadas de una señal. Generalmente estas componentes no deseadas se describen en
función de sus contenidos en frecuencias. Un filtro ideal permite el paso de ciertas
frecuencias sin modificarlas y elimina completamente otras; esto en la realidad no se puede
lograr con exactitud ya que no existen componentes tan precisos en el mercado razón por lo
que se tienen aproximaciones. El intervalo de frecuencias que deja pasar el filtro se le
denomina banda de paso y todas las frecuencias que elimina se le llama banda de supresión.
Podemos darnos cuenta que la tendencia actual es la migración de la tecnología analógica a
la digital, en este caso el filtrado digital ofrece varias ventajas con respecto a los filtrados
analógicos:
• El ancho de banda de un filtro digital está limitado por la frecuencia de muestreo, mientras
que en un filtro analógico, este parámetro depende de las características de los componentes
físicos.
• Se pueden implementar tanto en software como en hardware.
Se conocen usualmente dos tipos de filtros que se eligen según las necesidades y la
naturaleza del problema. Estos filtros se les conocen como FIR e IIR.
Este proyecto se enfocó al diseño de filtros FIR, ya que son más rápidos que los IIR y tienen
una repuesta de fase lineal.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
6. Materiales y Metodología
En el caso de un filtro con respuesta impulsional finita (FIR), una muestra de la salida se
puede definir como una combinación linear de muestras de la entrada presentes y pasadas.
Podemos expresar esta relación con una ecuación del tipo:
Esta ecuación expresa que la muestra actual de la salida 𝑦[𝑛] es igual a la suma de las
muestras de la entrada actual 𝑥[𝑛] multiplicada por el factor 𝑎0 y de la muestra
anterior 𝑥[𝑛 − 1] multiplicada por el factor 𝑎1 , y de todas las muestras anteriores hasta el
instante [𝑛 − 𝑀] multiplicadas por su respectivo factor.
Los factores 𝑎𝑖 son los coeficientes del filtro. Modificando estos coeficientes podremos
variar de forma drástica las características del filtro.
La serie de coeficientes 𝑎0 , 𝑎1 , ... constituye la respuesta impulsional del filtro. De hecho,
podemos verificar que la respuesta del filtro a la señal impulso (digital):
𝑥 = {1,0,0,0,0,0,0, … }
Es la señal de salida:
𝑦 = {𝑎0 , 𝑎1 , 𝑎2 , 𝑎3 , … , 𝑎𝑁 , 0, 0, 0, … }
El número de muestras anteriores a la actual que se utilizan en un filtro para generar una
muestra de salida corresponde al orden del filtro. Un filtro de primer orden utiliza una sola
muestra precedente. De esta forma, un filtro recursivo de segundo orden se expresaría con
la ecuación siguiente:
Este filtro utiliza dos muestras anteriores de entrada y dos muestras anteriores de la salida.
Es la forma que tendría un filtro paso de banda que se utiliza bastante, denominado biquad
(de bicuadrático). Mientras mayor sea el orden de un filtro (cuantas más retardos se utilicen
en el circuito), el corte del filtro será más abrupto. [3]
Para construir un filtro paso bajo FIR simple (que atenuará las frecuencias altas de una
señal de entrada), sólo hace falta efectuar la media de los valores de la muestra actual y la
muestra precedente, como ilustra el diagrama de bloques de la figura 1.
Se puede entender intuitivamente el efecto paso bajo de esta operación, ya que al efectuar
la media atenuamos las variaciones bruscas de la señal, lo que origina un suavizado de la
señal de entrada. Este filtro es un ejemplo del filtro de tipo (moving average) (promedio
móvil). Veamos cuál sería la respuesta de este filtro a diferentes señales de entrada.
Consideremos primero una señal constante:
𝑥 = {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, … }
𝑦 = {0,5 , 1, 1, 1, 1, 1, 1, 1, 1, 1, … }
Por lo tanto, después de un transitorio corto (la primera muestra que vale 0.5), la señal de
salida es igual a la señal de entrada: una señal constante de amplitud 1. Para una señal
constante, que tiene una frecuencia nula, verificamos que las bajas frecuencias no se
atenúan en el filtrado.
Consideremos ahora una señal que oscila entre −1 y +1 a la frecuencia de Nyquist (la
frecuencia máxima):
𝑥 = {+1, − 1, + 1, − 1, + 1, − 1, +1, − 1, + 1, − 1, … }
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
En este caso, la señal de salida se atenúa muy rápidamente como podríamos preveer:
𝑦 = {0,5 , 0, 0, 0, 0, 0, 0, 0, 0, 0, … }
𝜋. 𝑓
𝐴(𝑓) = 𝐶𝑜𝑠 ( )
𝑓𝑠
𝑓
La frecuencia de corte vale 4𝑠 (un cuarto de la frecuencia de muestreo). La simplicidad del
filtro se paga con una banda de transición ancha.
La estructura de un filtro paso alto FIR elemental es muy similar a la del filtro paso bajo
FIR que acabamos de ver, pero en vez de sumar dos muestras consecutivas, las restamos:
El efecto paso alto se explica fácilmente: al restar dos muestras sucesivas atenuamos la
señal en los puntos en los que varía lentamente (bajas frecuencias) y acentuamos allí donde
la señal varía rápidamente (altas frecuencias). La ganancia en función de la frecuencia viene
dada por:
𝜋. 𝑓
𝐴(𝑓) = 𝑆𝑖𝑛 ( )
𝑓𝑠
El diagrama de bloques de este filtro está representado en la figura 3, así como su función
de transferencia en la figura 4.
Este filtro es de segundo orden, ya que utiliza un retardo de dos períodos de muestreo como
máximo (para obtener 𝑥[𝑛 − 2]). La ganancia del filtro en función de la frecuencia viene
dada por la siguiente ecuación:
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
2. 𝜋. 𝑓
𝐴(𝑓) = 𝑆𝑖𝑛 ( )
𝑓𝑠
𝑓
lo cual corresponde a un filtro paso de banda de frecuencia central 4𝑠 .Si en vez de
restar sumáramos las muestras 𝑥[𝑛] y 𝑥[𝑛 − 2], obtendríamos un filtro rechazo de
𝑓
banda de frecuencia central 4𝑠 .
Esta ventana tiene un comportamiento temporal de medio ciclo de una señal cosenoidal y
normalizado en amplitud a la unidad. Esta ventana de caracteriza por el argumento N impar.
Su ecuación es la siguiente y genera N muestras:
2𝜋𝑛
𝑤(𝑛) = { 0.64 − 0.46 𝐶𝑜𝑠 ( ) ; 0≤𝑛≤𝑁
𝑁
0; 𝑜𝑡𝑟𝑜 𝑣𝑎𝑙𝑜𝑟
𝑁∆𝑓 = 3.3
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
Esta ventana tiene un comportamiento temporal definido por una serie trigonométrica de
Fourier para aproximarse mejor a un espectro que carece de altas frecuencias. Esta ventana
de caracteriza por el argumento N impar. Su ecuación es la siguiente y genera N muestras:
2𝜋𝑛 4𝜋𝑛
𝑤(𝑛) = {0.42 − 0.5 𝐶𝑜𝑠 ( 𝑁 ) + 0.08𝐶𝑜𝑠 ( 𝑁 ) ; 0 ≤ 𝑛 ≤ 𝑁
0; 𝑜𝑡𝑟𝑜 𝑣𝑎𝑙𝑜𝑟
𝑁∆𝑓 = 5.5
La ventana rectangular es utilizada comúnmente para analizar las señales transitorias para
conocer la presencia de eventos continuos de tipo sinusoidales. Su ecuación es la siguiente:
1; 0 ≤ 𝑛 ≤ 𝑁
𝑤(𝑛) = {
0; 𝑜𝑡𝑟𝑜 𝑣𝑎𝑙𝑜𝑟
𝑁∆𝑓 = 0.9
La ventana Hanning llamada por su inventor Von Hann, tiene la forma de un ciclo de una
onda cosenoidal, a que se agrega 1 para que asi siempre sea positivo. Su ecuación es la
siguiente:
2𝜋𝑛
𝑤(𝑛) = {0.5 − 0.5 𝐶𝑜𝑠 ( 𝑁 ) ; 0 ≤ 𝑛 ≤ 𝑁
0; 𝑜𝑡𝑟𝑜 𝑣𝑎𝑙𝑜𝑟
𝑁∆𝑓 = 3.1
Es una ventana w(n) muy cercana a la ideal utilizada para procesamiento digital de señales
definida por:
1
𝑛−𝛼 2 2
𝐼0 [𝛽 [1 − ( 𝛼 ) ] ]
𝑤(𝑛) = ;0 ≤ 𝑛 ≤ 𝑁
𝐼0 (𝛽)
0 ; 𝑜𝑡𝑟𝑜 𝑣𝑎𝑙𝑜𝑟
{
Los filtros más corrientes son los filtros paso bajo (Low Pass, LP), paso alto (High Pass,
HP), paso de banda (Band Pass, BP) y los filtros rechazo de banda (o paso no banda) (Band
Reject, Band stop o Notch). En la figura 5 se representan estos 4 tipos de filtros mediante
su respuesta en frecuencia o espectro de amplitud. Cada punto de la respuesta en frecuencia
nos indica la atenuación a la que se someterá una señal a una frecuencia determinada.
Los filtros paso bajo (LP) dejan pasar las frecuencias que están por debajo de una
determinada frecuencia.
Los filtros paso alto (HP) dejan pasar las frecuencias que están por encima de una
determinada frecuencia.
Estos dos tipos de filtros están definidos por su frecuencia de corte, que es la frecuencia a
1
la cual la amplitud de la señal se reduce a 0.707 ( ) de su valor máximo, es decir, sufre
√2
3 dB de atenuación.
Los filtros paso banda (BP) dejan pasar las frecuencias que están situadas en una
determinada banda de frecuencia, es decir, entre dos determinadas frecuencias.
Los filtros rechazo de banda (BR) dejan pasar todas las frecuencias excepto las
que están situadas en una determinada banda de frecuencia, es decir, entre dos
determinadas frecuencias f1 y f2. Estas frecuencias son las frecuencias a las que la
1
amplitud de la señal se reduce a 0.707 ( 2) de su valor máximo, es decir, sufre 3
√
dB de atenuación.
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
Estos dos tipos de filtros están definidos por su frecuencia central y su ancho de
banda, que sería la diferencia entre las frecuencias de corte inferior y superior.
Como se ilustra en la figura 5, las transiciones entre la banda pasante y la banda de
corte no son generalmente limpias en los filtros reales. Existe, por tanto, una banda
de transición entre la zona donde teóricamente todo pasa y la zona donde
teóricamente nada pasa.
Los filtros pueden combinarse en serie o en paralelo para obtener respuestas
frecuenciales más complejas. [5]
6.2 Metodología
B = fir1(N,Wn,type,window);
Diseña un filtro FIR pasa bajo de orden N (longitud N+1) y frecuencia de corte Wn
(normalizada con respecto a la frecuencia de Nyquists, 0 ≤ Wn ≤ 1). Se pueden especificar
otro tipo de filtros de la misma forma que con los filtros IIR mediante el parámetro type.
Por defecto la función FIR usa la ventana de Hamming. Otro tipo de ventanas pueden
también especificarse:
Para la ventana de Rectangular:
B=fir1(N,Wn,boxcar(N+1));
7. Procedimiento
Luego de analizar la parte interfaz gráfica, se procede a plasmarlas en lo que se hace conocer
dentro de este software como “guide”, en donde para el caso de nuestro proyecto ha quedado
de la siguiente manera:
Luego de cada botón, text label, etc, asignado en la interfaz gráfica, se procedió a la
programación de los mismos, generando un código fuente que se lo adjunta al final de este
informe.
8. Conclusiones
Los filtros de respuesta finita al impulso (FIR finite impulse response) tienen la ventaja
de ser utilizados con facilidad y poseer fase lineal para una respuesta al impulso par o
impar.
La técnica de ventaneo se basa en la respuesta de un filtro al aplicarle la ventana
deseada por medio de una multiplicación de sus ecuaciones, la ventana hace que en el
filtro real diseñado se tengan menos variaciones de transición o supresión y con esto
se logre y filtrado más efectivo.
Cabe mencionar que las diferentes técnicas de ventaneo son utilizadas de acuerdo con
las especificaciones que el equipo o usuario requieran
La realización de este programa nos facilita en gran medida el diseño de los filtros
digitales FIR mediante la técnica de ventaneo.
9. Referencias bibliográficas
[1] Introduccion Filtros FIR. Disponible en: http://ocw.uv.es/ingenieria-y-arquitectura/filtros-
digitales/tema_3._diseno_de_filtros_fir.pdf
[2] Smith, J. O. “Aplicaciones de los Filtros FIR”. Disponible en:
http://ccrmawww.stanford.edu/˜
jos/filters/
[3] Orden del Filtro. “Ejemplos Filtros FIR”. Disponible en:
http://www.dtic.upf.edu/~egomez/teaching/sintesi/SPS1/Tema7-FiltrosDigitales.pdf
[4] Definiciones de Ventanas. Disponible en: http://profesores.fi-
b.unam.mx/maixx/Biblioteca/Librero_Telecom/Libro_ProcDigitSeniales_Ibarra/DSP_Cap
_18_ventanas.pdf
[5] Introduccion al filtrado digital “Tipos de Filtros”. Disponible en:
http://www.dtic.upf.edu/~egomez/teaching/sintesi/SPS1/Tema7-FiltrosDigitales.pdf
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
10. Anexo
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
a=imread('uta.jpg');
axes(handles.axes1)
image(a)
axis off
b=imread('fisei.jpg');
axes(handles.axes2)
image(b)
axis off
% --- Outputs from this function are returned to the command line.
function varargout = Principal_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before proyecto is made visible.
function proyecto_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% --- Outputs from this function are returned to the command line.
function varargout = proyecto_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
wn=str2double(get(handles.Fpaso,'String'));
wn2=str2double(get(handles.fpaso2,'String'));
N=str2double(get(handles.orden,'String'));
aprox = handles.type;
TipFil = handles.clase;
switch TipFil
case 1
b = imread ('pasabajo.png');
if aprox == 1
hu=fir1(N,wn); %windowed FIR coefficients (uniform window)
[H,w]=freqz(hu,1,512); %vector de respuesta de frecuencia n-point vector, h, and
the corresponding angular frequency vector,
%w, para el polinomio del denominador de un filtro fir a es 1
elseif aprox == 2
hu=fir1(N,wn,blackman(N+1)); %windowed FIR coefficients (Blackman window)
[H,w]=freqz(hu,1,512); %compute frequency response of filter para el polinomio del
denominador de un filtro fir a es 1
else
hu=fir1(N,wn,kaiser(N+1,5.653)); % Diseña un filtro FIR pasobajo de orden N
(longitud N+1) y frecuencia de corte Wn windowed FIR coefficients (Kaiser window)
[H,w]=freqz(hu,1,512); %compute frequency response of filter
%vector de respuesta de frecuencia n-point vector, h, and the
%corresponding angular frequency vector
end
case 2
b = imread ('pasaalto.png');
if aprox == 1
hu=fir1(N,wn,'high',boxcar(N+1));
[H,w]=freqz(hu,1,512); %frequency response
elseif aprox == 2
hu=fir1(N,wn,'high',blackman(N+1));
[H,w]=freqz(hu,1,512); %frequency response
else
hu=fir1(N,wn,'high',kaiser(N+1,5.653)); %windowed FIR coefficients (Kaiser
window)
[H,w]=freqz(hu,1,512); %compute frequency response of filter
end
case 3
b = imread ('pasabanda.png');
if aprox == 1
fc=[wn, wn2]; %normalized cutoff frequencies
hu=fir1(N,fc,boxcar(N+1)); %filter coefficients
[H,w]=freqz(hu,1,512); %frequency response
elseif aprox == 2
fc=[wn, wn2]; %normalized cutoff frequencies
hu=fir1(N,fc,blackman(N+1)); %filter coefficients
[H,w]=freqz(hu,1,512); %frequency response para el polinomio del denominador de un
filtro fir a es 1
else
fc=[wn, wn2] %normalized cutoff frequencies
hu=fir1(N,fc,kaiser(N+1,5.653)); %filter coefficients
[H,w]=freqz(hu,1,512); %frequency response
end
case 4
b = imread ('rechazabanda.png');
if aprox == 1
fc=[wn, wn2];
hu=fir1(N,fc,'stop',boxcar(N+1));
[H,w]=freqz(hu,1,512); %frequency response
elseif aprox == 2
fc=[wn, wn2];
hu=fir1(N,fc,'stop',blackman(N+1));
[H,w]=freqz(hu,1,512); %frequency response
else
fc=[wn, wn2];
hu=fir1(N,fc,'stop',kaiser(N+1,5.653)); %windowed FIR coefficients (Kaiser
window)
[H,w]=freqz(hu,1,512); %compute frequency response of filter
end
end
axes(handles.axes1);
plot(w/pi,20*log10(abs(H)));
grid on;
title (['Respuesta en Magnitud, Orden:', num2str(N)]);
xlabel('Frecuencia normalizada');
ylabel('|H(e^{jw})|')
axes(handles.axes3);
grid on;
[y,t]= impz(hu,1,10);
stem(t,y,'m');
xlabel('n')
ylabel('Amplitud')
title (['Respuesta al Impulso, Orden:', num2str(N)]);
axes(handles.axes2);
plot(w/pi,unwrap(angle(H)));
grid on;
UNIVERSIDAD TÉCNICA DE AMBATO
FACULTAD DE INGENIERÍA EN SISTEMAS, ELECTRÓNICA E INDUSTRIAL
PERÍODO ACADÉMICO: Marzo/2017 – Septiembre/2017
axes(handles.axes11);
image (b)
axis off
% --------------------------------------------------------------------
function uipanel2_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to uipanel2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if hObject == handles.butter
tipo = 1;
elseif hObject == handles.chevy1
tipo = 2;
elseif hObject == handles.chevy2
tipo = 3;
else
tipo = 4;
end
handles.type = tipo;
guidata(hObject,handles)
% --------------------------------------------------------------------
function uipanel3_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to uipanel3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if hObject == handles.PB
fil = 1;
elseif hObject == handles.PA
fil = 2;
elseif hObject == handles.PBanda
fil = 3;
elseif hObject == handles.PAlto
fil = 4;
end
handles.clase = fil;
guidata(hObject,handles)