Sin categoría

Filtros Digitales – Filtros FIR, IIR, AR, MA, ARMA – Procesamiento de señales

Filtro es un nombre genérico que se le da a un sistema lineal invariante en el tiempo (LTI por sus siglas en inglés) diseñado para un trabajo específico de selección de frecuencia o discriminación de frecuencia. Por lo tanto, los sistemas LTI de tiempo discreto también se denominan filtros digitales. Hay dos tipos de filtros digitales: filtros FIR y filtros IIR.

Introducción

Un sistema discreto LTI también se puede describir mediante una ecuación en diferencias de coeficientes constantes lineales de la forma:

La imagen tiene un atributo ALT vacío; su nombre de archivo es image-75.png

Esta ecuación describe un enfoque recursivo para calcular la salida para la muestra n (o n muestras) dados los valores de entrada y los valores de salida calculados previamente. En la práctica, esta ecuación se calcula hacia adelante en el tiempo, desde n=-∞ a n=+∞. Por tanto, otra forma de escribir la ecuación (1) es:

La imagen tiene un atributo ALT vacío; su nombre de archivo es image-49.png
Filtro FIR 

Si la respuesta al impulso unitario de un sistema LTI es de duración finita, el sistema se denomina filtro de respuesta de impulso de duración finita (o FIR: finite-duration impulse response). Por tanto, para un filtro FIR h[n]=0 para n<n1 y para n>n2. La siguiente parte de la ecuación de diferencia (2) describe un filtro FIR causal:

Además, h[0]=bo , h[1]=b1 ,… h[M]=bM. mientras que todos los demás h[n]’s valen 0. Los filtros FIR también se denominan filtros no recursivos o de promedio móvil (MA: non-recursive or moving average). En Matlab, los filtros FIR se representan como valores de respuesta de impulso {h[n]} o como coeficientes de ecuación de diferencia {bm} y {a0 =1}. Por lo tanto, para implementar filtros FIR en Matlab, podemos usar la función conv(x,h) o la función filter(b,1,x). Vea el siguiente ejemplo:

Ejemplo 1. 

Let the following rectangular pulse x[n] be an input to an LTI system with impulse response h[n]:

Determine the output y[n] of the system.

Solution:

In Elementary sequences we have implemented the function stepseq for plotting the unit step function in discrete time, or any combination as example 1. Next Script allows plotting x[n].

n=[0:40];
x=stepseq(0,0,40)-stepseq(10,0,40);
stem(n,x)
xlabel(‘n’); ylabel(‘x[n]’)

Figure 1. Input sequence x[n], example 1.

Next Script allows plotting h[n].

n=[0:40];
h=(0.9).^n;
stem(n,h)
xlabel(‘n’); ylabel(‘h[n]’)

Figure 2. Impulse response h[n] for system in example 1.

Now, we use conv Matlab function to determine y[n]:

y=conv(x,h);
n=[0:80];
stem(n,y);
xlabel(‘n’); ylabel(‘y[n]’)

Figure 3. Output sequence y[n]=x[n]*h[n] for example 1.

Another approach is by using the filter function:

n=[0:40];
x=stepseq(0,0,40)-stepseq(10,0,40);
h=(0.9).^n;
y=filter(h,1,x);
stem(n,y)
xlabel(‘n’); ylabel(‘y[n]’)
grid

What yields:

Figure 4. Output sequence y[n]=x[n]*h[n] for example 1.

Hay una diferencia en los resultados de estas dos implementaciones que debe tenerse en cuenta. Como puede ver en la Figura 3, la secuencia de salida de la función conv(x,h) tiene una longitud mayor que las secuencias x[n] y h[n]. Por otro lado, la secuencia de salida de la función de filter(h,1,x) en la Figura 4 tiene exactamente la misma longitud que la secuencia de entrada x[n]. En la práctica, para la convolución de señales digitales se recomienda el uso de la función filter.

Cuidado: la función filter se puede utilizar para calcular la convolución indirectamente. Eso fue posible debido a que la respuesta al impulso en el ejemplo 1 era una secuencia exponencial infinita orientada a un lado para la cual podríamos determinar una representación de ecuación de diferencia. No todas las respuestas impulsionales de longitud infinita se pueden convertir en ecuaciones en diferencias.

