Está en la página 1de 23

Filtro de Butterworth

Condiciones a cumplir por el filtro (datos del problema)

FS=24000 frecuencia de muestreo

Fp= 3000 frecuencia límite del pasabanda

Fs= 6000 frecuencia límite del stopbanda

Dp = 1 db atenuación máxima en el pasabanda

Ds = 30 db atenuación mínima en el stopbanda

Para adecuar a la función que permite el cálculo del orden del filtro, Fc y Fs deben
llevarse a la forma normalizada

Por lo tanto resulta:

Wp = 3000/12000 = 0.25 Ws = 6000/12000 = 0.5

Resolución del problema

Se calcula primero el orden (N) y la frecuencia de potencia mitad (Ws) (valor de la


frecuencia para el cual |H(z)|2 cae a la mitad).

[N, Wn] = buttord(Wp, Ws, Rp, Rs)


[N, Wn] = buttord(0.25, 0.50, 1, 30)

Resultando:

N = 5 Wn = 0.2958

Con este resultado previo, se procede al diseño del filtro de Butterworth que cumpla con
las características especificadas:
[B,A] = BUTTER(N,Wn)

[B,A] = BUTTER(5,0.2958)

Resultando:
B = [0.0065 0.0327 0.0655 0.0655 0.0327 0.0065 ]

A = [1.0000 -2.0177 2.0732 -1.1455 0.3423 -0.0428 ]

Luego, la función de transferencia, está dada por

5 4 3 2 1
0.0065 z  0.0327  z  0.0655 z  0.0655 z  0.0327 z  0.0065
H ( z) 
5 4 3 2 1
z  2.0177 z  2.0732 z  1.1455 z  0.3423 z  0.0428

Sustituyendo z=exp(j) se obtiene la respuesta en amplitud del filtro, |H()|

Gráficamente (poniendo como eje horizontal )

Matlab dispone de una función específica que permite obtener directamente


gráficamente la respuesta en amplitud del filtro.

[H,W] = FREQZ(B,A,N) retorna el vector H de N-puntos de la respuesta en frecuencia y


el vector de frecuencia de N-puntos W en radianes/muestra del filtro.

Luego, ejecutando:

[H,W] = FREQZ(B,A,1000);
plot(W./pi,abs(H))

Se obtiene la misma curva anterior


Si se quiere observar tanto la respuesta en amplitud como la de fase, se procede con la
misma función anterior pero si primer miembro.

Con la diferencia que aquí, en la respuesta en amplitud, las magnitudes del eje vertical
están dadas en decibeles (db).
También se pueden hacer separadamente con:

m = abs(H); p = unwrap(angle(H));
semilogy(w/length(w),m); title('Magnitud');
figure; plot(w/length(w),p*180/pi); title('Fase');

Resultando:
Para verificar si se cumplen las condiciones de atenuación, precisamente se necesita que
el eje de ordenadas esté en db, lo que se logra redefiniendo a |H(z)| como 20*log(|H(z)|)

Con lo que se puede apreciar que en la frecuencia de comienzo del stopbanda, la


atenuación es de 30 db (el signo negativo indica precisamente atenuación, si fuese
positivo sería amplificación)
Para ver que ocurre en el pasabanda, se hará un zoom adecuado.

Como se aprecia, la atenuación en el pasabanda está por debajo de 1 db.


La implementación del filtro, su ecuación diferencia, se puede establecer desde H(z)
Antitransformando

Despejando ahora yn

Si al filtro se le inyecta un impulso

La salida se ve gráficamente como:

Mediante Matlab, se puede usar la función filter para realizar esta tarea.

i=1:512;x(i)=0; x(255)=1; % genera el impulso en la mitad


% de la secuencia
Y=filter(B,A,x); % Encuentra la salida del filtro
% calculado para la secuencia x
plot(Y) % Grafica la salida

La función filter es implementada como la estructura “transposed direct-form II


“mostrada debajo, donde n-1 es el orden del filtro. Esta es una forma canónica que tiene
el mínimo número de elementos delay.

Con la función zplane(Z,P) se pueden graficar los polos y ceros en el plano complejo de
una función de transferencia.
Para ello es necesario calcular previamente los polos (ceros del denominador) y ceros
(ceros del numerador) con la función roots.

P=roots(A) % calcula ceros del denominador (polos)


Z=roots(B) % calcula ceros del numerador (ceros)
zplane(Z,P)
Secciones de Segundo-Orden (SOS)

Cualquier función de transferencia H(z) tiene una representación en secciones de


Segundo-Orden.

donde L es el número de secciones de segundo orden que describen el sistema.


MATLAB representa la forma de la sección de segundo orden de un sistema de tiempo
discreto como una martiz sos L x 6. Cada fila sos contiene una sola sección de segundo
orden, donde los elementos de la fila son los tres del numerador y tres coeficientes del
denominador que describen la sección de segundo orden.

Hay un incontable número de formas de representar un filtro en forma de secciones de


segundo orden . A través del apareamiento cuidadoso de los pares de polos y ceros, el
orden de las secciones de la cascada, y el escalamiento multiplicativo de las secciones,
es posible para reducir el ruido de cuantificación y evitar el desbordamiento en algunas
implementaciones de filtros de punto fijo.
Para esto se utiliza la función tf2sos.
Al ejecutar

[SOS,G] = TF2SOS(B,A)

SOS =
1.0000 0.9988 0 1.0000 -0.3322 0
1.0000 2.0020 1.0020 1.0000 -0.7262 0.2135
1.0000 1.9992 0.9992 1.0000 -0.9593 0.6031
G=
0.0065

Se rehace la Función de Transferencia.

Diseño de Filtros FIR

Condiciones a cumplir por el filtro (datos del problema)

Wn = 0.2958 frecuencia de atenuación -6 db


N=10 número de taps

Wn = 0.2958 ; N=10;B = fir1(N,Wn);

B =
-0.0052 -0.0075 0.0150 0.1069 0.2389
0.3038 0.2389 0.1069 0.0150 -0.0075 -0.0052

[H,W] = freqz(B,1,1000);
plot(W/pi,abs(H),W/pi,0.5,'-')
plot(W/pi,20*log10(abs(H)),W/pi,-6,'-')

freqz(B,1,1000);
[SOS,G] = tf2sos(B,1)
SOS =
1.0000 -3.5866 1.0000 1.0000 0 0
1.0000 1.5435 2.8573 1.0000 0 0
1.0000 1.9001 1.0000 1.0000 0 0
1.0000 1.0335 1.0000 1.0000 0 0
1.0000 0.5402 0.3500 1.0000 0 0
G =
-0.0052

Diseño de filtros FIR por Muestreo Fecuencial

Se utiliza la función

B = fir2(N,F,M,window);

Los parámetros de entrada son el orden del filtro N (longitud N+1) y dos vectores F y M
que especifican la frecuencia y la magnitud, de forma que “plot(F,M)” es una gráfica de
la respuesta deseada del filtro, window es la ventana utilizada en el método (Hamming,
por default).

N=10; F=[0 .2 .4 .6 .8 1 ]; M=[1 1 1 1 0 0 ];


[H,W] = freqz(B,1,1000);
plot(W/pi,abs(H),F,M,'o')
Uso de fdatool

Uso de sptool

Cuando se exporta el archivo se guarda como estructura con dos variables (Fs y data).
Para recuperarlas, se debe utilizar el nombre de la estructura con un punto seguida por la
variable. Ejemplo:

d=sig3.data
FS=sig3.Fs

function y=aj_adapt(W1,W2,n,mu)

% Calcula y grafica el ajuste de pesos mediante


% MSE minimo para una entrada (y) y una función deseada (d)
N=1024;M=5;
% Funcion de entrada x(i), deseada d(i)
i=1:N;x(i)=sin(2*pi*(i-1)/M);d(i)=2*cos(2*pi*(i-1)/M);

% Si se quiere agregar ruido a la entrada


% sigma=0.;x=x+sigma*randn(1,N);

% Calculo de la matriz de autocorrelacion R


% Diagonal principal
for k=1:n,
V=x(k:length(x));R(k,k)=V*V'/length(V);
end

for k=1:n,
c=1;
for j=k+1:n,
V1=x(k:length(x)-c);
V2=x(j:length(x));
R(k,j)=V2*V1'/length(V1);R(j,k)=R(k,j);c=c+1;
end
end
% Calculo del vector de correlacion cruzada P
c=0;
for j=1:n,
V1=x(1:length(x)-c);
V2=d(j:length(x));
P(j)=V2*V1'/length(V1);c=c+1;
end
w_opt=R^-1*P'; B=w_opt;
% potencia promedio de la señal deseada
Ed2=d*d'/N;
% verificación del ajuste
y=filter(B,1,x);
%plot(y(500:510))
MSE=Ed2+B'*R*B-2*P*B;
xi_min=Ed2-P*B;

En esta sección se describen las configuraciones de sistema donde se aplica el diseño


mínimos cuadrados.
La primera configuración, ilustrada en la Fig. 8.1 es el predictor lineal. El concepto de
predicción se ilustra en su forma más simple en el diagrama superior

En el diseño mínimos cuadrados, los coeficientes, o pesos, del sistema lineal causal,
H(z), son ajustados para minimizar el error cuadrado medio, E[ek2], haciendo así la
salida del sistema gk la aproximación mínimos cuadrados a una señal deseada, dk,. En
este caso dk es la misma que la entrada, sk y debe ser “predicha” usando la historia
pasada de sk. Esto es, dk debe ser predicha en términos de s k retardada por m muestras y
procesada a través de H(z). De nuevo, el proceso de diseño de mínimos cuadrados
consiste en ajustar los pesos de H(z) para hacer de esta versión procesada de la historia
de la entrada la mejor “predicción” del valor presente de la muestra sk.
El diagrama superior con una unidad de retardo, esto es con m=1, es la forma más
común de predictor lineal, aunque no predice actualmente un valor futuro de la entrada.
En muchas aplicaciones DSP, el error ek más de que un valor futuro de sk es necesitado.
Si se necesita una predicción actual de una señal, la forma aumentada en el diagrama
inferior puede ser implementada.

i=4:1000; s(i)=sin(2*pi*5*i/1000); % señal de entrada (esperada)


i=4:1000; f(i-3)=sin(2*pi*5*i/1000); % señal retrasada en 3
y=alg_lms_general(s,f,5); % algoritmo LMS, salida g(k) [y(k)]
i=1:996;plot(i,y(i),i,s(i)) % comparación
La segunda configuración en la cual es aplicable el diseño de mínimos cuadrados se
ilustra en el fig. 8.2 y se llama modelamiento o identificación de sistema.

Aquí un sistema lineal H(z) modela o identifica una “planta” desconocida consistente de
un sistema desconocido con ruido interno. El diseño de mínimos cuadrados fuerza a la
salida del sistema lineal gk a ser una aproximación de mínimos cuadrados a la salida de
planta deseada dk para una entrada particular fk.

X=randn(1,1000); % señal aleatoria de entrada


Y=filter([0.5 1.3 2.1],1,X); % Señal deseada
alg_lms_general(X,Y,3) % Algoritmo LMS

Wopt =
2.1000 1.3000 0.5000

Cuando fk tiene contenido espectral en todas las frecuencias y cuando el ruido de planta
contribuye en mucho una pequeña parte de la potencia en dk, esperamos que H(z) sea
similar a la función de transferencia de sistema desconocido de la planta. Note, sin
embargo, que H(z) no es necesariamente una aproximación de mínimos cuadrados. Así,
el concepto de modelamiento es aplicable donde el objetivo es la mejor aproximación a
una señal, en vez que a una función de transferencia. El tipo de modelamiento ilustrado
en la Fig. 8.2 tiene un amplio rango de aplicaciones incluyendo modelamiento en
ciencias biológicas, sociales y económicas, en sistemas de control adaptativo, en diseño
de filtros digitales y en geofísica.

________

CANCELLING 50 HZ INTERFERENCE IN ECGs

ECG means electrocardiogram and it refers to the graph that results from ploting time
versus voltage in a patient's chest. Voltage sensors are located on the chest and the
signal they pick up is directed to a electrocardiograph, an apparatus that plots such a
signal, as shown in the following picture.

