Filtrado_ECG



Comments



Description

PRÁCTICA 1: FILTRADO DE SEÑALES ECGIntroducción Un trazo normal de un ciclo cardíaco consta de una onda P, un complejo QRS y una onda T. Además, en más de un 50% de los casos también es posible que sea visible una pequeña onda U. El voltaje de la línea base del ECG también es conocido como línea isoeléctrica o línea basal. Normalmente, la línea isoeléctrica es la porción de trazo que sigue a la onda T y precede a la siguiente onda P. En la práctica, la señal electrocardiográfica capturada es tan débil que se encuentra muy contaminada con un zumbido de 50 Hz acoplado como interferencia y procedente de la red eléctrica, no resultando totalmente eliminado por el amplificador diferencial de instrumentación. Además, la señal resulta mezclada con diversos artefactos de baja frecuencia generados como consecuencia de la respiración del paciente y otras causas, que suelen estar comprendidos entre DC y 0.5 Hz. Por último, aparece también una cierta cantidad de ruido blanco que se genera en el propio sistema amplificador. . Objetivos Se expone un ejemplo de filtrado completo de una señal ECG, que incluye un filtro notch para eliminar la interferencia de red de 50 Hz, un filtro paso alto que atenúa las variaciones de la línea base provocadas por los artefactos de muy baja frecuencia, Dpto. Electrónica. U.A. Laboratorio de Instrumentación Biomédica dat. Por lo tanto. Laboratorio de Instrumentación Biomédica . que se encuentra la señal. Una vez en Matlab y en el directorio donde se encuentran todos los ficheros de esta práctica.2)) >>title('Señal ECG capturada').002 volts con Vlow = -4. >>figure(1) >>plot(ecg1ms(:. para reconstruir la señal original la ecuación es: ECGsal(n) = ECGent(n) ⋅ ADCres + Vlow K El código Matlab sería: figure(2) Fs=1000.096 volts y Vhigh=4. Antes de filtrar esta señal conviene que echemos un vistazo a la misma mediante un ploteo. La señal anterior fue convertida con un ADC de 12 bits de resolución y preamplificada con una ganancia de K=1000. La velocidad de muestreo con la que se obtuvo la señal fue de 1000 muestras por segundo. Electrónica. % Suponemos que el ADC convierte a enteros sin signo digitos=12. La resolución del ADC es dada por: ADCres = (Vhigh – Vlow) / 212 = 0.seguido por un filtrado paso bajo que suaviza la señal al atenuar el ruido de alta frecuencia. U. Contiene dos columnas: la primera indica el número de muestra y la segunda el voltaje. especialmente zumbido de 50 Hz. podemos cargar el registro de la señal ECG mediante el siguiente comando: >> load ecg1ms.A. Proceso de trabajo Lectura y visualización del registro original El registro de la señal electrocardiográfica se encuentra en el fichero llamado ecg1ms. que contiene 33707 muestras float convertidas a ASCII y que podemos abrir con el bloc de notas para observar su contenido. %Frecuencia de muestreo 1000Hz Ts=1/Fs. Dpto. Podemos observar lo fuertemente contaminada con ruido.096 volts.dat. Como ampliación se propone diseñar otro tipo y técnicas de filtrado para contrastar resultados con los aquí propuestos. 096. grid on. ADCres=(Vhigh-Vlow)/(2^digitos). % el número de muestras es: nsamp=length(tsec). fss=0:deltaFs:(hindex-1)*deltaFs. halfSpect=zeros(1. K=1000.096.1). Vhigh=+4. ecgformat=ecg. Dpto. La función que calcula la FFT monolateral toma como parámetros el tramo de tiempo y la señal a transformar. ADCres)./K.halfASpect).ecg) % Calcula la FFT de la señal muestreada fftSpect=fft(ecg). halfSpect(1:hindex)=(nsamp/2)*fftSpect(1:hindex). Electrónica. grid on plot(tsec.*ADCres+Vlow). En nuestro caso la señal dura % tsec(end). U. Laboratorio de Instrumentación Biomédica . halfASpect=abs(halfSpect).1))*Ts tsec=0:Ts:tmax.1.A. tomamos sólo la mitad de ellos hindex=ceil(nsamp/2). % Como los coeficientes de la FFT son simétricos. %Ganancia del preamplificador % Reconstruimos la señal original ecg=( ecg1ms(:.ecgformat). figure(3) subplot(2.2) fftPlot(tsec.1. fprintf('La resolución del ADC es %8.2f \n'. plot(fss. Como resultado. % Las muestras están espaciadas por una cantidad Ts en segundos tmax=( ecg1ms(end. Para la FFT monolateral sólo son necesarios la mitad de los coeficientes (son simétricos) y hay que escalarlos por un factor de (número de muestras)/2. title('Señal original') subplot(2. % Los intervalos de frecuencia están espaciados por deltaF % La FFT considera la señal como periódica.hindex).ecg).2).Vlow=-4. ylabel(' ECG mV').halfASpect]=fftPlot(tsec. title('FFT monolateral').1) % Señal formateada ecgformat=ecg(1:length(tsec)). xlabel('Frecuencia (Hz)').*1e3. plotea la magnitud de los coeficientes FFT. aproximadamente 32 segundos deltaFs=1/tsec(end).ecg1ms(1. function [fss. xlabel('Tiempo (segundos)'). 'stop'). otra serie de interferencias de origen diverso. Existen.A. a pesar de ser atenuado por el amplificador de instrumentación. asimismo. Laboratorio de Instrumentación Biomédica . Dpto.1. no pudo ser completamente eliminado. El código Matlab correspondiente es: clc figure(4) % Diseñamos el filtro notch de 50 Hz y filtramos la señal % Frecuencia de Nyquist fsHalf=Fs/2. y luego comentar el significado de los parámetros aquí usados.ylabel('Magnitud FFT').[wl wh].05 Hz. wl=48/fsHalf. Resulta importante mencionar las componentes próximas a 0. ecgno50=filter(stop50. stop50=fir1(1536. end El resultado obtenido lo vemos a continuación: Observando el espectro podemos apreciar que predomina una componente continua y un zumbido de 50 Hz que.ecg). Consultar en Matlab el funcionamiento de las funciones fir1 y filter. Diseño del filtro FIR para eliminar la DC y el zumbido de 50 Hz Primero procesaremos la señal mediante un filtro notch para eliminar la componente de 50Hz. U. Electrónica. y que proceden del efecto capacitivo entre el electrodo y la piel. wh=51/fsHalf. ecgno50). la respuesta de fase se hacía no lineal. distorsionando la forma de onda de salida. aparte del coste computacional. Electrónica.1.subplot(2. Se pide que el alumno obtenga con Matlab las respuestas (amplitud y fase) del filtro notch aquí empleado y el de otro de orden 2048.*1e3. Laboratorio de Instrumentación Biomédica .A. Para ello.122.ecgno50.9 veces).9). En la siguiente figura vemos la señal y su espectro sin la componente de 50 Hz. consiguiendo una atenuación de 271. U. El procedimiento es similar al descrito para el filtro notch: Dpto.1) plot(tsec. title('ECG sin zumbido de 50 Hz').1.88 veces en la componente continua. ylabel('mV').'r'). grid on subplot(2. necesitamos un filtro paso alto.2) fftPlot(tsec. ******* VOY POR AQUÍ *************** Para eliminar la componente DC y las variaciones de la linea base. El orden del filtro se eligió por prueba y error. xlabel('Tiempo (segundos)'). Si el orden subía de 2000. title('FFT de la señal filtrada') grid on. usar el comando freqz. comenzando por un orden bajo de 64 y subiendo hasta un orden de 1536 donde la componente de 50 Hz en el espectro FFT se redujo suficientemente (atenuada hasta 122. fprintf('La componente de 50 Hz es atenuada %f veces \n'. Se eligió una frecuencia de corte de 1 Hz y un orden de 2000. pero mediante filtros IIR para reducir drásticamente el orden de los filtros empleados.1.'high'). Fijar una frecuencia de corte igual o superior a 100 Hz. title('FFT de la señal filtrada') grid on.coeff(1)). fprintf('La componente DC es atenuada %f veces \n'.ecgnoDC. ecgnoDC=filter(highpass. U.wcutt. wcutt=1/fsHalf. la respuesta (amplitud y fase) del filtro aquí empleado (usar freqz(highpass)).*1e3. title('ECG sin componente DC'). xlabel('Tiempo (segundos)'). grid on subplot(2. highpass=fir1(2000. Obtener con Matlab. La Dpto.1. Filtrar la señal con un filtro paso bajo adecuado para reducir el ruido restante sin distorsionar demasiado la señal útil. Electrónica.ecgnoDC).coeff]=fftPlot(tsec. Adicionalmente. ylabel('mV').'r').clc figure(5) % Diseño del filtro paso bajo y filtrado de la señal % Frecuencia de Nyquist fsHalf=Fs/2. Verificar que la morfología de la señal no ha sido distorsionada.A.1. igual que en el filtro anterior.ecgno50). se propone que el alumno realice el filtrado aquí descrito. subplot(2.2) [fss.1) plot(tsec. Laboratorio de Instrumentación Biomédica . Aplicar un zoom a la señal anterior y estudiar detenidamente la forma de onda de un ciclo P-QRS-T. Electrónica. borrando los coeficientes no deseados de la FFT de la señal original y reconstruyéndola mediante una IFFT. Obtener las gráficas correspondientes y comentar conclusiones.respuesta de fase obtenida podría ser no lineal y distorsionar la forma de onda en algún sentido. U. Dpto. También se puede optar por otro enfoque diferente. Laboratorio de Instrumentación Biomédica .A. para posteriormente eliminarla mediante un filtrado wavelet sencillo. Objetivos Se expone un ejemplo de filtrado Wavelet de las variaciones de la línea base en una señal ECG.dat. Laboratorio de Instrumentación Biomédica .A. Las mencionadas variaciones de la línea base están provocadas fundamentalmente por los artefactos que la respiración provoca en las señales ECG registradas y. de media cero y que tienden a ser irregulares y asimétricas. Electrónica. en definitiva. oscilantes. U. Una vez en Matlab y en el directorio donde se encuentran todos los ficheros de esta práctica. y todo ello por medio de un proceso de correlación entre la señal a descomponer y las mencionadas versiones de la wavelet madre (ver introducción teórica en el fichero aparte Anexo. Proceso de trabajo Filtrado de la linea basal El registro de la señal electrocardiográfica se encuentra en el fichero llamado ecg500. Como ampliación se propone sumar una interferencia en forma de tono a la señal ECG.000 muestras float convertidas a ASCII y que podemos abrir con el bloc de notas para observar su contenido. La velocidad de muestreo con la que se obtuvo la señal fue de 500 muestras por segundo.ANEXO: APLICACIÓN DE LA TRANSFORMADA WAVELET AL FILTRADO DE SEÑALES ECG Introducción El análisis wavelet utiliza formas de onda de duración finita.dat. consiste en la aplicación de un filtrado paso alto con una frecuencia de corte inferior muy reducida. La señal a analizar se descompone a base de versiones desplazadas y dilatadas de la wavelet madre o wavelet analizante que hayamos decidido emplear. El proceso a seguir. Estas son las funciones de enventanado denominadas wavelets madre. Antes de filtrar esta señal conviene que echemos un vistazo a la ayuda del script lineabase y veamos cómo funciona y los parámetros que admite. que contiene 10. podemos cargar el registro de la señal ECG mediante el siguiente comando: >> load ecg500. su componente frecuencial es bastante inferior a la de la señal que nos interesa. Para ello: help lineabase Dpto. por tanto.doc). De este modo. U. respectivamente. de modo que las escalas de tiempo de las diferentes gráficas visualizadas estén etiquetadas en milisegundos. según el teorema de Nyquist. Por cada nivel de descomposición wavelet que realizamos se aplica un filtrado paso alto y paso bajo de media banda para obtener el detalle Dn y la aproximación An. Una vez filtrada la señal de la forma más eficiente. Electrónica. para el primer detalle: fci=fs/4 fcs=fs/2 Para el detalle de orden n el valor de ambas frecuencias es: fci=fs/2n+1 fcs=fs/2n Señal f = 0 … fs/2 A1 f = 0 … fs/4 D1 f = fs/4 … fs/2 A2 f = 0 … fs/8 Dpto. D2 f = fs/8 … fs/4 Laboratorio de Instrumentación Biomédica . sin distorsionar la señal ECG. proponemos un ejercicio para familiarizarse con más detalles relativos a la misma. se recomienda reconstruir y visualizar la última aproximación y varios detalles. se propone sumar un tono interferente de 23 Hz y 1 Vpp al ECG original y aplicar una DWT a un nivel adecuado a la señal resultante. Como ampliación. en vez de en número de muestra. para cada uno de los detalles obtenidos existe una frecuencia de corte inferior fci y otra superior fcs que determinan el espectro de frecuencias contenido en cada detalle.Se recomienda comenzar a probar con la wavelet ‘db7’ y con varios niveles de descomposición para determinar subjetivamente cuál es el más adecuado para eliminar las variaciones de la línea base. Luego. Finalmente. se propone modificar el script lineabase.A. probaremos con otros tipos de wavelets y diferentes niveles de descomposición para observar los diferentes resultados que podemos obtener. Así. Téngase presente que la señal ECG se muestreó a fs = 500 Hz. con lo cual la máxima frecuencia registrada es de 250 Hz. Suma de interferencia en forma de tono y posterior eliminación de la misma Aunque la forma más adecuada de eliminar un tono interferente a una señal no es precisamente mediante la DWT. U. Sacar las conclusiones pertinentes. Laboratorio de Instrumentación Biomédica . junto a los tres últimos detalles. deducir qué nivel de descomposición será el más adecuado para obtener con la máxima amplitud el tono de 23 Hz en el detalle Dn correspondiente. Aplicar dicho nivel de descomposición a la señal contaminada con el tono y visualizar las señales resultantes de la última aproximación An.Partiendo de estas premisas. Electrónica.A. Dpto.
Copyright © 2024 DOKUMEN.SITE Inc.