Curso
Lectura
Elaborado por
Procesamiento Digital de Señales
Los filtros FIR
Juan Carlos Suárez Quispe, M.Sc.
Los filtros de respuesta infinita al impulso (FIR)
La información expuesta a continuación, se basa en [1-4].
Estos filtros pueden ser descritos completamente por la siguiente relación:
π¦[π] = π0 π₯[π] + π1 π₯[π − 1] + π2 π₯[π − 1] + β― + ππΎ π₯[π − πΎ] … (1)
πΎ
= ∑ ππ π₯[π − π]
π=0
Donde:
•
•
•
π0 , π1 , … , ππΎ : Coeficientes del filtro.
π₯[π]: n-ésima muestra de entrada del filtro.
π¦[π]: n-ésima muestra de salida del filtro.
Se puede obtener la función de transferencia discreta del filtro, aplicando la transformada Z a la ecuación (1), de la
siguiente forma:
π(π§) = π0 π(π§) + π1 π(π§)π§ −1 + π2 π(π§)π§ −2 + β― + ππΎ π(π§)π§ −πΎ
Entonces:
π(π§) = π(π§)(π0 + π1 π§ −1 + π2 π§ −2 + β― + ππΎ π§ −πΎ )
Por lo tanto, la función de transferencia discreta π»(π§) es:
π(π§)
= π0 + π1 π§ −1 + π2 π§ −2 + β― + ππΎ π§ −πΎ
π(π§)
Frecuencia normalizada
Se introduce el concepto de frecuencia digital normalizada en radianes como:
Ω = πππ
Donde:
•
•
π: Frecuencia en πππ/π
ππ : Periodo de muestreo (π»π§)
Asimismo, se puede obtener lo siguiente:
Ω = πππ = 2ππππ = 2π
π
πΉπ
Donde:
•
•
π: Frecuencia en π»π§.
πΉπ : Frecuencia de muestreo (π»π§)
1
Juan Carlos S.
Diseño de filtros FIR por transformada de Fourier
La función sinc
Se define la función π πππ, seno cardinal, como:
π πππ(π) =
sin(ππ)
ππ
Un pulso rectangular en el dominio de la frecuencia corresponde a una función π πππ (más aliasing) en el dominio del
tiempo. Incluyendo los efectos del aliasing, la señal en el dominio del tiempo viene dada por:
π₯[π] =
1 sin (2ππ(π − 1/2 )/π)
π
sin (ππ/π)
Para eliminar los efectos del aliasing de esta ecuación, imagine que el dominio de la frecuencia esta muestreado tan
finalmente que se convierte en una curva continua. Esto hace al dominio del tiempo infinitamente largo, sin
periodicidad, se utiliza una transformada discreta de Fourier en el tiempo (DTFT1), resultando que, en el dominio del
tiempo, la señal viene dada por la relación:
π₯[π] =
sin(2πππ π)
ππ
Esta señal es importante porque un pulso rectangular en el dominio de la frecuencia es un filtro pasa-bajos perfecto.
Entonces la función π πππ es el núcleo de un filtro pasa-bajos perfecto. En la Figura 1, se presente gráficamente la
relación entre la función π πππ en el dominio del tiempo, y su transformación al dominio de la frecuencia.
Figura 1: Relación entre la función π πππ en el dominio del tiempo, y su transformada al dominio de la frecuencia [3].
A continuación, se listan las repuestas al impulso ideales para filtros FIR estándar. Para todos los casos, −π ≤ π ≤ π.
1
Transformada discreta de Fourier en el tiempo.
2
Juan Carlos S.
Tabla 1: Coeficientes para filtros FIR ideales (información extraída de [1])
Filtro
Pasa-bajos
Pasa-altos
Pasa-banda
Rechaza-banda
Tipo de respuesta al impulso ideal β[π] (coeficientes FIR no causales)
Ωπ
,
π=0
β(π) = { π
sin(Ωπ π)
,
π≠0
ππ
π − Ωπ
,
π=0
β(π) = { π
sin(Ωπ π)
−
,
π≠0
ππ
Ωπ» − ΩL
,
π=0
π
β(π) = {
sin(ΩH π) sin(ΩπΏ π)
−
,
π≠0
ππ
ππ
π − ΩH + ΩL
,
π=0
π
β(π) = {
sin(ΩH π) sin(ΩL π)
−
+
, π≠0
ππ
ππ
Luego, los coeficientes de un filtro FIR causal se obtienen desplazando β(π) hacia la derecha, π muestras. Entonces,
sea la función de transferencia del filtro:
π»(π§) = π0 + π1 π§ −1 + π2 π§ −2 + β― + π2π π§ −2π
Donde:
ππ = β(π − π), π = 0,1, … ,2π
Ejercicio 1
Calcule los coeficientes de un filtro FIR pasa-bajos de 3 tomas (π = 1) con frecuencia de corte ππ de 30Hz, y una
frecuencia de muestreo πΉπ de 250π»π§. Utilice el método de transformada de Fourier. A continuación, obtenga la función
de transferencia discreta del filtro diseñado, con entrada π₯[π] y salida π¦[π].
Solución
Se calcula la frecuencia de corte normalizada
Ωπ = 2π
ππ
30
= 2π
= 0.24π
πΉπ
250
Asimismo, dado que son 3 tomas. Entonces:
π = 2π + 1 = 3
∴π=1
Luego, para un filtro pasa-bajos, de acuerdo con la TABLA, se tiene que:
β(−1) =
β(0) =
sin(Ωπ π) sin(0.24π β −1)
=
= 0.2179
ππ
−1 β π
Ωπ 0.24π
=
= 0.24
π
π
3
Juan Carlos S.
β(1) =
sin(Ωπ π) sin(0.24π β 1)
=
= 0.2179
ππ
1βπ
Note que β(−1) tiene el mismo valor que β(1). Esto se debe a que la función π πππ es simétrica.
En este punto, la ecuación en diferencias que representa al filtro (aún sin retardo) es la siguiente:
π¦[π] = β(−1)π₯[π + 1] + β(0)π₯[π] + β(π + 1)π₯[π − 1]
∴ π¦[π] = 0.2179π₯[π + 1] + 0.24π₯[π] + 0.2179π₯[π − 1]
Y la función de transferencia del filtro πΊ(π§) (sin el retardo) se obtiene aplicando la transformada Z a la ecuación en
diferencia del filtro:
π¦[π] = 0.2179π₯[π + 1] + 0.24π₯[π] + 0.2179π₯[π − 1]
→ π(π§) = 0.2179π§π(π§) + 0.24π(π§) + 0.2179π§ −1 π(π§)
→ π = π(0.2179π§ + 0.24 + 0.2179π§ −1 )
π
→ = 0.2179π§ + 0.24 + 0.2179π§ −1
π
0.2179π§ + 0.24 + 0.2179π§ −1
=
1
π§ 0.2179π§ + 0.24 + 0.2179π§ −1
= β
π§
1
Por lo tanto, la función de transferencia del filtro (aún sin aplicar el retardo) es:
πΊ(π§) =
π(π§) 0.2179π§ 2 + 0.24π§ + 0.2179
=
π(π§)
π§
Debido a que este filtro requiere muestras posteriores, se aplica un retardo de π unidades, a fin de elaborar un nuevo
filtro. En este nuevo filtro, de coeficientes ππ , se tiene que:
ππ = β(π − π) , π = 0,1, … ,2π
Entonces:
π0 = β(0 − 1) = β(−1) = 0.2179
π1 = β(1 − 1) = β(0) = 0.24
π2 = β(2 − 1) = β(1) = 0.2179
Por lo tanto, el nuevo filtro queda definido por la ecuación en diferencia:
π¦[π] = π0 π₯[π] + π1 π₯[π − 1] + π2 π₯[π − 2]
= 0.2179π₯[π] + 0.24π₯[π − 1] + 0.2179π₯[π − 2]
Aplicando la transformada Z:
π(π§) = 0.2179π(π§) + 0.24π§ −1 π(π§) + 0.2179π§ −2 π(π§)
π
→ = 0.2179 + 0.24π§ −1 + 0.2179π§ −2
π
0.2179 + 0.24π§ −1 + 0.2179π§ −2
=
1
π§ 2 0.2179 + 0.24π§ −1 + 0.2179π§ −2
= 2β
π§
1
0.2179π§ 2 + 0.24π§ + 0.2179
=
π§2
Por lo tanto, la función de transferencia del filtro está dada por:
4
Juan Carlos S.
π»(π§) =
π(π§) 0.2179π§ 2 + 0.24π§ + 0.2179
=
π(π§)
π§2
Ejercicio 2
Resuelva el ejercicio 1 utilizando Matlab, realice las modificaciones necesarias para que se grafique la repuesta en
frecuencia del filtro. No aplique el retardo.
Solución
Se elaboró el siguiente programa:
clc, close all, clear all
N=101;
M=(N-1)/2;
Fs=250;
fc=30;
% Cantidad de coeficientes del filtro
% Frecuencia de muestreo (Hz)
% Frecuencia de corte (Hz)
Ts=1/Fs;
% Periodo de muestreo (s)
Oc=2*pi*fc/Fs; % Frecuencia de corte normalizada
fprintf("Frecuencia de corte (Hz) : %.2fHz\n",fc);
fprintf("Frecuencia de corte normalizada (0 a pi) : %.2f\n",Oc);
fprintf("Frecuencia de corte normalizada (0 a 1) : %.2f\n",Oc/pi);
h=zeros(1,N);
% Vector en el que se almacenarán los N coeficientes del filtro
% Cálculo de los coeficientes del filtro pasa-bajos ideal, truncado
% al intervalo de -M a M
for n=-M:M
if(n==0)
hn=Oc/pi;
else
hn=(sin(Oc*n))/(n*pi);
end
h(n+M+1)=hn;
% Los índices en Matlab comienzan en 1, por ende
% no se pueden utilizar índices negativos.
end
%% Función de transferencia
% La ecuación en diferencias que representa al filtro, es de la forma:
% y[n]=h(-1)x(n+1)+h(0)x[n]+h(1)x[n-1]
% Aplicando una transformada Z, y dando la forma de función de
% transferencia (G), se tiene:
% Y=h(-1)zX+h(0)X+h(1)z^-1X
% G=h(-1)z+h(0)+h(1)z^-1
% = (h(-1)z^2+h(0)z+1)/z
% El numerador, en forma de vector (para Matlab), se puede poner como:
% num=[h(-1) h(0) h(1)], que es lo mismo que el vector h
% El denominador, en forma de vector (para Matlab), se puede poner como:
% den=[1 0], que representa 1z+0
% De forma general, el denominador es z^M, en otras palabras, es un vector
% de ceros de M+1 elementos, cuyo primer elemento es 1. Entonces:
num=h;
den=zeros(1,M+1);
den(1)=1;
% Único elemento del denominador que es diferente de cero
% Función de transferencia del filtro
5
Juan Carlos S.
H=tf(num,den,Ts);
% Función tf. El primer parámetro es el numerador de la
% función de transferencia, el segundo, es el
% denominador, y el tercer parámetro es el periodo de
% muestreo
n=-M:M;
% vector de posiciones de los índices, se utilizará para
% graficar
% Gráficos
figure(1);
stem(n,h);
title('Filtro ideal truncado');
xlabel('muestra(n)');
ylabel('Amplitud');
figure(2);
freqz(num,den);
% Grafica la respuesta en frecuencia del filtro
Se obtienen los gráficos de la Figura 2.
Figura 2: Respuesta en frecuencia del filtro ideal pasa-bajos truncado con M=3.
Aplicando M=101, se obtienen los gráficos de la Figura 3.
Figura 3: Respuesta en frecuencia del filtro ideal pasa-bajos truncado con M=101.
6
Juan Carlos S.
Para las figuras 2 y 3, tenga presente que la frecuencia de corte normalizada al intervalo de 0 a 1 es de 0.24.
Diseño de filtros FIR por el método de ventanas
Sea un núcleo de filtro ideal pasa-bajos, denotado por los coeficientes obtenidos de la ecuación.
π₯[π] =
sin(2πππ π)
ππ
Este filtro es perfecto, sin embargo, la función π πππ continúa de menos infinito a más infinito, sin que su amplitud caiga
a cero. Ante esto, se pueden realizar dos modificaciones a la función π πππ.
La primera es truncar a π + 1 puntos, simétricamente elegidos alrededor de un lóbulo, donde π es un número par, y
todas las muestras fuera de estos π + 1 puntos se convirtieran en cero, simplemente fueran ignoradas.
La segunda es que la secuencia entera se desplace hacia la derecha, de modo de que vaya desde 0 hasta π. Esto
permite que el núcleo del filtro se represente utilizando únicamente índices positivos.
Debido a que este núcleo de filtro modificado es únicamente una aproximación de un filtro ideal, este no tendrá una
respuesta ideal en frecuencia. Asimismo, se tiene una excesiva ondulación en la banda de paso y una atenuación
deficiente en la banda de rechazo (efecto Gibbs), tal como se muestra en la Figura 4. Estos problemas se deben a una
abrupta discontinuidad en los finales truncados de la función π πππ.
Figura 4: (a) Respuesta en frecuencia de un filtro ideal pasa-bajos, (b) núcleo de un filtro ideal pasa-bajos, (c) núcleo de un filtro
ideal pasa-bajos truncado, (d) respuesta en frecuencia del filtro truncado [2].
Afortunadamente, existe un método simple para mejorar este problema (el rizado). En la FIGURA se muestra una curva
suave cónica llamada ventana de Blackman. Multiplicando la π πππ truncada, por la ventana de Blackman, se obtiene
como resultado un π πππ-ventanado. La idea es reducir los truncamientos abruptos en los extremos, y con ello, mejorar
la respuesta en frecuencia, tal como se muestra en la Figura 5. En ella se muestra mejora, la banda de paso ahora es
plana y la atenuación de la banda de rechazo es tan buena que no se puede ver en el gráfico.
7
Juan Carlos S.
Figura 5: Respuesta en frecuencia de un filtro pasa-bajos con ventana de Blackman, (e) filtro π πππ con ventana Blackman, (f) núcleo
del filtro π πππ-ventanado, (d) respuesta en frecuencia de la función π πππ-ventanada [2].
El método de ventanas (diseño de transformada de Fourier con funciones ventana) es desarrollado para remediar las
indeseables oscilaciones de Gibbs en la banda de paso y la banda de rechazo de un filtro FIR. Recuerden que las
oscilaciones de Gibbs se originan de la abrupta a partir del truncamiento abrupto de la secuencia de coeficientes de
longitud infinita.
Se eligen funciones de ventana que sean simétricas y puedan ponderar gradualmente los coeficientes FIR diseñados
hasta ceros en ambos extremos, para el rango −π ≤ π ≤ π. Aplicando la secuencia de ventana a los coeficientes del
filtro entrega como resultado:
βπ€ (π) = β(π) β π€(π)
Donde:
•
•
•
π€(π): Designado por la función de ventana.
β(π): n-ésimo coeficiente obtenido por el diseño con transformada de Fourier.
βπ€ (π): n-ésimo coeficiente obtenido aplicando la ventana a β(π).
A continuación, se listan ventanas comúnmente utilizadas:
1. Ventana rectangular
π€πππ (π) = 1,
−π ≤ π ≤ π
π€π‘ππ (π) = 1 −
|π|
, π≤π≤π
π
2. Ventana triangular (Bartlett)
3. Ventana Hanning
ππ
π€βππ (π) = 0.5 + 0.5 cos ( ) ,
π
8
π≤π≤π
Juan Carlos S.
4. Ventana Hamming
ππ
π€βππ (π) = 0.54 + 0.46 cos ( ) ,
π
π≤π≤π
5. Ventana Blackman
ππ
2ππ
π€πππππ (π) = 0.42 + 0.5 cos ( ) + 0.08 cos (
),
π
π
π≤π≤π
En general, un filtro es diseñado basado en especificaciones primarias para la banda de paso, banda de rechazo, y
banda de transición., las mismas que se muestra en la Figura 6.
La banda de paso es el rango de frecuencia en el que la ganancia de amplitud del filtro es aproximadamente la unidad.
La banda de rechazo se define como el rango de frecuencias en el que se atenúa la respuesta de magnitud del filtro
para eliminar la señal de entrada cuyos componentes de frecuencia se encuentran dentro de ese rango.
La banda de transición denota el rango de frecuencias entre la banda de paso y la banda de rechazo.
Figura 6: Respuesta en magnitud de un filtro pasa-bajos normalizado [4].
En la Figura 6:
•
Ωπ : Frecuencia de corte (normalizada) de banda de paso (passband).
•
•
Ωπ : Frecuencia de corte (normalizada) de banda de rechazo (stopband).
πΏπ : Ondulación (fluctuación) de la respuesta en frecuencia en la banda de paso.
•
πΏπ : Ondulación de la respuesta en frecuencia en la banda de rechzo.
Asimismo, sin utilizar las frecuencias normalizadas, la respuesta en magnitud de un filtro pasa-bajos puede es
representada en la Figura 7.
Figura 7: Respuesta en magnitud de un filtro pasa-bajos sin normalizar [4].
9
Juan Carlos S.
La ventana apropiada se selecciona en función al desempeño de las funciones ventana mostradas en la Tabla 2.
Asimismo, se define el ancho normalizado de transición, como:
Δf =
|ππ π‘ππ − ππππ π |
ππ
Donde:
•
•
Δf: Ancho normalizado de transición.
ππ π‘ππ : Frecuencia de corte de la banda de rechazo.
•
ππππ π : Frecuencia de corte de la banda de paso.
•
ππ : Frecuencia de muestreo.
Tabla 2: Coeficientes para ventanas [1].
Se utiliza como frecuencia de corte ππ , como el punto medio de la banda de transición, es decir:
ππ =
ππππ π + ππ π‘ππ
2
NOTA: Un Bell significa que la potencia ha cambiado en un factor de 10. Por ejemplo, en un circuito electrónico, 3 Bells
de amplificación producen una salida de 10 × 10 × 10 veces la potencia de entada. Un decibel es la décima parte de
un Bell. Así mismo, para la comparación de potencias (π1 , π2 ) o amplitudes (π΄1 , π΄2 ) se utilizan las siguientes ecuaciones
para calcular la cantidad de decibelios.
Para comprar potencias, con salida π2 y entrada π1 :
ππ΅ = 10 log10
π2
π1
Para comparar amplitudes, con salida π΄2 y entrada π΄1 :
ππ΅ = 20 log10
π΄2
π΄1
10
Juan Carlos S.
Ejercicio 3
Diseñe un filtro FIR pasa-bajos con las siguientes características:
•
•
•
•
•
Frecuencia de paso de hasta 25Hz
Frecuencia de rechazo que comience en 100Hz
Ondulación de banda de paso de 0.05dB
Atenuación de banda de rechazo de 40dB
Frecuencia de muestreo de 250Hz.
Solución
De la Tabla, la ondulación de banda de paso (0.05dB) y la atenuación de banda de paso (40dB) corresponden a una
ventana de tipo Hanning. En ella, se calcula el ancho de la ventana como:
π=
3.1
βπ
Luego, del enunciado se extrae que:
ππππ π = 25
ππ π‘ππ = 100
πΉπ = 250
Entonces:
|ππ π‘ππ − ππππ π | |100 − 25|
=
= 0.3
πΉπ
250
ππ π‘ππ + ππππ π
ππ =
= 62.5π»π§
2
ππ
→ Ωπ = 2π = 1.5708
πΉπ
βπ =
Luego:
π=
3.1 3.1
=
= 10.33
βπ 0.3
Por lo tanto, se elige que el ancho de la ventana (π) sea de 11, al ser un número impar, se calcula π como:
π=
π − 1 11 − 1
=
=5
2
2
Se calculan los coeficientes de la ventana Hanning como:
ππ
π€(π) = 0.5 + 0.5 cos ( )
π
Entonces:
π€(−5) = 0.0000
π€(−4) = 0.0955
π€(−3) = 0.3455
π€(−2) = 0.6545
11
Juan Carlos S.
π€(−1) = 0.9045
π€(0) = 1.0000
π€(1) = 0.9045
π€(2) = 0.6545
π€(3) = 0.3455
π€(4) = 0.0955
π€(5) = 0.0000
Luego, se calculan los coeficientes del filtro ideal pasa-bajos como:
Ωπ
,
π
β(π) = {
sin(Ωπ π)
,
ππ
π=0
π≠0
Entonces, truncando para −π ≤ π ≤ π:
β(−5) = 0.0637
β(−4) = −0.0000
β(−3) = −0.1061
β(−2) = 0.0000
β(−1) = 0.3183
β(0) = 0.5000
β(1) = 0.3183
β(2) = 0.0000
β(3) = −0.1061
β(4) = −0.0000
β(5) = 0.0637
Luego, los coeficientes del filtro ideal con ventana (sin retardo) se obtienen como:
βπ€ (π) = β(π) β π€(π)
Entonces:
βπ€ (−5) = 0.0000
βπ€ (−4) = −0.0000
βπ€ (−3) = −0.0367
βπ€ (−2) = 0.0000
βπ€ (−1) = 0.2879
βπ€ (0) = 0.5000
βπ€ (1) = 0.2879
βπ€ (2) = 0.0000
βπ€ (3) = −0.0367
βπ€ (4) = −0.0000
βπ€ (5) = 0.0000
Finalmente, se aplica un retardo de π, para obtener al filtro pasa-bajos de coeficientes ππ , de modo que:
ππ = βπ€ (π − π)
Entonces:
π0 = βπ€ (0 − 5) = βπ€ (−5) = 0.0000
π1 = βπ€ (1 − 5) = βπ€ (−4) = −0.0000
π2 = βπ€ (2 − 5) = βπ€ (−3) = −0.0367
π3 = βπ€ (3 − 5) = βπ€ (−3) = 0.0000
π4 = βπ€ (4 − 5) = βπ€ (−1) = 0.2879
12
Juan Carlos S.
π5 = βπ€ (5 − 5) = βπ€ (−0) = 0.5000
π6 = βπ€(6 − 5) = βπ€ (1) = 0.2879
π7 = βπ€(7 − 5) = βπ€ (2) = 0.0000
π8 = βπ€(8 − 5) = βπ€ (3) = −0.0367
π9 = βπ€(9 − 5) = βπ€ (4) = −0.0000
π10 = βπ€(10 − 5) = βπ€ (5) = 0.0000
La función de transferencia discreta del filtro pasa-bajos, es:
π»(π§) =
π0 π§10 + π1 π§ 9 + β― + π9 π§ + π10
π§10
Ejercicio 4
Resuelva el ejercicio 3 utilizando Matlab, realice las modificaciones necesarias para que ahora:
•
•
•
Frecuencia de paso de hasta 500Hz
Frecuencia de rechazo que comience en 800Hz
Frecuencia de muestreo de 44100Hz.
Luego, aplique el filtro a una señal de audio, grafique el espectro de magnitud antes y después de aplicar el filtro.
Solución
Se elaboró el siguiente programa:
clc, close all, clear all;
% De acuerdo a los requerimientos de diseño, se elige una ventana de
% Hanning
%%
fpass=500;
% Frecuencia de corte de la banda de paso
fstop=800;
% Frecuencia de corte de la banda de rechazo
Fs=44100;
% Frecuencia de muestreo
%%
Ts=1/Fs;
fc=(fpass+fstop)/2;
Oc=2*pi*fc/Fs;
Op=2*pi*fpass/Fs;
Os=2*pi*fstop/Fs;
df=(abs(fstop-fpass))/Fs;
N=ceil(3.1/df);
% Periodo de muestreo (s)
% Frecuencia de corte
% Frecuencia de corte normalizada (de 0 a pi)
% fpass normalizada (de 0 a pi)
% fstop normalizada (de 0 a pi)
% Ancho normalizado de transición
% Ancho de la ventana Hanning
fprintf("Frecuencia de corte (Hz) : %.2fHz\n",fc);
fprintf("Frecuencia de corte normalizada (0 a pi) : %.2f\n",Oc);
fprintf("Frecuencia de corte normalizada (0 a 1) : %.2f\n",Oc/pi);
fprintf("fpass normalizada (0 a 1) : %.2f\n",Op/pi);
fprintf("fstop normalizada (0 a 1) : %.2f\n",Os/pi);
% Asegurar que N sea impar
if(round(N/2)==N/2)
N=N+1;
end
M=(N-1)/2;
13
Juan Carlos S.
% Cálculo de los coeficientes del filtro pasa-bajos ideal h(n) truncado,
% de la ventana w(n), y del filtro ideal pasa-bajos con ventana hw(n)=h(n)w(n)
h=zeros(1,N);
w=zeros(1,N);
hw=zeros(1,N);
% Vector en el que se almacenarán los N coeficientes del filtro
% ideal truncado
% Vector en el que se almacenarán los N coeficientes de la ventana
% Vector en el que se almacenarán los N coeficientes del filtro
% ideal con ventana
for n=-M:M
if(n==0)
hn=Oc/pi;
else
hn=(sin(Oc*n))/(n*pi);
end
wn=0.5+0.5*cos(pi*n/M);
hwn=hn*wn;
% Los índices en Matlab comienzan en 1
h(n+M+1)=hn;
w(n+M+1)=wn;
hw(n+M+1)=hwn;
end
%% Función de transferencia aplicando el retardo
b=hw;
% Al margen de los índices (-M..+M) el contenido de los
% vectores de coeficientes con o sin retardo, es el
% mismo, por ende, en este punto se igualan. Lo
% diferente será el denominador de la función de
% transferencia. Al denominador se le aplica un retardo
% de -M.
num=b;
% Coeficientes del filtro ideal truncado con ventana
den=zeros(1,2*M+1); % Se retarda M unidades
den(1)=1;
% Único elemento del denominador que es diferente de cero
% Función de transferencia del filtro ideal truncado con ventana
H=tf(num,den,Ts);
% Función tf. El primer parámetro es el numerador de la
% función de transferencia, el segundo, es el
% denominador, y el tercer parámetro es el periodo de
% muestreo
n=-2*M:0;
% vector de posiciones de los índices, se utilizará para
% graficar, tenga presente que se ha aplicado el
% retardo para no requerir muestras futuras
% Gráficos
figure(1);
stem(n,hw);
title('Filtro ideal truncado con ventana');
xlabel('muestra(n)');
ylabel('Amplitud');
figure(2);
freqz(num,den);
% Grafica la respuesta en frecuencia del filtro
%% Aplicación
% Si bien, el enunciado no lo pedia
14
Juan Carlos S.
[D,Fs]=audioread('song.m4a');
N=size(D,1);
% Cantidad de muestras de la señal
t=0:Ts:(N-1)*Ts;% Vector de tiempo (de 0s a 10s)
L=D(:,1)';
R=D(:,2)';
u=(L+R)/2;
% Canal izquierdo
% Canal derecho
% Señal a analizar
LE=length(L);
y=zeros(size(u));
% Cantidad de muestras
% Salida del filtro, señal filtrada
for n=2*M+3:LE
for nn=1:2*M+1
y(n)=y(n)+b(nn)*u(n-nn-1);
end
end
audiowrite('song_f.m4a',y,Fs)
%% Espectro de frecuencia
f=0:Fs/N:Fs/2;
% Vector de frecuencias
U=fft(u);
% Transformada rápida de Fourier de la señal original
Y=fft(y);
% Transformada rápida de Fourier de la señal filtrada
pu=abs(U/N);
pu=2*pu(:,1:length(f));
% Amplitud de frecuencias de la señal
py=abs(Y/N);
py=2*py(:,1:length(f));
% Amplitud de frecuencias de la señal
figure(1);
subplot(211);
semilogx(f,pu); % Gráfico semilogarítmico con respecto al eje horizontal
axis([20 20000 0 4*10^-3]);
title('Espectro de magnitud - señal original (u)');
xlabel('f(Hz)');
ylabel('|fft(u)|');
subplot(212);
semilogx(f,py); % Gráfico semilogarítmico con respecto al eje horizontal
axis([20 20000 0 4*10^-3]);
title(['Espectro de magnitud - señal filtrada (y) con fc = ' num2str(fc) 'Hz']);
xlabel('f(Hz)');
ylabel('|fft(y)|');
Los espectros de magnitud obtenidos, antes y después de aplicar el filtro, son representados en la Figura 8.
15
Juan Carlos S.
Figura 8: Espectros de frecuencia (arriba) señal sin filtrar, (abajo) señal filtrada con un filtro FIR pasa-bajos.
Referencias
[1] L. Tan and J. Jiang, “Chapter 7 - finite impulse response filter design,” in Digital Signal Processing (Second Edition),
second edition ed., L. Tan and J. Jiang, Eds. Boston: Academic Press, 2013, pp. 217–299. [Online]. Available:
https://www.sciencedirect.com/science/article/pii/B978012415893100007X
[2] Steven W. Smith, “Chapter 16: Windowed-Sinc Filters,” in The Scientist & Engineer's Guide to Digital Signal
Processing.
[Online].
Available:
https://www.analog.com/media/en/technical-documentation/dspbook/dsp_book_Ch16.pdf
[3] Steven W. Smith, “Chapter 11: Fourier Transform Pairs,” in The Scientist & Engineer's Guide to Digital Signal
Processing.
[Online].
Available:
https://www.analog.com/media/en/technical-documentation/dspbook/dsp_book_Ch11.pdf
[4] L. Tan and J. Jiang, “Chapter 6 - digital signal processing systems, basic filtering types, and digital filter realizations,”
in Digital Signal Processing (Second Edition), second edition ed., L. Tan and J. Jiang, Eds. Boston: Academic Press, 2013,
pp. 161–215. [Online]. Available: https://www.sciencedirect.com/science/article/pii/B9780124158931000068
16
Juan Carlos S.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )