Sei sulla pagina 1di 23

FILTROS DIGITALES

I. INTRODUCCIÓN (organización wiki: https://en.wikipedia.org/wiki/Digital_filter)

FILTROS ANALÓGICOS BÁSICOS

Si tenemos una señal analógica compuesta de varias componentes y deseamos eliminar una, varias de
ellas o toda una banda, una opción es emplear filtros analógicos mediante hardware. Según las
componentes que deseemos eliminar, podremos hacer uso de los filtros analógicos básicos: pasa-bajas
(low pass o LP), pasa-altas (high pass o HP), pasa banda (band pass o BP), elimina banda (notch o reject
band o RB, notch significa muesca o diente).

Los filtros ideales correspondientes los tenemos a continuación:

Sin embargo, un filtro real presenta una caída distinta a la vertical y presenta rizado en la banda de
paso y/o en la de supresión, por ejemplo, para un filtro pasa bajas tendríamos:
TIPOS DE FILTROS EN FUNCIÓN DEL RIZADO

Según el rizado, tenemos los siguientes tipos de filtros:

 Chevyshev tipo I (rizado en la banda de paso)


 Chevyshev tipo II (rizado en la banda de supresión)
 Elíptico (rizado tanto en la banda de paso como en la de supresión) y
 Butterworth (sin rizado).

Chevyshev Tipo I: Chevyshev Tipo II:

Elíptico: Butterworth: máximamente plano (no hay rizado)

CALIDAD DEL FILTRO

El factor de calidad nos indica qué tan selectivo es un filtro.

Otra manera de verlo es qué tanto se parece a uno ideal – gráfica anterior de filtro ideal vs real, entre
mayor sea el valor del factor de calidad, mayor será la selectividad del filtro. En otras palabras, la calidad
de un filtro viene dada por: a) la cantidad de rizado que tenga tanto en la banda de paso como en la de
supresión y b) por la pendiente. Un filtro será de mejor calidad mientras tenga menor rizado y pendiente
más brusca.

Esta calidad del filtro depende de varios factores, entre ellos: a) si el filtro es pasivo o activo, b) del orden
del filtro, c) de la calidad de los mismos componentes, etc.
En cuanto a la presencia de rizado, lo mejor será tener un filtro máximamente plano de manera que se
asegura que no se introduzcan componentes debidas a la frecuencia de este rizado en la banda de
supresión.

Banda de paso

Rizado en la B.P
Pendiente
Rizado en la B. Supresión

B. Supresión

II. FILTROS DIGITALES

Como se ha venido diciendo, toda la tecnología actual es digital (uC, DSPs, FPGA, PC) y por esta razón,
los algoritmos de procesamiento han sido desarrollados de forma discreta (trabajando a nivel de muestras),
este tema no es la excepción.

Un filtro digital, igual que un analógico, modifica el contenido espectral de una señal y en este caso
opera sobre señales discretas y cuantificadas, implementado con tecnología digital, bien como un circuito
digital o como un programa informático.

Comúnmente se usa para atenuar o amplificar algunas componentes de frecuencias. Por ejemplo, se
puede implementar un sistema para controlar los tonos graves y agudos de cualquier sistema de audio.

EXPRESIÓN MATEMÁTICA GENERAL:

Un filtro digital está dado por un SLI cuya ecuación general en el dominio del tiempo es:

𝑦𝑛 = 𝑎1 𝑦(𝑛 − 1) + 𝑎2 𝑦(𝑛 − 2) + ⋯ + 𝑏1 𝑥(𝑛) + 𝑏2 𝑥 (𝑛 − 1) + ⋯

Donde:

x(n) → entrada actual

yn → es la salida actual

𝑥(n − 1), x(n − 2), … → entradas anteriores

y(n − 1), y(n − 2), … → salidas anteriores

SLI Se obtiene un filtro


(discreto)
Cada vez que ingresa una nueva muestra, el sistema se encarga de sacar una salida correspondiente:

