Vous êtes sur la page 1sur 12

Universidad Nacional de Colombia

Facultad de Ingeniera
Seales y Sistemas II

Ivn Yamith Ocampo Barbosa 233522 Ingeniera Mecnica


Pedro Jonathan Vargas Hueso 233440 Ingeniera Mecnica

Diseo de Filtro Pasa Bajos

Presentacin.

Se disean tres filtros de tipo Pasa Bajos, tomando como seal inicial la representacin grfica
de una serie de datos de cierre de la tasa de cambio en un periodo de tiempo, con el fin de
tener los datos suficientes con la variabilidad necesaria para tener una grfica filtrable.

Procedimiento.

Dadas las limitaciones de Scilab para el ingreso de caracteres por fila (mximo 512), se ingresan
los datos en columna.

Estos son ingresados en una matriz D de 10071 y esta es transpuesta para obtener A que es
de tamao 11007, esto con el fin de no incurrir en errores producidos por el cdigo de Scilab
con respecto al tamao de las matrices.

A continuacin se presenta el comportamiento de los datos a travs de un grfico,


identificando las frecuencias crticas despus de realizar la transformada de Fourier. Paso
seguido, se grafica nuevamente con una frecuencia de muestreo de 1000.

El cdigo generado en Scilab se presenta a continuacin:

-->plot (A)

-->y=fft(A,-1);
-->my=abs(y);

-->n=size(my,'*');

-->f=1000*(0:n/2)/n;

-->plot2d(f,my(1:size(f,'*')))

Con el fin de verificar las unidades exactas en el espectro de frecuencias, previo a la aplicacin
de la Transformada de Fourier, se traza una sinusoidal con frecuencia de 10 y muestreo de 1,
sobre los datos iniciales. La grfica es la siguiente:

El zoom de la misma, despus de un periodo:

El cdigo es el siguiente:
-->t=0:1/1000:1.006;

-->C=A-mean(A);

-->s=sin(2*%pi*10*t);

-->R=C+s;

-->y=fft(R);

-->ym=abs(y);

-->N=size(t,'*');

-->f=1000*(0:(N/2))/N;

-->plot2d(f,abs(y(1:size(f,'*'))))

Posteriormente se aplica la Transformada de Fourier a los datos iniciales. Se encuentra:

Y hacienda un zoom a la zona desde 0 a 50:


De estos grficos se concluye que las frecuencias nocivas para el objetivo de suavizar la curva
son las altas (resultado completamente lgico) mayores de 50. Aunque al filtrar ms la seal de
entrada se corre el riesgo de perder informacin que puede ser relevante.

Debido a que los datos no se encuentran centrados y con media igual a cero, se realiza
nuevamente la transformada de Fourier al mismo conjunto de datos, pero disminuidos en el
valor de la media (funcin establecida en el Scilab). La grfica despus de realizado este
proceso es:

Realizando una comparacin directa con la sinusoidal hecha al principio, para hallar la
frecuencia se tiene que:

Frecuencia = 1/(periodo(100dias))*1(frecuencia de muestreo)

=1/100*1=0.01

El clculo arroja un valor de 0.01, si el periodo de la grfica inicial era igual a 100 das, las
unidades del espectro de frecuencias coinciden con l.

Entrando an ms al detalle en la grfica anterior, se encuentra en f=5 un pico significativo,


mostrado como sigue en las 2 grficas:
Haciendo una revisin ms concienzuda de los datos, se encuentra que, semanalmente, se
generan 5 valores (4 como mnimo), ya que los sbados, domingos y festivos no tienen valor
asignado a tasa de cambio. El 5 nos indicara un valor para un periodo crtico, denominado as
porque adquiere un comportamiento asignable y con tendencia repetitiva a lo largo del paso
de los das (superior a 1000).

El cdigo para esta operacin es:

-->y=fft(r);

-->ym=abs(y);

-->plot (ym)

-->n=size(t,'*');

-->f=1000*(0:n/2)/n;

-->plot2d(f,ym(1:size(f,'*')))

-->r=s+C;

-->y=fft(r);

-->ym=abs(y);

-->plot2d(f,ym(1:size(f,'*')))

-->plot2d(f,ym(1:size(f,'*')))

-->plot2d(f,ym(1:size(f,'*')))

-->y=fft(C);

