You are on page 1of 4

Informtica en Entorns Industrials PRCTICA No.

Prctica 1. Tratamiento de Seales

INTRODUCCIN AL TRATAMIENTO DE SEALES

OBJETIVO Familiarizar al estudiante con los principios de procesado digital de seales, a partir de seales reales adquiridas, utilizando diversos comandos del programa MATLAB.

INTRODUCCIN

Una Seal se define como una cantidad fsica que vara en funcin del tiempo, del espacio y/o cualquier otra(s) variable(s) independiente(s). Se puede describir por una funcin matemtica como, por ejemplo: s(t) = 25sen(400t) s(x,y)= 3x + 2xy + 10y2 x ( n ) = [ 2 5 1 0 4 ] El ltimo ejemplo se refiere a una secuencia de nmeros que describen una seal digital o de valores y tiempo discreto. Las seales en tiempo discreto estn definidas slo para valores discretos de tiempo. En la prctica, usualmente estos valores de tiempo estn espaciados en forma equidistante. Las seales de valores discretos pueden tomar slo un conjunto finito de posibles valores, los cuales generalmente son equidistantes. Las seales en tiempo discreto que toman valores discretos se les llama seal digital. Un ejemplo de seal digital se muestra en la figura siguiente:

1 0.8 0.6 mV 0.4 0.2 0 -0.2 0 100 200 300 t (ms) 400 500 600

realizado por: Pedro Gomis

30/05/07

Informtica en Entorns Industrials

Prctica 1. Tratamiento de Seales

MATERIALES: Computadora Pentium. Software MATLAB. Diskettes o CD

LABORATORIO:

Dispone de una base de datos de electrocardiogramas, correspondientes a las derivaciones X Y Z de 11 pacientes. Las seales fueron muestreadas a una frecuencia de 1000 Hz y sus amplitudes estn escaladas en mV. Los datos incluyen un latido por cada derivacin en cada paciente y se encuentran en el archivo de Matlab: ecgar.mat, en la forma de una matriz 600x33, donde cada fila es una muestra de la seal y cada columna es una seal. Las columnas estn ordenadas por derivaciones y pacientes de la forma: X1, Y1, Z1, X2, Y2, Z2, . . . , X11, Y11, Z11. a) Puede usar el comando load para cargar la variable ecgar.mat. chequear en qu directorio est con el comando cd >> cd >> load ecgar

Nota: El fichero ecgar.mat debe estar en el directorio de trabajo. En Matlab puede Para conocer los ficheros .mat de ese directorio puede usar: >> what b) Extraiga cada derivacin de cada paciente en una variable de tipo vector columna. c) Obtenga el valor mximo y mnimo de amplitud de cada latido (derivacin) de los pacientes N 3 y 7 e indique en qu muestras de tiempo ocurren. d) Obtenga y presente grficamente la magnitud de la transformada discreta de Fourier de la derivacin X del paciente # 9 (ayuda: ver Nota 1) e) Obtenga y presente grficamente la densidad de potencia espectral de la derivacin X del paciente # 9 en dB (ayuda: ver Nota 2) f) Obtenga y grafique la seal ECG filtrada paso alto a 20 Hz y paso bajo de 40 Hz de cada derivacin del paciente 9. Puede usar un filtro Butterworth de orden 3 (ayuda: ver Nota 3).

realizado por: Pedro Gomis

30/05/07

Informtica en Entorns Industrials

Prctica 1. Tratamiento de Seales

Nota 1: La transformada discreta de Fourier de una seal se halla con el comando fft X = fft (x) X = fft (x,N) X es un vector del mismo tamao de x que contiene la transformada X es la transformada discreta de Fourier de N-puntos de x. discreta de Fourier hallada con un algoritmo de transformada rpida de Fourier (FFT). La transformada de Fourier de una seal es por lo general de valores complejos para cada punto de clculo. La magnitud de la Transformada de Fourier se puede hallar en MATLAB con el comando abs. Nota 2: La densidad de energa espectral es una medida de la energa de la seal en funcin de la frecuencia, y se puede estimar por: Sxx = |X(k)|2 , donde X=fft(x) La densidad de potencia espectral (PSD) indica la potencia relativa de cada componente espectral y se puede estimar por: Px = 1/(N*fs) |X(k)|2 donde N es el nmero de puntos de X y fs la frecuencia de muestreo. En Matlab:
>> Px= (abs(X).^2) / (N*fs); >> f=(0:N-1)' *fs/N; >> plot(f,Px)

Para graficar la PSD:

En la prctica es conveniente, adems, expresar el espectro de frecuencias de esta seal (originalmente analgica) en el ancho de banda de 0 a la mitad de la frecuencia de muestreo, es decir, hasta la frecuencia de Nyquist. Se representa la densidad de potencia espectral de un solo lado desde 0 hasta la frecuencia de Nyquist o mitad de la frecuencia de muestreo. Para crear esta escala de frecuencia (con fs=1000Hz y N=600 puntos de seal):
>> >> >> >> >> >> >> if mod(N,2) == 0 % se evala la paridad de N select = 1:N/2+1; % cuando N es par else select = 1:(N+1)/2; % cuando N es impar end f_unlado = f(select); Px_unlado = 2*Px(select); >> plot(f_unlado,Px_unlado)

luego: en dB:

>> plot(f_unlado,10*log10(Px_unlado))

Este conjunto de comandos est incluido en la funcin de MATLAB periodogram. Pruebe: periodogram(x,[],N,fs) periodogram(x,[],600,1000)

realizado por: Pedro Gomis

30/05/07

Informtica en Entorns Industrials

Prctica 1. Tratamiento de Seales

Nota 3:

>> [B,A] = butter(N,fn)

% disea un filtro digital pasa bajo de orden N

fn: frecuencia de corte normalizada, y debe estar entre 0.0 < fn < 1.0, donde 1.0 corresponde a la mitad de la frecuencia de muestreo (frecuencia de Nyquist). En nuestra seal la frecuencia de muestreo es fs = 1000. Por ejemplo si deseamos un filtro pasa-bajo de orden 3 y frecuencia de corte fc = 100 (como la mitad de la frecuencia de muestreo es fs/2 = 500), entonces fn = fc/(fs/2). El filtro se disea: >> [B, A] = butter(3, 100/500); Si queremos disear un filtro pasa-alto: >> [B,A] = butter(N,fn, high) % disea un filtro pasa-alto. Para ms informacin pruebe: >> help butter Para obtener la seal filtrada, Xfiltrado, por el filtro diseado: >> Xfiltrado = filter(B,A,x);

x(t)

Xfiltrado(t) B A

Referencias: MATLAB Reference Guide, pag. 182-183, Signal Processing Toolbox for use with MATLAB, Users Guide

realizado por: Pedro Gomis

30/05/07

You might also like