Salida actual = f (entrada actual, entradas anteriores, salidas anteriores)

Pero, ¿qué efecto produce un SLI sobre la señal de entrada?

Si considerásemos una señal con varias componentes y aplicásemos un SLI con coeficientes al azar,
veríamos que la señal resultante habría sido afectada eliminando algunas de sus componentes. Esto indica
que un SLI actúa como un filtro digital y su comportamiento (componentes que elimine) dependerá de
los coeficientes elegidos:

{Grupo de Coeficiente1} → F. P. Bajas

{Grupo de Coeficiente 2} → F. P. Altas

{Grupo de Coeficiente 3} → F. P. Banda

{Grupo de Coeficiente 3} → F. Eliminación Bandas

TIPOS DE FILTROS DIGITALES DE ACUERDO A SU RESPUESTA ANTE UN IMPULSO

 FIR (Finite Impulse Response)


 IIR (Infinite Impulse Response)

TIPOS DE ESTRUCTURAS COMO SE IMPLEMENTAN LOS FILTROS

 Laticce
 Varios en cascada
 Varios en paralelo

II.1 FILTROS IIR:

IIR es una sigla en inglés para Infinite Impulse Response o Respuesta infinita al impulso. Se trata de
un tipo de filtros digitales en el que, como su nombre lo indica, si la entrada es una señal impulso, la salida
tendrá un número infinito de términos no nulos, es decir, nunca vuelve al reposo.

EXPRESIÓN MATEMÁTICA DE LOS FILTROS IIR


La salida de los filtros IIR depende de las entradas actuales y pasadas, y además de las salidas en instantes
anteriores. Esto se consigue mediante el uso de realimentación de la salida.
𝑦𝑛 = 𝑎1 𝑦(𝑛 − 1) + 𝑎2 𝑦(𝑛 − 2) + ⋯ + 𝑏1 𝑥(𝑛) + 𝑏2 𝑥 (𝑛 − 1) + ⋯

Aplicando la transformada Z a la expresión anterior se puede obtener:


donde los a y b son los coeficientes del filtro. El orden es el máximo entre los valores de M y N, que son
los términos que determinan la cantidad de polos y ceros en la función de transferencia:
Orden del filtro = max (M y N)

Ya que los coeficientes a y b son los que definen el comportamiento del filtro, el diseño consiste en
calcularlos.

TIPOS DE ESTRUCTURAS COMO SE IMPLEMENTAN LOS FILTROS IIR


Hay numerosas formas de implementar los filtros IIR. La estructura afecta a las características finales
que presentará el filtro, como por ejemplo su estabilidad. Otros parámetros a tener en cuenta a la hora
de elegir una estructura es el gasto computacional que presenta.

…..
DISEÑO DE FILTROS DIGITALES IIR MEDIANTE FUNCIÓN DIRECTA DE MATLAB

Como ya se comentó anteriormente, el tipo de filtro que se obtenga, depende del valor de los coeficientes,
entonces ¿cómo obtener los coeficientes necesarios para conseguir un filtro deseado?

Este es justamente el problema del diseño de filtros digitales que se basa en una serie de algoritmos que
resuelven el problema de cómo relacionar los coeficientes del SLI con el comportamiento del filtro, por
ejemplo, para un filtro pasa bajas, pasa banda, etc.

PROCEDIMIENTO:

Paso 1. Obtener el arreglo de coeficientes [A] y [B], por medio de un algoritmo determinado. En el caso de
IIR, se emplea el algoritmo Yule-Walker que en Matlab es implementado mediante la siguiente instrucción:

Sintaxis: [b,a] = yulewalk (n,f,m)

Donde:

n  orden del filtro, a mayor orden mejor calidad.

f  vector de frecuencias normalizado

m  vector de ganancias

Ejemplo: Obtener el siguiente comportamiento en el espectro de frecuencias:

