Filtro ideal
[gL.edu] Este artículo recoge contribuciones de Daniel Gracia Garallar, elaboradas en el contexto de la Clarificación conceptual en torno a "Métodos numéricos y transformadas", bajo la supervisión de Isaac Seoane.
Definiciones
Como se ha indicado en el artículo filtrado en frecuencia, un filtro ideal es aquel que permite el paso sin distorsión de señales en un determinado intervalo de frecuencias, rechazando completamente el resto[1]. Esto implica que su respuesta será tal que:
- Muestra ganancia constante en su banda de paso.
- Muestra ganancia nula en su banda de rechazo.
- Muestra una transición instantánea en los extremos de banda.
- Muestra una característica de fase lineal sobre la banda de paso.
Así, podemos generalizar que un filtro es ideal si:
Y además:
Filtro ideal paso bajo
Un filtro ideal de paso bajo eliminará cualquier componente espectral superior a su frecuencia de corte . Así, su respuesta en magnitud será tal que:
Filtro ideal paso alto
Un filtro ideal de paso alto eliminará cualquier componente espectral inferior a su frecuencia de corte . Así, su respuesta en magnitud será tal que:
Filtro ideal paso de banda
Un filtro ideal paso de banda eliminará cualquier componente espectral fuera del intervalo de frecuencias . Así, su respuesta en magnitud será tal que:
Filtro ideal supresión de banda
Un filtro ideal de supersión de banda eliminará cualquier componente espectral dentro del intervalo de frecuencias . Así, su respuesta en magnitud será tal que:
Código

El siguiente código de MATLAB ilustra el proceso de filtrado ideal para señales discretas, basado en operaciones sobre el dominio de la frecuencia. Para ello se crea inicialmente una señal formada por dos tonos sinusoidales puros de 20 y 100 Hz (representaciones superiores de la fig.1) y se define una función de transferencia en el dominio frecuencial correspondiente a un filtro ideal paso bajo caracterizado por una frecuencia de corte de 40 Hz (representación intermedia de la fig.1), que se aplica a la transformada de Fourier de la señal original. Como puede verse en la representación espectral, la señal filtrada sólo contiene el tono de 20 Hz. Al aplicar la transformada inversa para devolver la señal filtrada a su desarrollo temporal se observa (representación inferior de la fig.1) que ésta consiste en un tono puro.
Debe observarse que este proceso es más ilustrativo que práctico, ya que en el contexto de transmisión de señales de información el filtrado debe ejecutarse mientras la señal se está transmitiendo y no cuando se cuenta con toda su realización y podemos operar con la señal en el dominio de la frecuencia (cuya relación con la señal temporal es biunívoca).
En caso de considerar el proceso anterior como el resultado de fragmentar la señal a filtrar en trozos y aplicar a cada uno de ellos un filtrado en el dominio frecuencial, el resultado es equivalente a multiplicar la señal por un tren de ventanas rectangulares que en dominio frecuencial se convierte en la convolución por un tren de funciones sinc, lo cual equivale a una distorsión de la señal original que aleja el proceso de la idealidad pretendida. El uso de un tipo u otro de ventanas cambia las características de alejamiento respecto a las características ideales y constituye la base para uno de los tipos de filtrado frecuencial de señales discretas.
T = 0.002; % período [s]
f1 = 20; % componente seno [Hz]
f2 = 100; % componente coseno [Hz]
f_c = 40; % frecuencia de corte [Hz]
t = 0:T:1; % generamos vector tiempo
x = sin(2*pi*f1*t) + cos(2*pi*f2*t); % generamos señal sinusoidal
% pasamos al dominio de la frecuencia
X = fftshift(fft(x)); % frecuencia 0 al centro
L = length(X); % longitud de la transformada
Fs = 1/T; % frecuencia de muestreo
dF = (Fs)/L; % ancho de cada banda espectral
f = (-Fs/2:dF:Fs/2-dF) + mod(L,2)*dF/2; % vector frecuencia
H = (abs(f)<=f_c); % filtro paso bajo según definición
X_filtrada = X .* H; % y lo aplicamos a la señal
% retornamos al dominio del tiempo
x_filtrada = ifft(ifftshift(X_filtrada));
% Representación de resultados
subplot(5, 1, 1);
plot(t, x);
title([' $x(t)$ ($f_1=' num2str(f1) '$ Hz, $f_2=' ...
num2str(f2),'$ Hz)']);
xlabel('$t$ [s]');
ylabel('$Amplitud$');
subplot(5, 1, 2);
plot(f, abs(X), LineWidth=1.5);
title('$X(\omega)$');
xlabel('$Frecuencia$ [Hz]');
ylabel('$|Amplitud|$');
subplot(5, 1, 3);
plot(f, H, LineWidth=1.5);
title('$H(\omega)$');
xlabel('$Frecuencia$ [Hz]');
ylabel('$|Amplitud|$');
subplot(5, 1, 4);
plot(f, abs(X .* H), LineWidth=1.5);
title('$X(\omega)*H(\omega)$');
xlabel('$Frecuencia$ [Hz]');
ylabel('$|Amplitud|$');
subplot(5, 1, 5);
plot(t, x_filtrada);
title('$x(t)$ filtrada y reconstruida');
xlabel('$t$ [s]');
ylabel('$Amplitud$');
Advertencias
Cuando se establecen las frecuencias de trabajo de un filtro ideal, la literatura especializada no es consistente respecto al establecimiento de intervalos abiertos[1] o cerrados[2].