One of the main problems when picking signals so weak as the electrocardiogram is
noise. There are several kinds of noise that can affect the ECG but one of the strongest
is the 50 Hz interference from the main power distribution. An ECG with lots of ECG
interference is shown in the next picture. Both its temporal and spectral representations
are shown. The 50 Hz interference clearly shows up in the spectrum.
The electrocardiograph must have a way of eliminating this interference. This can be
achieved incorporating a notch filter into the electrocardiograph that stops the 50 Hz.
But for the filter to be very selective (very thin bandwidth) it must be high order and
that means many components. Adaptive filtering offers another possibility. A simple
second order (two weights) FIR adaptive filter can achieve very good results.

Feeding the adaptive system with a reference of the main power 50 Hz signal, the
interference can be highly reduced if not eliminated. The following figure shows the set
up.

Now, the ECG above was adaptively filtered with a second order FIR filter. This was
the output obtained:

The spectrum shows still some 50 Hz interference remaining but its level has been
considerably reduced. The performance of the adaptive system is better observed when
we comprare the signals (ecg and output) in one cycle, in between peaks.
Compare the spectrums when taking 400 samples in between peaks.

The discrepancy of the spectrum depending on wether the overall signal (15000
samples) or only a small part in between peaks (400 samples) is considered, comes from
the fact that when the output signal is not zero the weights vary randomly around their
optimum value. the bigger the output the more the variation. Therefore, after each peak,
the weights take a little while to readjust themselves, allowing the interference to pass,
and that occurs at each heart beat (every 1000 samples or so, being the sampling rate of
1 Khz).

The ECG shown above was provided by Dr. Antonio Albiol, from the Polithecnic
University of Valencia, Spain. The signal comes from a man's chest, taken at a sample
rate of 1 Khz. The output of the adaptive system was obtained using the following
parameters:

Algorithm: LMS
Order of the FIR filter: 2
Stability factor (mu): 1e-6
Initial weights vector: w1 = 0.052
w2 =-0.020
Noise reference input: 50 Hz cosinewave

Cancelación de interferencia
Un locutor está hablando en un contexto de construcción, dond el ruido acústico es tan
fuerte que, cuando el levantado por su teléfono y agregado a sus palabras, la señal
combinada resulta inteligible al oyente. Afortunadamente, un ingeniero en DSP está a
mano para diseñar un cancelador de ruido por mínimos cuadrados, el cual opera
procesándole ruido correlacionado levantado por un micrófono en el mismo contexto. El
cancelador de ruido trabaja por sustracción del ruido correlacionado procesado, gk,
desde la señal combinada, sk,+ nk,.

Figura 8.16 – Cancelación de interferencia por mínimos cuadrados. Ruido fuerte es agregado a la voz del
locutor. Usando una versión correlacionada del ruido sin la palabra, el filtro de cancelación de
interferencia, B(z), produce una salida que cancela mucho del ruido. Los pesos del filtro son elegidos para
minimizar el valor al cuadrado total de la salida ek.

La razón de la necesidad de sustraer el ruido en vez de usar un filtro cancelador de ruido


se muestra en la siguiente figura.

Figura 8.17 – Señal de palabra, s(t), y ruido, n(t), con espectro densidad de potencia, para el ejemplo de
cancelación de interferencia. La señal en este caso es de alrededor de 20 dB por debajo del nivel de ruido.

Una muestra de 1 segundo de la señal de palabra, s(t) se muestra a la izquierda junto con
la densidad espectral de potencia de la señal entera. El ruido de construcción, n(t), y su
espectro se ven al derecha. La tasa de muestreo en ambos casos es de 40 KHz. Podemos
ver que filtrando la señal combinada, s(t)+n(t), para mejorar la relación señal-a-ruido
(SNR) puede ser posible para algún grado pero resultaría también en pérdida de algo de
la señal. Si s(t) y n(t) son independientes, la configuración en la Fig. 8.16 sería la mejor
elección para mejorar la SNR.

Figura 8.18 – Un segmento de señal más ruido, ilustrando una pobre SNR.

Figura 8.19 – Segmentos de ruido y ruido correlacionado.