IIR Filter

If the impulse response of an LTI system is of infinite duration, then the system is called an infinite-duration impulse response (or IIR) filter. The following part of the difference equation (2):

Si la respuesta al impulso de un sistema LTI es de duración infinita, entonces el sistema se denomina filtro de respuesta al impulso de duración infinita (o IIR: infinite-duration impulse response). Considere la siguiente parte de la ecuación en diferencias (2):

La ecuación previa describe un filtro recursivo en el que la salida y[n] se calcula de forma recursiva a partir de sus valores calculados previamente y se denomina filtro autorregresivo (AR: autoregressive). La respuesta al impulso de dicho filtro es de duración infinita y, por lo tanto, representa un filtro IIR. La ecuación general (2) también describe un filtro IIR. Tiene dos partes: una parte AR y una parte MA. Dicho filtro IIR se denomina promedio móvil autorregresivo o filtro ARMA. En Matlab, los filtros IIR se describen mediante los coeficientes de ecuación de diferencia {bm} y {ak} y se implementan mediante la función de filter(b,a,x). Vea el siguiente ejemplo:

Example 2

Given the following difference equation:

  1. Calculate and plot the impulse response h[n] at n=-20,…,100
  2. Calculate and plot the unit step response s[n] at n=-20,…,100
  3. Is the system specified by h[n] stable?

Solution:

  1. To determine h[n] we use the following script:

n=[-20:120];
a=[1,-1,0.9];
b=[1];
h=impz(b,a,n);
stem(n,h)
grid
xlabel(‘n’); ylabel(‘h[n]’)

The script yields:

Figure 1. Impulse response h[n] for example 1.
  1. 2. To determine s[n] we use the following script:

n=[-20:120];
a=[1,-1,0.9];
b=[1];
x=stepseq(0,-20,120);
s=filter(b,a,x);
stem(n,s)
xlabel(‘n’); ylabel(‘s[n]’);

The script yields:

Figure 2. Step response s[n] for example 1.
  1. Is the system specified by h[n] stable?

From Figure 1 we see that h[n] is practically zero n>120. Hence the sum:

Can be determined with the following script:

sum(abs(h))

This yields:

ans = 14.8785

That is to say:

This result implies that the system is stable. An alternate approach is to use the stability condition of the roots:

z=roots(a);
magz=abs(z)

magz =

0.9487
0.9487

Dado que la magnitud de ambas raíces es menor que uno, el sistema es estable.

En realidad, hay dos formas de resolver una ecuación en diferencias con coeficientes constantes lineales: encontrar la solución particular y la homogénea; encontrar las respuestas de entrada cero y de estado cero (the zero-input and the zero-state responses). Es mediante el uso de la transformada z que podemos derivar un método para obtener ambos.

Relacionado: Resolver ecuaciones diferenciales en tiempo discreto con Matlab

Fuentes:

  • Digital Signal Processing Using Matlab, 3erd ed
  • Fundamentos_de_Señales_y_Sistemas_usando la Web y Matlab
  • Oppenheim – Señales y Sistemas
  • Análisis de Sistemas Lineales Asistido con Scilab – Un Enfoque desde la Ingeniería Eléctrica.

Revisión literaria hecha por:

Prof. Larry Francis Obando – Technical Specialist – Educational Content Writer

Se hacen trabajos, se resuelven ejercicios!!

WhatsApp:  +34633129287  Atención Inmediata!!

Twitter: @dademuch

Copywriting, Content Marketing, Tesis, Monografías, Paper Académicos, White Papers (Español – Inglés)

Escuela de Ingeniería Electrónica de la Universidad Simón Bolívar, USB Valle de Sartenejas.

Escuela de Ingeniería Eléctrica de la Universidad Central de Venezuela, UCV Caracas.

Escuela de Turismo de la Universidad Simón Bolívar, Núcleo Litoral.

Contacto: España. +34633129287

Caracas, Quito, Guayaquil, Jaén. 

WhatsApp:  +34633129287   

Twitter: @dademuch

FACEBOOK: DademuchConnection

email: dademuchconnection@gmail.com

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s