Código Matlab para acondicionar y filtrar señales de electrocardiogramas.


Sergey Chernenko nos muestra, explica y regala el código Matlab para detectar una característica importante de las señales provenientes de un electrocardiógrafo: el pico R de un electrocardiograma.

Para estudiar este excelente ejemplo de procesamiento de señales en ciencias medicas, lo mejor es bajar el archivo zip, con el código original.

Hay que estudiarlo para comentarlo en la clase.

Como nos comenta el mismo Sergey en su sitio Web, la tarea básica en el procesamiento de electro-cardiogramas (ECG) es la detección de los picos R. Sin embargo, debido a la respiración del paciente, la detección es complicada; pues se presenta en los ECGs artefactos que complican la detección de los picos R. Por ejemplo, las distancias irregulares entre los picos, la forma irregular en los picos, la presencia de componentes de baja frecuencia en los ECGs.

Es por ello que se deben contar con varias etapas de procesamiento que reduzcan la influencia de estos factores. Sergey nos muestra un caso donde una señal ECG original se le eliminan las frecuencias bajas por medio de FFT (Fast-Fourier-Transform). En la segunda etapa, se usa un filtro pasa banda, el cual localiza los máximos significativos en la señal. En la etapa final, se eliminan los datos más alejados del promedio. Este proceso permite la detección de los picos R.

1 comentario:

  1. hola estoy haciendo un filtro pasa bajas para filtrar una señal de corazón con ruido pero al correr el codigo que tengo me da error , no se si podrias ayudarme con el diseño del filtro(estoy haciendo el filtro con el comando fdatool en MATLAB). global s1 [nombre1, directorio1] = uigetfile('*.wav', 'Abrir Wav'); cancion1 = fullfile(directorio1, nombre1); [s1 Fs1] = wavread(cancion1); s1 = s1(:,1); axes(handles.grafico1); plot(s1,'b') str = int2str(Fs1); mensaje = strcat(str,' Frecuencia de Muestreo'); legend(mensaje) disp(length(s1)); xlabel('SEÑAL DISCRETA EN TIEMPO'); ylabel('Señal') sound(s1) grid off %------------------------------------------------------------------------------------------% axes(handles.grafico2); s1=s1'; n=[1:length(s1)]; M=512; w=(0:512)*pi/512; [X]=dtft(s1,n,M); plot(w/pi,abs(X)) xlabel('RESPUESTA EN FRECUENCIA') ylabel('Señal') grid off

    ResponderEliminar

Related Posts Plugin for WordPress, Blogger...