La señal combinada se muestra en la Figura 8.18, en la cual podemos observar que el la
baja SNR en este caso tiende a oscurecer la componente de palabra casi completamente
a ojo. El oído humano es más adepto que el ojo a separar las dos componentes, pero aún
un buen escucha perderá mucho de la palabra cundo es mucho el ruido agregado.
Cortos segmentos (0.1 seg) del ruido n(t) y el ruido correlacionado f(t), se muestran en
la Fig. 8.19. En este ejemplo idealizado, el ruido correlacionado es una transformación
lineal del ruido. En realidad, debemos usualmente aceptar al menos un pequeño grado
de independencia entre el ruido medido y el ruido actual agregado a la señal.
Como en ejemplos previos, el cálculo del vector peso óptimo se describe en la Tabla
8.2. Las expresiones Matlab requeridas, en las cuales N es el número de pesos, son
El TSE, calculado como en la Tabla 8.2 para valores crecientes de N, es graficado en dB
en la Fig. 8.20.

Figura 8.20 – Mínimo TSE vs. Número de pesos (N) en el ejemplo de cancelación de interferencia,
indicando que la SNR crece sólo ligeramente a medida que N crece más allá de 4 ó 5.

El TSE se ve que decrece lentamente después de N=4 ó 5. En la práctica, debido a que


cantidades tales como calidad de palabra o de imagen requieren juicio subjetivo, la
elección de N puede ser mejor hecha sobre la base de “mejor escucha” o “mejor vista”
en vez de sobre la base del TSE.
En cualquier caso, podemos ver que la cancelación de interferencia por mínimos
cuadrados es potencialmente capaz de producir un gran incremento en la SNR. La
mejora es ilustrada en la figura final, 8.21, la cual muestra primero la señal ruidosa, s(t)
+n(t), luego la salida del sistema, , para N=5 y N=12, y finalmente la salida
de palabra original, s(t). Gracias al DSP, el oyente en la Fig. 8.16 es capaz de captar el
mensaje.
Figura 8.21 – Gráfico final para el ejemplo de cancelación de interferencia, mostrando
(1) la señal recibida sin cancelación, (2,3) la señal recibida con cancelación usando N=5
y 12 pesos y (4) señal original sin ruido.
Potencia y Densidad Espectral de Potencia
La ganancia de potencia de un sistema lineal está dada en términos del cuadrado de la
magnitud de la función de transferencia, la cual a su vez es medida por la DFT de la
respuesta impulsiva.
1
1  0.2 z 1 1
H ( z) = Y ( z) 2  Y ( z) z = X ( z)  0.2  X ( z)  z
1
2z

xn  0.2 xn1  yn1


yn =
2
n  1 .. 1024 xn  0 x1  1 impulso

n1  2 .. 1024 y1  0
xn1  0.2  xn11  yn11
yn1 
2

Así, podríamos decir que el cuadrado de la magnitud de la DFT de cualquier función


x(t) es una medida de la distribución de potencia en x(t) sobre el dominio de frecuencia.
Ahora deseamos perseguir esta idea y arribar a la definición precisa de la potencia y la
densidad de potencia.
La potencia instantánea de x(t) en cualquier instante arbitrario t es el cuadrado de la
magnitud de la señal, |x(t)|2 . Suponemos que la señale s real, de modo que se puede usar
x(t)2, pero la definición general se mantiene aún para señales complejas. Se sigue con
que la potencia promedio o esperada de una función estacionaria x(t) es

Si x es un vector consistente de n muestras de x(t), decimos que la potencia promedio en


x es

 ( i  1)  2
i  1 .. 1024 xi  sin 2 π   N  1024
 1024 
f ( t)  sin ( 2 π  2 t) t  0 , 0.01 .. 2

1
0.998
0.5
f ( t)
0 0.1 0.2 0.3 0.4
 0.5
 0.998
1

0 t 0.5

N
1
Pm  
N �  xk  0.5
2

k1
0.5
T  tiempo de muestreo
N
N T
1  2
 f ( t) dt  0.5
N T 0

La potencia promedio en este sentido es un estimado de la verdadera potencia promedio


en (7.19),
Para expresar la potencia promedio en términos de la DFT, sustituimos la fórmula de la
inversa de la DFT en (3.23) para x, en (7.20) y escribimos el resultado como sigue.

También podría gustarte