-->ym=abs(y);

-->plot2d(f,ym(1:size(f,'*')))

-->plot(C)
-->for i=1:1:1007, ss=sin(2*%pi*10*i);

-->plo(ss)

-->plot(ss)

-->plot(C)

-->y=fft(C);

-->plot(C)

-->plot2d(C)

Con el fin de hallar el periodo de la serie de datos y encontrar una tendencia


de los datos en la realidad, se hace nuevamente el procedimiento con una
sinusoidal de menor periodo, se hace la transformada y se verifia el detalle de los resultados.
Grficamente se ve que el periodo de la grfica es igual a 6,3, con una correspondencia de 161
das. Multiplicado por la frecuencia crtica que se quiere evaluar (5 das), da como resultado un
periodo de 127 das. El cdigo y las gricas que sustentan los datos anteriores se muestran a
continuacin.

-->s=sin(2*%pi*t*10);

-->plot (s)

-->y=fft(s,-1);

-->my=abs(y);

-->n=size(my,'*');

-->f=1000*(0:n/2)/n;

-->plot2d(f,my(1:size(f,'*')))
A un periodo de 6.3 dias le corresponde un de 161

Posteriormente, se procede a filtrar la seal con un filtro digital (debido a la naturaleza discreta
de los datos) de tipo Butterworth, pasa bajos con frecuencia de corte de 50/1000=0.05. El
cdigo de Scilab es el siguiente:

-->flt = iir (15,'lp','butt',[.05 0],[0 0]); //creacin de filtro

-->sv = flts(A,flt); //aplicacin del filtro a los datos de entrada

-->step1 = sv($:-1:1); //inversin de filtrado

-->step2 = flts(step1,flt); //refitrado de la seal inversa

-->final = step2($:-1:1); //reinversin de la seal para obtenerla corregida de distorsiones

-->plot(final)
-->plot(A)

El anterior es el resultado de la seal filtrada con una frecuencia de corte de 0.05, a


continuacion se compara con los datos de entrada y su respectivo zoom.
Despus de mostrar la grfica solicitada, se repite el procedimiento para frecuencia de 30, con
frecuencia de corte 30/1000 = 0.03. Igualmente se compara con los datos originales y se hace
zoom en una zona similar al anterior para comparar.
Por ultimo, se hace un ensayo con una frecuencia de corte de 10/1000=0.01, que claramente
nos ofrece un filtrado mas suave pero mucho menos leal a los datos de origen que como
posteriormente se ve, tiene un error cuadrtico muy elevado.

Ahora superponemos los resultados obtenidos con los tres filtros para compararlos
directamente de manera visual.
En este zoom es claro como el filtrado con frecuencia de corte de 50 (en negro) es el que
conserva de una mejor manera la forma general de los datos, le sigue la de 30 (en rojo) y por
ultimo la de 10 (en azul) con un seguimiento bastante pobre en relacion a los demas.

Finalmente, se hace el clculo del error cuadrtico con el fin de verificar cual de los filtros tiene
un comportamiento ms ligado a los datos iniciales. El cdigo generado en Scilab es el
siguiente:

-->for i=1:1:1007,R3(i)=abs(A(i)^2-final(i)^2)^0.5;end

-->sum (R3)/1007

ans =

12.887147 (error de filtrado con frecuencia de 10)

-->for i=1:1:1007,R2(i)=abs(A(i)^2-final2(i)^2)^0.5;end

-->sum (R2)/1007
ans =

7.5307285 (error de filtrado con frecuencia de 30)

-->for i=1:1:1007,R3(i)=abs(A(i)^2-final3(i)^2)^0.5;end

-->sum (R3)/1007

ans =

6.1458769 (error de filtrado con frecuencia de 50)

De lo anterior se evidencia que al filtrar con una frecuencia de corte muy baja, se puede
incurrir en una prdida de informacin de los datos originales y, caso contrario, al hacerlo con
una frecuencia alta, no se obtiene una curva suficientemente suavizada que se aproxime a la
seal original.

Bibliografa:

Some general concepts of signal treatment applied to Clinical Neurophysiology:

http://www.neurotraces.com/scilab/scilab2/node1.html

Datos histricos tomados de:

http://es.finance.yahoo.com/q/hp?s=DLTR

Vous aimerez peut-être aussi