- Desde 0 Hz hasta 100 Hz (incluido), no permita pasar ninguna componente.


- Desde 100 Hz (sin incluir) hasta 200 Hz (incluido), permita pasar las componentes con un
incremento lineal de la ganancia.
- Desde 200 Hz (sin incluir) hasta 300 Hz (incluido), permita pasar la señal sin que sea afectada
ninguna componente.
- Desde 300 Hz (sin incluir) hasta 350 Hz (incluido), permita pasar las componentes con un
decremento lineal de la ganancia.
- Desde 350 Hz (sin incluir) hasta 380 Hz (incluido), permita pasar la señal con un 70% de
ganancia de estas componentes.
- Desde 380 Hz (sin incluir) hasta 500 Hz (incluido), permita pasar las componentes con un
incremento lineal de la ganancia.
- Desde 500 Hz (sin incluir) hasta 800 Hz (incluido), permita pasar la señal con un 300% de
amplificación de la ganancia de estas componentes.
- Desde 800 Hz (sin incluir) hasta 1000 Hz (incluido), permita pasar las componentes con un
decremento lineal de la ganancia.

Resolución: un gráfico que resume los requerimientos anteriores sería la siguiente:

GANANCIA

0.7

0 100 200 300 350 380 500 800 1000 F (Hz)

Para obtener el vector de frecuencia normalizada (respecto de Fmax), se toma la información solamente
de las esquinas que es donde ocurren cambios en el comportamiento del filtro:

[0 100 200 300 330 380 500 800 1000]


𝑓= ;
𝑓𝑚𝑎𝑥

Para obtener el vector de ganancias, se considera el par ordenado correspondiente a cada elemento del
vector de frecuencias anterior:

𝑚 = [0 0 1 1 0.7 0.7 3 3 0]

Si se considera un orden cualquiera (por ejemplo: n = 10), ya se tendría todos los argumentos de
entrada, veamos cómo quedaría:

clc, close all, clear all

n = 10;

Fmax = 1000;

f = [0 100 200 300 330 380 500 800 1000] /𝐹𝑚𝑎𝑥;

𝑚 = [0 0 1 1 0.7 0.7 3 3 0]
[b,a] = yulewalk (n,f,m)

Los coeficientes obtenidos son los siguientes:

b = 0.7935 -0.9785 0.0318 0.4708 -0.6721 0.1129 0.2380 0.0156 -0.0735 0.2118 -0.1144

a = 1.0000 -0.2841 0.4873 0.1674 0.1548 -0.0811 0.3213 -0.0316 0.0865 0.0806 0.0198

Vemos que se han obtenido 11 coeficientes (siempre uno más que el orden definido).

Paso 2. Una vez que se tienen ya calculados los coeficientes de la ecuación general del SLI, ya se puede
calcular la salida:

𝑦𝑛 = 𝑎1 𝑦(𝑛 − 1) + 𝑎2 𝑦(𝑛 − 2) + ⋯ + 𝑏1 𝑥(𝑛) + 𝑏2 𝑥 (𝑛 − 1) + ⋯,

Remplazando los coeficientes obtenidos:

𝑦(𝑛) = 1 ∗ 𝑦(𝑛 − 1) + (−0.2841) ∗ 𝑦(𝑛 − 2) + 0.4873 ∗ 𝑦(𝑛 − 3) + 0.1674 ∗ 𝑦(𝑛 − 4)


+ 0.1548 ∗ 𝑦(𝑛 − 5) + (−0.0811) ∗ 𝑦(𝑛 − 6) + 0.3213 ∗ 𝑦(𝑛 − 7)
+ (−0.0316) ∗ 𝑦(𝑛 − 8) + 0.0865 ∗ 𝑦(𝑛 − 9) + 0.0806 ∗ 𝑦(𝑛 − 10)
+ 0.0198 ∗ 𝑦(𝑛 − 11) + ⋯

+0.7935 ∗ 𝑥(𝑛) + (−0.9785) ∗ 𝑥(𝑛 − 1) + 0.0318 ∗ x(𝑛 − 2) + 0.4708 ∗ 𝑥(𝑛 − 3)


+ (−0.6721) ∗ x(𝑛 − 4) + 0.1129 ∗ 𝑥(𝑛 − 5) + 0.2380 ∗ 𝑥(𝑛 − 6)
+ 0.0156 ∗ 𝑥(𝑛 − 7) + (−0.0735) ∗ 𝑥(𝑛 − 8) + 0.2118 ∗ x(𝑛 − 9)
+ (−0.1144) ∗ 𝑥(𝑛 − 10);

CÁLCULO MEDIANTE UN LAZO FOR:

Ya que y(n) depende de salidas anteriores hasta y(n-11) y de entradas hasta x(n-10) y, además, como solo
existen índices positivos en Matlab, para implementar un lazo for, se debería calcular la primera salida para
i=12 (en general sería para n + 2). Entonces, para la primera salida tendríamos:

𝑦(12) = 1 ∗ 𝑦(11) + (−0.2841) ∗ 𝑦(10) + 0.4873 ∗ 𝑦(9) + 0.1674 ∗ 𝑦(8) + 0.1548 ∗ 𝑦7


+ (−0.0811) ∗ 𝑦(6) + 0.3213 ∗ 𝑦(5) + (−0.0316) ∗ 𝑦(4) + 0.0865 ∗ 𝑦(3)
+ 0.0806 ∗ 𝑦(2) + 0.0198 ∗ 𝑦(1) + ⋯

+0.7935 ∗ 𝑥(12) + (−0.9785) ∗ 𝑥(11) + 0.0318 ∗ x(10) + 0.4708 ∗ 𝑥(9)


+ (−0.6721) ∗ x(8) + 0.1129 ∗ 𝑥(7) + 0.2380 ∗ 𝑥(6) + 0.0156 ∗ 𝑥(5)
+ (−0.0735) ∗ 𝑥(4) + 0.2118 ∗ x(3) + (−0.1144) ∗ 𝑥(2);

Ya que todas las entradas x(1), x(2), …, x(n) son conocidas, estas no representan problema. Sin embargo,
la salidas anteriores y(1) hasta y(11) son desconocidas. Para determinarlas, se pueden considerar como
condiciones iniciales cero: (y(1) = y(2) = …= y(11) = 0):
Una forma de automatizar esto sería a partir del orden (n=10):
n = 10;
for i = 1:n+1
y(i) = 0;
end
También, por ejemplo, como condiciones iniciales se podría considerar:
y(1) = x(1), y(2) = x(2), …, y(11) = x(11).

Una forma de automatizar esto sería a partir del orden (n=10):


n = 10;
for i = 1:n+1
y(i) = x(i);
end

Con esto, tendríamos y(1) hasta y(11) como condiciones iniciales y así ya podríamos calcular la salida
actual y(n), desde y(12) hasta y (length(xn)), correspondiente a cada una de las entradas de la señal
temporal xn. Como vemos, sería desde y(n+2) hasta y (length(xn)):

for k = n+2:length(xn)

𝑦(𝑘) = 1 ∗ 𝑦(𝑘 − 1) + (−0.2841) ∗ 𝑦(𝑘 − 2) + 0.4873 ∗ 𝑦(𝑘 − 3) + 0.1674 ∗ 𝑦(𝑘 − 4)


+ 0.1548 ∗ 𝑦(𝑘 − 5) + (−0.0811) ∗ 𝑦(𝑘 − 6) + 0.3213 ∗ 𝑦(𝑘 − 7)
+ (−0.0316) ∗ 𝑦(𝑘 − 8) + 0.0865 ∗ 𝑦(𝑘 − 9) + 0.0806 ∗ 𝑦(𝑘 − 10)
+ 0.0198 ∗ 𝑦(𝑘 − 11) + ⋯

+0.7935 ∗ 𝑥(𝑘) + (−0.9785) ∗ 𝑥(𝑘 − 1) + 0.0318 ∗ x(𝑘 − 2) + 0.4708 ∗ 𝑥(𝑘 − 3)


+ (−0.6721) ∗ x(𝑘 − 4) + 0.1129 ∗ 𝑥(𝑘 − 5) + 0.2380 ∗ 𝑥(𝑘 − 6) + 0.0156
∗ 𝑥(𝑘 − 7) + (−0.0735) ∗ 𝑥(𝑘 − 8) + 0.2118 ∗ x(𝑘 − 9) + (−0.1144)
∗ 𝑥(𝑘 − 10);

end

FUNCIÓN FILTER: implementa por nosotros tanto las condiciones iniciales como el lazo for
implementados anteriormente.

Dados los arreglos de coeficiente (A y B), las condiciones iniciales CI y la señal temporal de entrada Xn, la
salida Y puede ser obtenida mediante la función filter de la siguiente manera:

A = [a1 a2 ... an];

B = [b1 b2 ... bn];

CI = … % si son cero (opción por defecto), no hace falta escribirla.

Y = filter (B, A, X, C.I)

Donde CI son las condiciones iniciales que normalmente valen cero. Se emplean cuando, por ejemplo
tenemos filtros en cascada: etapa1 (CI = 0)  se obtienen Condiciones Finales que serían las CI para
la siguiente etapa y así sucesivamente.

EJERCICIO--- VERIFICACIÓN:

Repetir el ejemplo anterior empleando la función FILTER. Se debería obtener el mismo resultado.
Superponer las dos Y obtenidas.

…..
¿CUÁL ES LA RESPUESTA EN FRECUENCIA REAL DEL FILTRO OBTENIDO?

FREQZ: Da la respuesta en frecuencia, evaluada en N puntos (por defecto: 512) equiespaciados de la


mitad superior del círculo unidad, para los coeficientes a y b encontrados.
Fs: frecuencia de muestreo
Freqz (B, A, N, Fs): Grafica el (módulo y la fase) vs frecuencia

Sin parámetros de salida: Muestra el Diagrama de Bode (respuesta en magnitud y en fase en función
de la frecuencia). Se pueden visualizar N puntos.

EJERCICIO: APLICARLO AL EJEMPLO ANTERIOR

……….

DISEÑO DE FILTROS DIGITALES SIN UTILIZAR FUNCIÓN DIRECTA DE MATLAB

NO DEBER:

TEORÍA E IMPLEMENTACIÓN DE UNA FUNCIÓN PROPIA YULE-WALK

………

DISEÑO DE FILTROS DIGITALES FIR

FIR:
Ventaja: son de fase lineal.
Desventaja: requieren orden MAYOR que los IIR

Fase1: Determinación del orden:

Solo en base a la experiencia: a mayor orden, mayor calidad, entonces no se debe calcular n.

Fase2: Cálculo de los coeficientes: utilizarlas siguientes posibilidad es según el caso:

b = fir1 (n, wn, type, ventana);


% n = ordendel filtro; wn= vector de frecuencias normalizado, type= high (pasaalta), stop (eliminabanda)
% ventana= blackman, hamming, hanning, etc)
b = fir2 (n, f, A, ventana);
% n = ordendel filtro; f = vector normalizadode frecuencias; A = vector de ganancias
b = remez(n, f, A); % SIMILAR AL FIR2
% n = ordendel filtro; f = vector normalizado de frecuencias; A = vector de ganancias
Fase 3: Salida del filtro utilizando el coeficiente calculado anteriormente:

x_filt=filter(b,1,x); % x: la señal a filtrar ; b,a=1: los coeficientes del filtro

EJEMPLO: FILTROS FIR usando FIR1

% Diseñe un filtro pasa banda entre 5 y 15 Hz.


% Asuma una frecuencia de muestreo de 100 Hz.
% Orden del filtro = 128
%
clear all; close all;
fs = 100; % frecuencia de muestreo
Fmax = fs/2;
order = 128; % Orden del filtro
wn = [5 15]/ Fmax; % vector de ftrecuencias
b = fir1(order,wn); % diseño del filtro FIR,
% Respuesta en frecuencia:
% Diagrama de Bode
freqz(b,1,512,100);
% Plot modulo de h:
[h,freq] = freqz(b,1,512,100);
figure
plot(freq,abs(h),'k');
xlabel('Frecuencia (Hz)'); ylabel('H(f)');
figure
plot(freq,20*log10(abs(h)),'k');
xlabel('Frecuencia (Hz)'); ylabel('H(f) en dB');
EJEMPLO: DISEÑO DE UN FILTRO FIR (USANDO FIR2) DE ORDEN 12 Y SU RESPUESTA EN
FRECUENCIA

% EJEMPLO FILTROS FIR: usando FIR2


close all; clear all;
n = 12; % orden
f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia
m = [0 0 1 1 0 0];
b1 = fir2(n,f,m); % FIR rectangular window
filter
h1 = freqz(b1,1,256);
plot(f,m,'k'); % Plot: respuesta ideal
hold on
w = (1:256)/256;
plot(w,abs(h1),':r'); % Plot: FIR filter
xlabel(' Frequencia Relativa');
title('FIR utilizando FIR2')
legend('ideal','FIR')
OTRAS FUNCIONES DE MATLAB PARA FILTROS FIR

Cálculo de coeficientes:

COMPARACIÓN: FILTROS IIR (YULEWALK) Y FIR (FIR2)


Y SU RESPUESTA EN FRECUENCIA

close all; clear all;


n = 12; % orden
f = [0 .25 .25 .6 .6 1]; % respuesta de frecuencia
m = [0 0 1 1 0 0];
[b,a] = yulewalk(n,f,m); % Yule–Walker IIR Filter
h = freqz(b,a,256);
b1 = fir2(n,f,m); % FIR rectangular window filter
h1 = freqz(b1,1,256);
plot(f,m,'k'); % Plot: respuesta ideal
hold on
w = (1:256)/256;
plot(w,abs(h),'--b'); % Plot: Yule-Walker filter
hold on
plot(w,abs(h1),':r'); % Plot: FIR filter
xlabel(' Frequencia Relativa');
title(‘Comparación entre IIR y FIR del mismo orden')
legend('ideal','IIR','FIR')
%CONCLUSIÓN:
%FIR requieren orden MAYOR que los IIR
APLICACIONES:

EJERCICIO: ELIMINACIÓN DE UNA ZONA FIJA DEL ESPECTRO

Se tiene la siguiente señal conformada por tres componentes:

x=sin(2*pi*100*t)+sin(2*pi*120*t)+sin(2*pi*140*t);

Realizar los siguientes filtros:

a) Filtro pasa bajas de modo que solamente pase la señal de 100 Hz.
b) Filtro pasa banda de modo que solamente pase la señal de 120 Hz.
c) Filtro pasa altas de modo que solamente pase la señal de 100 Hz.
d) Filtro elimina banda de modo que se elimine el tono de 120Hz y queden los otros dos.

En cada caso, para aplicar el filtro encontrado, utilice la función filter y también hágalo mediante lazos
for encontrar la salida del SLI:

𝑦𝑛 = 𝑎1 𝑦(𝑛 − 1) + 𝑎2 𝑦(𝑛 − 2) + ⋯ + 𝑏1 𝑥(𝑛) + 𝑏2 𝑥 (𝑛 − 1) + ⋯

También en cada caso encuentre la respuesta real del filtro que confirme el correcto diseño de los
diferentes filtros.

Publique la señal de salida de los filtros tanto en el dominio del tiempo como de la frecuencia.

…….

COMO DEBER PONER LAS IMÁGENES DE LOS PUNTOS DE CORTE DE F EN CADA FILTRO

RESOLUCIÓN:

Primero generaremos una señal suma de tres tonos (100Hz, 120Hz y 140Hz)
clc,clear all, close all
%generacion señal suma de tres tonos
Fmax=160;
Fs=10*Fmax;
t=0:1/Fs:5;
x=sin(2*pi*100*t)+sin(2*pi*120*t)+sin(2*pi*140*t);
figure(1)
plot(t,x)
title('Señal Temporal: suma de 3 tonos')
axis([0 0.1 -3 3])
xlabel('Tiempo [seg]')
grid on
% aunque es ilógico aplicar welch, lo usaremos
% porque nos ahorra líneas de código (vector de frecuencias)

%Deber cambiar por un periodograma simple


nFFT=1024*10;
window=fix(length(x)/10);
overlap=fix(length(window)/2);
[Pxx,f]=pwelch(x,window,overlap,nFFT,Fs);
figure(2)
plot(f,(Pxx))
title('Espectograma señal suma 3 tonos')
xlabel('Frecuencia [Hz]')
ylabel('Potencia')
axis([80 160 0 0.2])
grid on

A) FILTRO PASA BAJOS: de modo que solamente pase la señal de 100 Hz.

% 1. Filtro Pasabajas (Filtrado tono de 100Hz)

PONER GRAFICA DE FILTRO


orden=20;
f1=[0 100 105 110 (Fs/2)]/(Fs/2); %Si se pone Fmax, TODO MAL
m1=[1 1 1 0 0];
[b,a]=yulewalk(orden,f1,m1);
senial_filtrada_uno=filter(b,a,x);
Nota: Se coloca Fs/2 y no Fmax debido a que previamente se multiplico Fs=10*Fmax lo que afecta al
calculo de las frecuencias.
MOSTRAR LOS COEFICIENTES

…..

OBTENER LA SALIDA CON LAZO FOR…..

senial_filtrada_uno_for = DEBER

Superponer en el dominio del tiempo ambas salidas DEBER

Respuesta real del filtro que confirme el correcto diseño de los diferentes filtros. Falta la freqZ

figure(3)
plot(t,senial_filtrada_uno)
title('Señal temporal Filtrada 100Hz')
hold on
plot(t,x,'r:')
legend('Señal 100Hz','Señal suma de 3 tonos')
axis([1.5 1.6 -3 3])
grid on
%espectro senal filtrada:
[P_welch_BB_filt,F_welch_BB_filt] = pwelch(senial_filtrada_uno,window,overlap,nFFT,Fs);
figure(4)
plot(F_welch_BB_filt,P_welch_BB_filt,'r')
title('Periodograma Señal Filtrada 100Hz')
axis([80 160 0 max(P_welch_BB_filt)])
grid on
 FILTRO PASA BANDA

% 2. Filtro Pasabanda (Filtrando tono de 120Hz)

PONER GRAFICA DE FILTRO


orden2=20;
f2=[0 110 115 120 125 130 (Fs/2)]/(Fs/2); %NOTA 120 ES IRRELEVANTE NO ES ESQUINA Y NO
APORTA INFORMACION
m2=[0 0 1 1 1 0 0];
[b2,a2]=yulewalk(orden2,f2,m2);

MOSTRAR LOS COEFICIENTES

…..

OBTENER LA SALIDA CON LAZO FOR…..


senial_filtrada_uno =

Respuesta real del filtro que confirme el correcto diseño de los diferentes filtros.

senial_filtrada_dos=filter(b2,a2,x);
figure(5)
plot(t,senial_filtrada_dos)
title('Señal temporal Filtrada 120Hz')
hold on
plot(t,x,'r:')
legend('Señal 120Hz','Señal suma de 3 tonos')
axis([1.5 1.6 -3 3])
grid on
%espectro senal filtrada:
[P_welch_BB_filt2,F_welch_BB_filt2] = pwelch(senial_filtrada_dos,window,overlap,nFFT,Fs);
figure(6)
plot(F_welch_BB_filt2,P_welch_BB_filt2,'r')
title('Periodograma Señal Filtrada 120Hz')
axis([80 160 0 0.2])
grid on
Experimentar con el orden 8 la señal ya se escapa (poner imágenes)

 FILTRO PASA ALTOS

% 3. Filtro PasaAltos (Filtrado tono de 140Hz)

PONER GRAFICA DE FILTRO


orden3=20;
f3=[0 130 135 140 145 150 (Fs/2)]/(Fs/2);
m3=[0 0 1 1 1 0 0];
[b3,a3]=yulewalk(orden3,f3,m3);

MOSTRAR LOS COEFICIENTES

…..

OBTENER LA SALIDA CON LAZO FOR…..

senial_filtrada_uno =

Respuesta real del filtro que confirme el correcto diseño de los diferentes filtros.

senial_filtrada_tres=filter(b3,a3,x);
figure(7)
plot(t,senial_filtrada_tres)
title('Señal temporal Filtrada 140Hz')
hold on
plot(t,x,'r:')
legend('Señal 140Hz','Señal suma de 3 tonos')
axis([1.5 1.6 -3 3])
grid on
%espectro senal filtrada:
[P_welch_BB_filt3,F_welch_BB_filt3] = pwelch(senial_filtrada_tres,window,overlap,nFFT,Fs);
figure(8)
plot(F_welch_BB_filt3,P_welch_BB_filt3,'r')
title('Periodograma Señal Filtrada 140Hz')
axis([80 160 0 max(P_welch_BB_filt3)])
grid on

 FILTRO ELIMINA BANDA


% 4. Filtro Elimina Banda (Eliminacion tono de 120Hz)

PONER GRAFICA DE FILTRO


orden4=20;
f4=[0 100 105 110 130 135 140 145 150 (Fs/2)]/(Fs/2);
m4=[1 1 1 0 0 1 1 1 1 0];
[b4,a4]=yulewalk(orden4,f4,m4);

MOSTRAR LOS COEFICIENTES

…..

OBTENER LA SALIDA CON LAZO FOR…..

senial_filtrada_uno =

Respuesta real del filtro que confirme el correcto diseño de los diferentes filtros.

senial_filtrada_cuatro=filter(b4,a4,x);
figure(9)
plot(t,senial_filtrada_cuatro)
title('Señal temporal Filtrada 100 Hz y 140Hz ')
hold on
plot(t,x,'r:')
legend('Señal 100Hz+140Hz','Señal suma de 3 tonos')
axis([1.5 1.6 -3 3])
grid on
%espectro senal filtrada:
[P_welch_BB_filt4,F_welch_BB_filt4] = pwelch(senial_filtrada_cuatro,window,overlap,nFFT,Fs);
figure(10)
plot(F_welch_BB_filt4,P_welch_BB_filt4,'r')
title('Periodograma Señal Filtrada 100Hz y 140Hz')
axis([80 160 0 0.2])
grid on
DEBER:

VAYA JUNTANDO LAS TRES COMPONENTES Y REPITA LOS FILTROS ANTERIORES DE MODO
QUE PASE SOLAMENTE UNA DE LAS COMPONENTES A LA VEZ: LOS FILTROS CADA VEZ
DEBEN TENER MUCHA MAYOR CALIDAD PARA QUE CONSIGAN HACERLO BIEN. HÁGALO CON
TODOS LOS PASOS ANTERIORES SOLICITADOS (EN ROJO)

CONCLUYA CUÁL ES LA SEPARACIÓN MÁS PEQUEÑA QUE CONSIGUIÓ.

Potrebbero piacerti anche