Documente Academic
Documente Profesional
Documente Cultură
Julio 2004
Prlogo
Prlogo.
Bienvenido lector! Si has decidido leer este trabajo, seas o no entendido del tema, veras que el contenido, es en verdad muy interesante. La cuestin tratada (el estudio de las caractersticas de las seales de electromiograma, aplicado a la enfermedad del Prquinson), es de una gran importancia hoy en da. Muchas personas hoy por hoy, padecen Prquinson, y las complicaciones que acarrea esta enfermedad para la vida cotidiana, son poco menos que intolerables. La gente que la padece, se ve impedida es sus quehaceres cotidianos, al no poder controlar un temblor progresivo, y creciente, en sus miembros, que les incapacita, hasta para algo tan simple y necesario, como beber un vaso de agua. Pero muchas veces, ese temblor no es lo peor, pues tambin se experimenta una progresiva rigidez en los msculos, capaz de atrofiar por completo, cualquier parte que se vea afectada por la enfermedad. La persona con este problema, ve poco a poco, como se vuelve incapaz de hacer nada, para evitar que sus propios msculo, conviertan una mano o un brazo, en un bloque rgido, incapaz de articularse, y sin utilidad para la ella. Por eso, lector, espero que comprendas mi inters por este proyecto. Si con mi tiempo y mi dedicacin al tratamiento de las seales de EMG, consigo aunque sea poco, algo que sirva para identificar mejor la enfermedad y paliar sus efectos en la medida de lo posible, habr merecido la pena, hasta el ltimo segundo de trabajo invertido en l. Yo, por mi parte, mucho no puedo hacer, pero me sentir satisfecho, si mi esfuerzo se ve recompensado, sirviendo este estudio de base, para, en un futuro, conseguirse logros ms importantes.
Agradecimientos
Agradecimientos.
Ante todo, y como casi siempre, mi primer agradecimiento, va para mis padres y abuelos, no slo por darme la oportunidad de acceder a una carrera universitaria, sino tambin, por haber cultivado en mi desde pequeo, mi naturaleza curiosa e investigadora. Me dieron el mejor y ms extraordinario presente que se le puede dar a una persona en su vida; me dieron una magnfica educacin, tanto en temas acadmicos y lingsticos, como en temas sociales y cvicos, que me ha permitido llegar a donde estoy, y ser quien soy en estos momentos. A raz de ella, y gracias a mi curiosidad innata (ya de pequeo, mi juguete preferido, era una vieja tele que poder desarmar para ver que haba dentro), me vi poco a poco atrado por la rama cientfica y sanitaria, y ya en C.O.U, mis esfuerzos se vieron orientados al estudio de la tecnologa y de la biologa-medicina (como entonces se repartan los grupos acadmicos), por lo que al final, acabe cursando las dos opciones posibles. La eleccin fue difcil, pero finalmente me decante por la ingeniera. Mi segundo agradecimiento, va dirigido hacia mi tutor, que en cierto modo, fue el que me meti el inters por este tipo de proyectos. Algunos encuentros ocasionales, y cientos de preguntas por mi parte, hicieron que poco a poco, mi inters fuese creciendo. Me cont lo importante de la bioingeniera, del intercambio de experiencias, con otros profesionales, en este caso del sector sanitario, en las sucesivas visitas realizadas al Hospital Ramn y Cajal con el que colaboramos en la investigacin y, por supuesto, lo ms importante, la experiencia enriquecedora como persona, que supone trabajar, con los enfermos, acercarte a sus problemas desde un punto de vista humano e implicarte de lleno, en una investigacin, que sabes a priori, que como destinataria, tiene a una persona con problemas, cuya salud y futuro, depende, en parte, directamente de ti. Me ayudo mucho la confianza que deposit en m, eligindome para el proyecto entre otras muchas personas, y confiando en mi capacidad, para llevar a cabo una labor tan importante. Y por ltimo, y no por ello menos importante, un recuerdo colectivo, para toda la gente, que desde pequeo, han estado conmigo, permitindome llegar hasta aqu; mis amigos, familiares y profesores. Gracias a todos!
Gustavo Muoz
ndice
___________
ndice. 1.OBJETIVOS DEL PROYECTO ....................................... 1 1.1.- Introduccin.................................................................... 1 1.2.- La Localizacin de la Enfermedad................................ 2 1.3.- El Punto de Partida ........................................................ 3 1.4.- El Material Utilizado...................................................... 4 2.LA SEAL DE EMG.......................................................... 7 2.1.- Introduccin.................................................................... 7 2.2.- Electricidad y Movimiento............................................. 7 2.3.- Generacin y Transporte. La Sinapsis ......................... 9 2.4.- Llegando al Msculo. Las Unidades Motoras.............. 11 2.5.- Medios Necesarios para el Registro de la Seal ........... 12 2.6.- Hiptesis de Partida para el Estudio............................. 15 3.CARACTERSTICAS DE LA SEAL............................. 18 3.1.- Introduccin.................................................................... 18 3.2.- La Fuerza Generada ...................................................... 19 3.3.- La Frecuencia de las Seales de EMG.......................... 22
3.3.1.El Armnico Principal ....................................................... 25
ndice
___________
3.3.2.-
La Frecuencia Media.......................................................... 25
3.4.- Alcance ............................................................................ 26 4.ANLISIS DE LAS CARACTERSTICAS ..................... 28 4.1.- Introduccin.................................................................... 28 4.2.- Frecuencia Mxima en los Lbulos............................... 29 4.3.- Frecuencia Media en los Lbulos .................................. 30 4.4.- Frecuencia Mxima en los Espacios.............................. 30 4.5.- Frecuencia Media en los Espacios................................. 31 4.6.- Desviaciones de la Frecuencia Media............................ 32 4.7.- Frecuencia Media en los Enfermos de Parkinson........ 37 4.8.- Frecuencia Mxima en los Enfermos de Parkinson .... 39 4.9.- La Fuerza Generada ...................................................... 40 5.APLICACIN DE LOS RESULTADOS.......................... 44 5.1.- Introduccin.................................................................... 44 5.2.- Los Modelos de Markov................................................. 44
5.2.1.5.2.2.Las Cadenas de Markov .................................................... 44 Los Modelos Ocultos de Markov....................................... 47
ndice
___________
5.3.2.-
La Mquina en Paralelo..................................................... 50
5.4.- La Unidad Bsica de la Mquina .................................. 51 6.RESUMEN Y CONCLUSIONES ...................................... 56 6.1.- Resumen .......................................................................... 56 6.2.- Conclusiones ................................................................... 57 7.8.FUTUROS DESARROLLOS............................................. 58 Anexo 1: LAS CLASES ...................................................... 59 8.1.- Introduccin.................................................................... 59 8.2.- Ventanas Grficas en MatLab ...................................... 59
8.2.1.8.2.2.8.2.3.8.2.4.8.2.5.8.2.6.8.2.7.8.2.8.8.2.9.Introduccin ........................................................................ 59 Inicio de una Nueva Aplicacin......................................... 59 Los Botones y Controles..................................................... 61 Las Herramientas ............................................................... 64 Nuestra Ventana Terminada ............................................. 67 Programando la Ventana................................................... 68 La Funcin OpeningFnc .................................................... 69 La Estructura Handles....................................................... 71 Las Funciones set y get............................................... 72
ndice
___________
9.-
Anexo 2: MQUINA DE ESTADOS EN MATLAB........ 86 9.1.- Introduccin.................................................................... 86 9.2.- Mquina de Estados bajo GUI ...................................... 86
9.2.1.9.2.2.9.2.3.Introduccin ........................................................................ 86 Las Herramientas ............................................................... 86 El Programa ........................................................................ 87
10.- Anexo 3: LA HERRAMIENTA DE TRABAJO............... 91 10.1.- Introduccin.................................................................... 91 10.2.- Los Datos Introducidos .................................................. 91
ndice
___________
10.3.- Ubicacin de las Muestras ............................................. 91 10.4.- El EMG Analyzer ........................................................... 92 10.5.- El Men de la Aplicacin ............................................... 100
10.5.1.- Archivo Guardar Sesin ................................................. 101 10.5.2.- Archivo Cargar Sesin .................................................... 101 10.5.3.- Archivo Salvar Datos ...................................................... 101 10.5.4.- Archivo Mostrar Datos ................................................... 102 10.5.5.- Archivo Salir .................................................................... 102 10.5.6.- Edicin Cambiar Directorio ........................................... 102 10.5.7.- Edicin Cambiar Extensin............................................ 103 10.5.8.- Herramientas ...................................................................... 105 10.5.9.- Diagnosis.............................................................................. 105 10.5.10.- Ayuda................................................................................... 105
10.6.- El Lobulizador ................................................................ 106 10.7.- El Anlisis Porcentual .................................................... 111 10.8.- La Evolucin Temporal ................................................. 115 10.9.- La FFT ESP Potencia.................................................. 118
ndice
___________
11.- Anexo 2: INTEGRACIN DE LA HERRAMIENTA DE ANLISIS EN EL PROGRAMA DE VISUALIZACIN .............................................................................................. 122 11.1.- Introduccin.................................................................... 122
11.1.1.- El Conversor de Binario a Texto....................................... 123 11.1.2.- La Herramienta de Diagnosis............................................ 125
Nosotros, en concreto, nos centraremos sobre los EMG, tomados en personas afectadas por Parkinson, y trataremos de caracterizarlos, de tal manera, que tengamos una serie de pautas para identificarlos y clasificarlos, de cara a poder reconocer la enfermedad, en los pacientes que se sometan a la prueba de captura de EMG. Estas muestras tomadas en pacientes enfermos, se contrastarn con las tomadas en gente sana, de tal manera, que al final del proyecto, ya podamos llegar a una identificacin y a una diferenciacin positiva entre
-1-
personas que tengan alguna afectacin del movimiento, y personas sanas, que no presenten ninguna anomala en su actividad.
-2-
Estas zonas, aproximadamente, se ven coloreadas, en la reconstruccin tridimensional del crneo de un paciente real de parkinson. A partir de esta degeneracin, se generan desequilibrios, que causan las dos dolencias ms importantes del parkinson: los temblores y la rigidez. Los temblores, son la dolencia ms caracterstica, por su manifestacin, en forma de violentos espasmos musculares, que van progresando por diversas partes del cuerpo a medida que evoluciona la enfermedad. La rigidez, que por lo general a la gente normal le cuesta asociarla con esta enfermedad, provoca una incapacidad paulatina, de cara a la actividad fsica, inhabilitando las funciones de distintas zonas, hasta casi una inactividad total.
-3-
La primera parte del proyecto, la realiz D. Fernando Parias Talavera [Funcionamiento de la Herramienta de Visualizacin], creando una interfaz grfica de visualizacin de las seales de EMG, y de integracin para futuras herramientas de captura y anlisis para dichas seales. En esta interfaz, es donde finalmente integraremos nuestra herramienta de anlisis de seal, como parte final del desarrollo de nuestro proyecto.
La segunda parte del proyecto, la realiz D. Jos Martn Gonzlez Garca [Adquisicin de la Seal de Electromiograma], implementando una herramienta de captura, que comunicase una tarjeta de adquisicin de datos, con el PC, a travs de una interfaz, que nos permitiese poder capturar seales elctricas musculares (EMG), y acondicionarlas, en amplitud y tiempo de captura, antes de almacenarlas en archivos de datos binarios, un formato creado por los integrantes del grupo de trabajo, para poder almacenar un mayor nmero de datos, en un espacio de memoria, relativamente asequible, pues algunas pruebas pueden llegar a poseer cientos de miles de muestras.
-4-
Finalmente, y como colofn final a nuestro proyecto, nosotros aportaremos la tercera parte, en forma de aplicacin integrada en la interfaz de visualizacin, que permita el anlisis y la identificacin de la enfermedad existente o no, en el paciente sometido a la prueba.
-5-
A parte de estos tres programas, una serie de libros, a los que hacemos referencia en la parte final de la memoria, los cuales aportaron los conocimientos ms especficos, que requirieron ciertas partes del desarrollo.
-6-
La Seal de EMG
-7-
La Seal de EMG
Clulas sin capacidad para reproducirse, que gobiernan toda activada consciente o inconsciente en el organismo desde el movimiento hasta la recepcin sensorial, o los actos reflejos inconscientes producidos por el dolor. Las neuronas, como todas las dems clulas del cuerpo, estn formadas por una zona principal, donde se encuentra el ncleo celular y sus rganos, y a dems, como caracterstica ms notable, por una serie de ramificaciones de dos tipos distintos.
Las dendritas, que son unos terminales receptores donde llega la comunicacin de la sinapsis de la neurona anterior en la cadena, y el axn, ramificacin especialmente alargada, a travs de la cual el impulso nervioso, llega a la siguiente neurona de la cadena. A travs de estas cadenas de neuronas, se comunica la electricidad necesaria para la estimulacin muscular, partiendo desde el cerebro, y llegando a cualquier parte del cuerpo.
-8-
La Seal de EMG
-9-
La Seal de EMG
Al ser esta porosa, permite el trnsito de una serie de iones cargados (Na+, K+, Ca+2, Cl-), de una parte a otra, permitiendo un efecto domino de potencial, que se transmite a lo largo de los axones, hasta las dendritas de las siguientes neuronas. Pero no existe contacto fsico real entre las neuronas, por lo que cuando el impulso llega al final del axn, se requiere otro mtodo, para poder salvar el vaco existente. Esto se hace a travs de la sinapsis nerviosa.
Los vacos interneuronales, se salvan segregando sustancias denominadas neurotransmisores, que provocan una activacin del la seal en la siguiente neurona, al ser recogidos en los receptores de las dendritas, que produce un nuevo comienzo en la alteracin de las cargas elctricas de su membrana, permitiendo as que contine la transmisin del impulso elctrico. Este impulso elctrico sale del cerebro, y viaja a lo largo del cuerpo, a travs de los nervios raqudeos, que a lo largo del eje que representa la medula espinal, contenida en la columna vertebral, comunican el cerebro, con el resto del cuerpo. Un nervio es una estructura anatmica en forma de cordn, formada por mltiples axones o dendritas neuronales, encargada de la transmisin del impulso elctrico nervioso. Cada nervio (visible a simple vista), envuelto por un tubo de tejido conectivo llamado epineuro, consta de varios fascculos nerviosos (apenas
- 10 -
La Seal de EMG
perceptibles a simple vista, visibles con microscopio microquirrgico). Cada fascculo est envuelto por otra capa de tejido conectivo, llamada perineuro, y est formado por numerosas fibras nerviosas (slo visibles en preparaciones histolgicas), que estn revestidas de una tercera capa de tejido conectivo llamada endoneuro.
Las fibras nerviosas estn constituidas por un axn rodeado (fibras mielnicas, de conduccin rpida) o no (fibras amielnicas, de conduccin lenta) de mltiples capas de membrana celular (mielina) de una clula de Schwann, que se arrolla alrededor del axn. Esta capa mielnica est interrumpida peridicamente en los ndulos de Ranvier, puntos de discontinuidad o salto, de los impulsos elctricos.
- 11 -
La Seal de EMG
denominada estereato de acetilcolina, quedando la unin entre la neurona y el nervio libre para una nueva excitacin. Al potencial originado por una unidad motora (UM) se le conoce por potencial de la unidad motriz (PUM) y es la suma de los potenciales de accin de las distintas fibras de la unidad motora.
Esta electricidad generada en los msculos, por los procesos anteriormente mencionados, es la que se registra en las seales obtenidas por electromiografa, de tal manera, que obtendremos una medida clara de la actividad muscular, y por consiguiente, de las actividades estimulativas, producidas por el cerebro, dndonos as, una idea del comportamiento de este, ya sea normal, o alterado, debido a una patologa.
- 12 -
La Seal de EMG
Los electrodos superficiales, que son los que vamos a utilizar nosotros, son unas pequeas piezas metlicas de material conductor, y formas variadas, que se adhieren a la piel, y que a travs de un gel superconductos, transmiten los impulsos elctricos generados en el msculo
La colocacin, depender de la zona y medida que queramos realizar. En nuestro caso, los electrodos los colocamos o en msculos antagnicos, o en dos zonas separadas, del mismo msculo, afectando a distintas zonas de unidades motoras. Un ejemplo, se ve en la siguiente foto, utilizando electrodos para un encefalograma. Para el electromiograma, la colocacin es anloga en electrodos superficiales, variando la situacin en funcin de las necesidades de la zona muscular a registrar.
- 13 -
La Seal de EMG
Los electrodos de insercin, o de aguja, perforan la piel, penetrando en el msculo. Los monopolares, lo hacen a travs de una aguja que se inserta en el msculo, y un electrodo de referencia situado en la piel. Los coaxiales, insertan una aguja hipodrmica, dentro de la cual, van los distintos electrodos, permitiendo lecturas multicanal de hasta 14 receptores.
La siguiente parte del equipo que utilizaremos, ser un amplificador diferencial, que nos permitir amplificar la seal lo suficiente, para que entre dentro de unos rangos admisibles, en los mrgenes de los cuales, nuestro equipo de captura pueda muestrear la seal. Para poder pasar del amplificador operacional, al que van conectados los electrodos, al sistema de muestreo, utilizaremos una interfaz de cables, creados por el equipo de trabajo.
Estos, irn ya conectados a la siguiente etapa de nuestro sistema de muestreo: la tarjeta capturadota. sta, es un componente de hardware,
- 14 -
La Seal de EMG
conectado a un puerto ISA del ordenador, que muestrea la seal, y la pasa a la aplicacin de captura, que se encarga de almacenarla en el disco duro.
- 15 -
La Seal de EMG
traducidas a lenguaje de programacin Visual C++, para su posterior integracin en el programa de visualizacin.
En nuestras seales, tendremos dos tipos de zonas de actividad: zonas generadas por el movimiento activo, y zonas generadas por el movimiento pasivo. Las zonas de actividad generadas por el movimiento activo, son zonas mas diferenciadas respecto a sus respectivas zonas de reposo. Las pruebas, bajo estas caractersticas, se tomaron en pacientes sanos (personal del grupo de laboratorio), ejerciendo un movimiento voluntario de contraccin del antebrazo por un lado, y del brazo por otro. Las pruebas correspondientes a movimientos pasivos, ms orientadas a la deteccin en los pacientes, de rigidez, se tomaron en los msculos que permiten los movimientos de la mano, alrededor de la mueca, produciendo una estimulacin motora, forzada por el mdico que colabora con nosotros, en la evaluacin y el tratamiento de los pacientes. Una vez troceadas las seales, tendremos ya dos zonas claras de trabajo: las zonas de actividad muscular, voluntaria o involuntaria, y las zonas de reposo.
- 16 -
La Seal de EMG
Basndonos en esto, crearemos una primera subdivisin en los datos, generando dos bloques autnomos para su estudio. Llegamos a la conclusin en la propuesta de las caractersticas, que trataramos de centrarnos, en los estudios frecuenciales de la seal, al ser su caracterstica ms significativa, y en algunos estudios de fuerza, reflejados en las reas encerradas bajo la envolvente del cuerpo principal de la seal. Posteriormente, trataramos de ampliar este nmero de caractersticas, para producir un estudio ms exacto y fiable, a largo plazo.
- 17 -
Caractersticas de la Seal
X i = X iC
X
i =1
i= j
C i
- 18 -
Caractersticas de la Seal
Siendo N, el nmero total de muestras de la seal N=1,2,3j, e i, un ndice para recorrer todos los elementos del vector, representados cada uno de ellos por X. En cuanto al ruido elctrico de alta frecuencia, lo resolveremos con un filtro implementado a travs de las funciones de MatLab [Tutorial de MatLab, R13], con el que podremos eliminar frecuencias a partir de los 500Hz, ms all de las cuales, no existe aportacin por parte del msculo a la seal. Aunque estas frecuencias son tan poco relevantes en peso, que aunque no las quitsemos, no aportaran desviacin alguna de las frecuencias de la seal original en los clculos. Una vez filtrada la seal, pasaremos a analizarla, comenzando por los clculos de fuerza.
Caractersticas de la Seal
envolvente de la seal (en rojo), va recorriendo una altura media de la amplitud de los diferentes picos de voltaje registrados.
La forma del desarrollo matemtico del clculo de la envolvente, tendra una representacin simblica, de la siguiente manera.
X = [x1 , x 2 , x3 , x 4 , x5 , x6 , x 7 , x8 , x9 , x10 , x11 , x12 , x13 , x14 , x15 , x16 ,..., xi ] Y = y1 , y 2 , y 3 , y 4 , y 5 , y 6 , y 7 , y8 , y 9 , y10 , y11 , y12 , y13 , y14 , y15 , y16 ,..., y j
10
, x11
.............................................................................. Siendo X, el vector de muestras de la seal de EMG, e Y el vector de valores de la envolvente. Tendremos que tener en cuenta, que la precisin de la envolvente (el nmero de puntos que tiene), depende del tamao de la ventana de muestreo que usemos para recorrer la seal. Ese tamao, en nmero de puntos, nos condiciona la longitud final del vector que contiene los valores de la envolvente, de la siguiente manera. Si llamamos M, al nmero total de muestras que posee nuestra seal de EMG, N el nmero final de muestras que va a poseer el vector que contiene los valores de la envolvente y VM, al nmero de puntos que tomaremos para el clculo de los valores de la envolvente, como medias de los valores de la seal, tendremos lo siguiente:
- 20 -
Caractersticas de la Seal
N = M (VM 1)
Aproximadamente, para guiarnos en el tamao de la ventana de muestreo de la envolvente, podremos seguir la siguiente regla, que genera unas envolventes, de precisin media, sin excesivo recargamiento de datos innecesarios (ms o menos, como la representada en la imagen anteriormente mostrada).
VM M 100
Para el clculo de cada uno de los puntos de la envolvente, tendremos la siguiente implementacin, planteada en formato de cdigo C++, para una mejor comprensin [Ayuda de Visual C++, v6]. //Primero generaremos dos ndices, uno del bucle externo que recorre los valores del vector envolvente, y otro del bucle interno, que va calculando la media de los valores que integran cada punto. int exter = 0: int inter = 0; //Adems, generaremos un ndice auxiliar, que nos permitir sumar los valores de los numero tomados para el clculo de la media, y as calcularla. int c = 0: for ( exter = 0; exter < N; exter++ ) { for ( inter = exter; inter < exter + VM; inter++ ) { c = c + xint er ; } y exter = c = 0; } Una vez calculada la envolvente, tendremos que calcular el rea encerrada por debajo, para poder calcular la fuerza generada durante la prueba, tanto fuerza activa durante la actividad, como fuerza pasiva durante el reposo. Para el calculo del rea, debido a la dificultad que supone calcular una funcin matemtica que describa el comportamiento de la envolvente,
c ; VM
- 21 -
Caractersticas de la Seal
dada la propia complejidad de la seal, recurriremos a una herramienta de geometra sencilla, que nos permita calcular el rea total, mediante la suma de las reas de figuras poligonales, formadas por los diversos tramos de la envolvente.
Una vez calculada el rea, tendremos que el nmero resultante, tiene unas unidades dadas en voltaje a lo largo del tiempo. La unidad que expresa eso, es el Weber. La fuerza, se expresa en forma de induccin magntica generada en el msculo. Resulta interesante conocer la fuerza generada de forma pasiva en una seal de EMG, porque nos puede aportar datos sobre la rigidez experimentada por el paciente en el movimiento, debido a la relacin existente entre las zonas de reposo y de actividad, siendo considerablemente mayor, en enfermos que presenten rigidez, y ms, cuanto ms patente sea sta.
- 22 -
Caractersticas de la Seal
que resultasen lo suficientemente significativas, como para que resultasen una caracterstica de diferenciacin positiva. El resultado obtenido, super todas nuestras expectativas. Para el clculo de los espectros de frecuencias de las seales de EMG, nos hemos basado en la funcin representada por las siglas FFT, o la transformada rpida de Fourier. sta est implementada en MatLab bajo la declaracin fft() [Tutorial de MatLab, R13], pero para aquellos que necesiten las frmulas de clculo en programas que no dispongan de libreras matemticas, a continuacin expondr un pequeo desarrollo simplificado, ya que las libreras de programacin matemtica de Visual C++, son algo limitadas a la hora de actuar. Dado nuestro vector-seal X, con sus elementos x, de una longitud determinada, y dado un futuro vector Y, que contendr los diversos elementos de la FFT, y, que representan el peso de la frecuencia dentro de la seal, tendremos que el clculo de los componentes de las distintas frecuencias de la seal, se hace de la siguiente manera:
yk = x j e
j =1 n 2 i j k n
Y como sabemos que la expresin e it se puede expresar como una suma de senos de la siguiente manera: e it = cos(t ) + i sin (t ) Entonces tendremos que las frmulas simplificadas, nos quedarn de la siguiente manera:
n 2 i j k 2 i j k yk = x j + i sin cos n n j =1
2 i j k y (real ) = x j cos
n j =1
n 2 i j k y (imag ) = x j sin n j =1
Siendo n el nmero de muestras integrantes de nuestra seal. Como vemos, adems, el resultado es un vector de nmeros complejos, por lo que
- 23 -
Caractersticas de la Seal
el resultado que nosotros necesitamos de forma definitiva, ser el mdulo de dicho vector de complejos.
yk =
y (real ) + y (imag )
2 2 2 2
n n 2 i j k 2 i j k y k = x j cos + x j sin n n j =1 j =1
Este resultado, ser nuestro definitivo vector de pesos de las distintas frecuencias de la seal. Pero tendremos que tener en cuenta, que solo debemos coger medio vector, pues es un elemento simtrico. Tomaremos, la mitad de la izquierda, que es la que nos interesa. Y para completar el cuadro, deberemos darle al vector una base, para poder averiguar, cada peso, a que frecuencia corresponde. La base que le daremos, ser la mitad de la frecuencia de muestreo, y obtendremos el siguiente resultado, una vez representado en unos ejes.
- 24 -
Caractersticas de la Seal
De esta representacin obtenida, tenemos que ver, que podemos sacar dos valores muy importantes a la hora del anlisis en frecuencias: el pico mximo de frecuencias o armnico principal, y la frecuencia media o media ponderada de frecuencias.
- 25 -
Caractersticas de la Seal
f =
3.4.- Alcance.
El alcance de estas caractersticas, no es tan simple como se de ve, de acuerdo a la forma de cmo est expuesto, pues las subdivisiones son mayores a la hora de aplicarlas a las seales. Las subdivisiones abarcan a zonas de reposo y actividad, por lo que obtendramos cuatro lneas de desarrollo: Frecuencia Mxima en los Lbulos. Frecuencia Media en los Lbulos. Frecuencia Mxima en los Espacios. Frecuencia Media en los Espacios. Posteriormente, comprobaremos que la aplicacin de estos cuatro campos a las seales, nos dar resultados totalmente distintos, y
- 26 -
Caractersticas de la Seal
diferenciadores entre los tipos de seal, y los pacientes y patologas a los que corresponden.
- 27 -
- 28 -
Fuerza Generada.
Personas Sanas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 Muestra 7 Muestra 8 48,913 48,309 44,928 40,480 Prueba 2 207,126 192,455 226,087 211,304 178,986 Prueba 3 117,391 134,511 164,855 118,729 135,452 124,714 Prueba 4 44,514 40,373 89,130 45,652 38,647 39,130 41,063 Prueba 5 137,681 187,747 185,771 132,411 160,183 180,870 144,022 182,195 Prueba 6 101,449 199,275 200,000 94,203 130,435 99,379 150,000 162,055
Personas Enfermas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 120,145 134,297 127,960 Prueba 2 51,810 56,771 Prueba 3 80,820 76,734 Prueba 4 98,722 111,254 96,787 68,598 101,626 99,085 Prueba 5 64,799 84,008 64,912
- 29 -
Personas Sanas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 Muestra 7 Muestra 8 152,744 148,306 146,205 143,632 Prueba 2 220,038 219,504 220,545 214,291 213,918 Prueba 3 185,204 194,042 195,753 186,664 182,225 190,209 Prueba 4 166,149 155,143 166,544 151,603 157,377 156,663 141,494 Prueba 5 181,632 208,412 201,116 203,377 207,011 213,957 202,617 206,035 Prueba 6 192,405 215,103 208,386 203,822 210,306 195,916 197,508 202,811
Personas Enfermas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 472,706 448,569 450,505 Prueba 2 434,870 435,215 Prueba 3 463,500 443,071 Prueba 4 342,078 260,630 290,429 291,083 267,550 306,376 Prueba 5 455,644 463,504 448,400
- 30 -
Los valores extrados de las caractersticas, son los siguientes, segn los formatos anteriores:
Personas Sanas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 Muestra 7 Muestra 8 80,268 56,856 61,381 35,117 Prueba 2 215,580 167,984 175,725 122,671 198,758 Prueba 3 95,109 101,449 106,778 78,986 92,885 46,640 Prueba 4 54,348 101,449 90,062 71,429 103,261 100,544 82,126 Prueba 5 141,304 209,239 190,217 190,821 160,183 177,989 172,878 141,304 Prueba 6 182,065 166,008 142,512 193,237 178,261 170,569 141,304 186,430
Personas Enfermas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 99,857 97,147 99,469 Prueba 2 30,312 33,440 Prueba 3 55,935 40,254 Prueba 4 82,209 78,562 78,693 83,725 83,674 77,494 Prueba 5 64,799 84,008 64,912
- 31 -
herramienta de programacin, como han sido en este caso, MatLab y Visual C++.
Personas Sanas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 Muestra 7 Muestra 8 157,993 155,792 167,425 164,189 Prueba 2 201,480 183,103 188,730 186,620 211,195 Prueba 3 187,897 187,998 192,783 188,974 178,574 157,440 Prueba 4 164,041 158,749 171,527 166,659 165,958 162,547 163,565 Prueba 5 201,183 206,705 211,696 216,578 207,011 191,970 196,280 182,823 Prueba 6 202,111 192,332 189,188 191,500 213,554 206,017 200,561 208,559
Personas Enfermas Prueba 1 Muestra 1 Muestra 2 Muestra 3 Muestra 4 Muestra 5 Muestra 6 446,006 442,793 450,277 Prueba 2 465,538 598,535 Prueba 3 458,894 455,006 Prueba 4 277,684 270,646 271,632 274,289 274,275 274,930 Prueba 5 455,644 463,504 448,400
El nmero variable de muestras de las muestras en este caso, se debe nicamente a las condiciones de las pruebas. Dependen del nmero de estimulaciones motoras que se produjeron durante su captura.
- 32 -
La primera de ellas, se basa en la diferencia que se aprecia, al superponer los valores de amplitud mxima de la frecuencia, y de frecuencia media, en las seales de EMG. Cuando calculamos los valores de frecuencia media de una FFT, todas las frecuencias existentes, tienen un peso determinado. Si este peso, con respecto al del armnico de mayor relevancia es pequeo, los valores ms o menos, se mantendrn por el estilo. Esto se ver en seales bien definidas, donde no halla un exceso de frecuencias dominantes, lo que podremos llamar, seales limpias. Cuando las seales son sucias, tendremos armnicos alrededor del principal, con suficiente peso, como para desviar la frecuencia hacia sus valores, al hacer el clculo de la media de frecuencias. Lo que hemos observado de este comportamiento, se ve en las siguientes grficas, correspondientes a las seales que se han tomado para el anlisis:
- 33 -
- 34 -
- 35 -
- 36 -
Lo que se observa en estas grficas, es que el comportamiento de las frecuencias en gente sanos, es mas limpio. El armnico principal, destaca de una forma ms notable dentro del rango de frecuencias, de tal manera, que el movimiento es preciso y concreto. El control muscular es ms apropiado, y no existen temblores en ste, al contrario que en los enfermos de parkinson. En estos ltimos, observamos que la estimulacin primaria orientada al movimiento, se encuentra camuflada dentro de otras muchas seales, que tambin se descargan sobre el msculo, por lo que se producira una descoordinacin de las seales, con la intencin voluntaria dirigida al sistema muscular a mover, por lo que se producira los espasmos y los temblores violentos, al activarse fibras musculares de forma errnea.
- 37 -
Cuando el pico mximo de frecuencias se ve solapado, la limpieza y definicin del movimiento, es casi inexistente, por lo que apareceran las anomalas y los temblores. Las grficas que ilustran los resultados anteriores, quedan de la siguiente manera:
600,000
500,000
Frecuencias
400,000
300,000
200,000
100,000
0,000 1 2 3 4 5 Pruebas 6 7 8 9 10
- 38 -
200,000
Frecuencias
150,000
100,000
50,000
0,000 1 2 3 4 5 Pruebas 6 7 8 9 10
- 39 -
200,000
Frecuencias
150,000
100,000
50,000
0,000 1 2 3 4 5 Pruebas 6 7 8 9 10
- 40 -
Los distintos colores de las grficas arriba representadas, indican lo siguiente: Azul Fuerza media en las zonas de actividad. Rojo Fuerza media en las zonas de reposo. Malva Frecuencia media de los espacios. Negro Frecuencia media de los lbulos. Verde Diferencia de rea entre un lbulo y su siguiente espacio. En estos grficos se puede ver que en la fuerza calculada de las seales, se da un claro patrn de rigidez en los pacientes de parkinson. Mientras que en la gente sana, cuando cesa la actividad, la fuerza en reposo disminuye, con respecto a la fuerza generada en la actividad motora, en los enfermos de parkinson, la fuerza no solo no disminuye, sino que hasta puede aumentar. Esto se puede explicar aludiendo a las frecuencias. Al forzar una definicin en la excitacin necesaria para el movimiento, las dems partes del msculo, se ven privadas en cierta medida del protagonismo, pero al dejar el cerebro de actuar voluntariamente sobre los msculos, las frecuencias parsitas, dominan la situacin, dando una excitacin continua y aleatoria, que genera una fuerza en reposo, que se va incrementando gradualmente, a medida que el paciente pasa ms tiempo inactivo.
- 41 -
Los valores de fuerza obtenidos en las pruebas, son los siguientes, representados en la tabla que sigue:
Sanos Lbulos 72,9047 84,4647 95,4147 108,047 46,3072 40,9528 35,0404 41,9701 43,9448 44,4945 52,4775 54,2739 70,4825 58,6874 57,1903 66,6133 42,5671 27,8431 29,9123 26,0056 25,165 29,6157 13,0746 16,31 14,0234 13,3215 18,0002 24,1599 29,5223 29,5214 14,3104 10,7908 14,143 15,5955 16,7437 21,5596 29,5273 37,1198 Espacios 5,59239 5,38885 5,7993 5,29566 5,22199 4,77919 5,0593 5,44557 6,89499 36,2305 29,7926 35,1678 29,3887 29,6906 31,6651 11,249 6,99287 5,23635 5,09587 5,22237 4,98378 6,43777 6,64192 6,95484 7,23369 8,55885 6,95484 6,62199 7,03505 6,24428 5,37735 7,19209 6,60608 6,97029 11,5048 11,0184 9,8007 8,53141 Lbulos 2543,05 3694,33 3096,75
Prueba 1
555,636 632,144
111,965 109,844
Prueba 2
110263 127906
22710,2 904,333
Prueba 3
Prueba 4
Prueba 5
Prueba 6
- 42 -
Importante: Tambin para estudios posteriores, hago una resea aqu. Fijmonos que las frecuencias, son uniformes por separado a lo largo de lbulos y espacios, por lo que a la hora de estudiar una seal, independientemente de por donde la cortemos para su estudio, los resultados en frecuencias, no se vern desvirtuados.
- 43 -
- 44 -
Una cadena de Markov [Markov 24] es una serie de eventos, en los cuales la probabilidad de que ocurra un evento depende del evento inmediato anterior. Las cadenas de este tipo tienen memoria. Recuerdan" el ltimo evento y esto condiciona las posibilidades de los eventos futuros. Esta dependencia del evento anterior distingue a las cadenas de Markov de las series de eventos independientes, como tirar una moneda al aire o un dado. Por eso, una de las formas de representacin de las cadenas de eventos de Markov, es en forma de diagrama de estados.
En este ejemplo, representaramos cuatro estados, M1, M2, M3 y M4, con las correspondientes probabilidades de salto entre ellos. Otra forma de representacin de un modelo de Markov, es a travs de su matriz de transiciones. En ella aparecen todas las posibilidades probabilsticas existentes, para las transiciones entre estados.
- 45 -
Para los valores de n=0,1,2,3 Una vez que estamos en un estado, existen una serie de transiciones posibles a cualquiera de los estados siguientes o a s mismo [Markov 03].
Las transiciones entre estados, son probabilidades, que dependen del estado en el que estamos, y del estado en el tiempo anterior, por eso decimos, que la mquina recordara su evolucin. No son transiciones fijadas que se puedan corresponder punto a punto, entre dos conjuntos de valores. Con Markov, tendramos un conjunto fijo, que son los estados, y un conjunto dependiente, que son las probabilidades de las transiciones, las cuales variarn en funcin de la evolucin que est teniendo la mquina. En nuestro caso concreto, lo que tratamos de hacer, es que la evolucin de nuestro modelo matemtico, dependa de una serie de caractersticas, vinculadas a una prueba de electromiograma, realizada a un paciente. La determinacin de la anomala en el movimiento, vendr determinada, por como se comprota esa caracterstica en una prueba estndar de enfermo o sano, y de cmo se comporta en nuestra prueba desconocida.
- 46 -
La Probabilidad de salto, la fijaremos en funcin de una prueba estadstica, de comparacin de distribuciones normales y comparacin de medias. El factor variable lo encontraremos, en que el salto depender de que los valores obtenidos en la estimacin de similitud de las pruebas, est dentro de una serie de valores tabulados. La mquina, ser capaz de, evaluando lo obtenido con una caracterstica, ver si se debe apurar ms el nivel de contraste de caractersticas, o si viendo los resultados obtenidos hasta ahora, podemos aportar un diagnostico fiable.
- 47 -
simplemente smbolos sino que ahora se les asocian grupos con distribuciones de probabilidad. Los Modelos de Markov describen un proceso de probabilidad el cual produce una secuencia de eventos o smbolos observables. Son llamados ocultos porque hay un proceso de probabilidad subyacente que no es observable, pero afecta la secuencia de eventos observados. En el caso del reconocimiento de voz, ejemplo expuesto al principio del apartado, los modelos ocultos de Markov pueden ser vistos como el modelo de un proceso, el cual produce una secuencia de eventos acsticos perteneciendo a una unidad especfica, o palabra, en un vocabulario dado. Las variaciones entre las secuencias de observaciones de la misma clase, como la longitud de una palabra y pronunciacin, son modeladas por la naturaleza del elemento estocstico de un HMM. Un sistema automtico de reconocimiento de voz generalmente tendr n modelos ocultos de Markov, uno para cada clase. El modelo reconoce la palabra cuando el estado final es alcanzado. En nuestro caso, los modelos ocultos se aplicaran, en las unidades mnimas de las mquinas. En stas, generamos unas variables estadsticas de contraste, para las distintas caractersticas de la seal, y las distintas anomalas detectables en ella, las cuales, se comparan con unos patrones aportados por las distribuciones normales t, o de t de Student. Las enfermedades se reconocern en el caso de que existan en el paciente, cuando se alcanza el estado final de la comparacin, y una de las dos caractersticas es descartada, al salirse del rango de los valores tabulados. Antes de continuar, tendremos que tener en cuenta, que los modelos de Markov utilizados en nuestro proyecto, prcticamente, slo rozan la superficie, del basto ocano que representa toda la teora estadstica de cadenas de Markov, y modelos ocultos de Markov. Debido a las caractersticas concretas de nuestro proyecto, no nos hemos podido limitar a los modelos de Markov, y ya que las primeras investigaciones se realizaron sobre la toolbox de estadstica de MatLab, se procuraron aprovechar al mximo, las nociones sacadas, as como las ecuaciones, y el cdigo de programacin.
Grupo de Bioingeniera (E.U.I.T.I) - 48 Gustavo Muoz Agapito (44674)
Para ello, fue necesario, recurrir a libros de estadstica [Estadstica Aplicada] [Estadstica para Ingenieros], que nos aportasen la informacin necesaria sobre las comparaciones de poblaciones, ya que los datos que tendramos que contrastar, eran vectores representativos de distribuciones normales, con una media y una varianza, sobre las que basaramos las variables estadsticas, para producir la evolucin de la mquina. Con esto, conseguimos simplificar el modelo, salvando as, la compleja estadstica de Markov, y logrando dar funcionalidad y eficiencia, a nuestra mquina de estados.
- 49 -
Cuando en alguno de los estados las encuentra, detiene su avance, y dependiendo de que caractersticas sean vlidas, emitir un diagnstico determinado. La mquina, es muy rpida, y requiere un estudio ms a fondo de las caractersticas, para poder realizar un ordenamiento de estas a travs de los estados, de la ms significativa a la menos significativa.
- 50 -
- 51 -
Los pasos seguidos para el contraste de poblaciones, son los siguientes. Primero, nos hemos referido a un contraste basndonos en una comparacin de medias entre poblaciones. Acudiendo a la bibliografa, encontramos un apartado que nos describe perfectamente, las herramientas que debemos utilizar. Dispondremos de dos poblaciones para el contraste, las cuales tienen una serie de caractersticas propias. Estas son las siguientes:
- 52 -
Tomando en cuenta estas caractersticas, tratamos de hacer un anlisis basndonos en la media, desconociendo las varianzas de las muestras, a priori. Para ello, usaremos un anlisis basado en la distribucin t, o t de Student, que es utilizado en la funcin de MatLab.
Para ello, supondremos la hiptesis nula, en que las medias coinciden, y su hiptesis complementaria, en que las medias no coinciden:
H 0 : 1 = 2 H 1 : 1 2
- 53 -
Teniendo en cuenta el valor de la media y de la varianza de las dos poblaciones y que el nmero de muestras de cada una es n1 y n 2 :
xi 1 n1 2 2 x1 = s1 = ( xi x1 ) n1 i =1 i =1 n1 x2 =
j =1 n2
n1
xj n2
2 s2 =
1 n2 2 (x j x 2 ) n 2 j =1
Calcularemos el siguiente valor de varianza conjunta de las dos poblaciones, teniendo en cuenta que el nmero de grados de libertad para dos poblaciones es 2 [J. C. Miller y J. N. Millar. ETS QUIM]:
2 ( n1 1) s12 + (n2 1) s 2 =
2 p
n1 + n2 2
y (n1 + n2 2) , 2 los lmites mximos, dentro de los cuales, la t de Student calculada, t 0 , permanece dentro de los valores tabulados. Y a continuacin en la tabla, entrando por el x1 x 2 0 sp 1 1 + n1 n2
H 0 : 1 = 2 1 2 = 0 t 0 =
La hiptesis nula (que las medias sean iguales, y las poblaciones contrastadas, se puedan equiparar) se cumplir cuando la t calculada se encuentre dentro del margen proporcionado por los valores tabulados. Representando esto grficamente, tendremos lo siguiente:
- 54 -
Teniendo en cuenta que los valores representados en el dibujo, encontrados en la tabla tabulada [Table IV] dentro de este mismo apartado, son los siguientes:
t = t
2
,( n1 + n2 2 )
t = t
2
,( n1 + n2 2 )
Cuando una de las dos poblaciones patrn alcanza la verificacin de la hiptesis nula, entonces se sale del contraste, y aquella poblacin determina el diagnstico a mostrar como resultado. Si ninguna de las poblaciones da un resultado determinante sobre el diagnstico, entonces pasaremos a la caracterstica siguiente, a ver si esa, puede aportar ms informacin y una identificacin positiva. La programacin realizada en MatLab, y su traduccin posteriormente a Visual C++, esta basada en unos esquemas, que aparecen al final de este capitulo.
- 55 -
25% - x% SANO
Contraste 1 (bis)
Contraste 1
CASO INDETERMINADO
25% ENFERMO
25% - x% ENFERMO
25% SANO
CASO INDETERMINADO
25% - x% SANO
Contraste 2
25% ENFERMO
Contraste 2 (bis)
25% - x% ENFERMO
25% SANO
25% - x% SANO
Contraste 3
CASO INDETERMINADO
25% ENFERMO
Caracterstica Introducida
Contraste 3 (bis)
25% - x% ENFERMO
25% SANO
CASO INDETERMINADO
25% - x% SANO
Contraste 4
25% ENFERMO
Contraste 4 (bis)
25% - x% ENFERMO
PACIENTE SANO
Contraste 1
PACIENTE ENFERMO
PACIENTE SANO
Contraste 2
Caracterstica Introducida
PACIENTE ENFERMO
PACIENTE SANO
Contraste 3
CASO INDETERMINADO
PACIENTE ENFERMO
PACIENTE SANO
CASO INDETERMINADO
Contraste 4
CASO INDETERMINADO
PACIENTE ENFERMO
Sano
Pruebas
Partidor
Analizador
Diagnosis
Enfermo
CACHOS
Lbulo 11 Lbulo 12 Lbulo 13 Espacio 11 Espacio 12 ...
POBLACIONES
MedLob 1 MaxLob 1 MedEsp 1 MaxEsp 1 MedLob 2 MaxLob 2 MedEsp 2 MaxEsp 2 ...
Pgina 1
Resumen y Conclusiones
- 56 -
Resumen y Conclusiones
6.2.- Conclusiones.
Las conclusiones a las que se llega, despus de un proyecto de tal envergadura, es a apreciar la importancia real de las pruebas de electromiografa. Los datos aportados por ellas, a la hora de diagnosticar cualquier enfermedad relacionada con los trastornos del movimiento, son indispensables, pues nos permiten llegar a un diagnstico o clasificacin de ellas, bastante acertado. El desarrollo futuro de esta lnea de investigacin, aportar una serie de herramientas de diagnstico, de gran utilidad para la comunidad mdica, y para los pacientes que sufren trastornos del movimiento.
- 57 -
Futuros Desarrollos
- 58 -
Anexo 01
- 59 -
Anexo 01
Esta nos ofrece las opciones tpicas; nos permite abrir proyectos ya diseados, que por lo general nos son poco tiles, debido a las opciones que presentan que casi nunca coinciden con nuestras necesidades y abrir un proyecto abierto anteriormente. Normalmente, por defecto elegiremos abrir una ventana en blanco para ir rellenndola de acuerdo a nuestras necesidades. La ventana siguiente pinta: base para todos nuestros proyectos, tiene la
En ella, podremos encontrar todas las herramientas necesarias para hacer cualquier tipo de proyecto.
- 60 -
Anexo 01
Las herramientas, para aquellos que ya hayan programado en algn tipo de programa visual, vern que no cambian. Tendremos botones, cuadros de texto, casillas de seleccindistribuidas en el lateral de la ventana principal.
El primer botn esta siempre resaltado por defecto, y nos permite manejarnos por la ventana, con el puntero del ratn como herramienta.
Estos son los tpicos botones que nos podemos encontrar en cualquier aplicacin de Windows. Para su funcionamiento, se crea una funcin de llamada que se activa cuando hacemos un clic sobre el botn en la ventana de proyecto, ejecutndose en ese momento el cdigo que hayamos escrito en dicha funcin.
Este ms que un botn, es un conmutador propiamente dicho. Nos permite mientras est activado, realizar una serie de acciones que hayamos programado, distintas a las que se realizan con este desactivado.
- 61 -
Anexo 01
Los radio buttons, tienen una funcin selectora, y son la mejor herramienta que tenemos para limitar las opciones del usuario. Esto con el uso, veremos que evita que la aplicacin se cuelgue, porque muchas veces, los campos no los tenemos protegidos contra cualquier valor que se meta, y a veces si estos son pocos, resulta til limitarlos.
Aqu teneos una herramienta de verificacin, cuando queremos campos adicionales. Podemos hacer que esta herramienta controle el uso de cualquier otra. Activndola, podemos hacer por ejemplo, que el nmero introducido en un campo de texto tenga un significado u otro.
Estos son los famosos cuadros de texto, que nos sirven tanto para introducir parmetros, como para mostrar en ellos valores que nos devuelva el programa. En ellos, se puede introducir cualquier cosa, pero MatLab, lo toma todo como strings. Si queremos meter un nmero y usarlo como un entero en alguna de nuestras ecuaciones, tenemos que acudir a comandos especiales para transformar entre tipos de datos, por ejemplo: str2num() <de cadena de texto a nmero>
Bsicamente son carteles para poner texto dentro de las aplicaciones, normalmente asociado a controles, para indicar funciones, tipo de datos a introducir o tipo de datos que se devuelven.
Estos controles resultan muy tiles a la hora de limitar valores. Normalmente, se mueven entre dos valores fijos, y en funcin de su posicin, nos dan valores intermedios, que podemos aplicar a cualquier cosa, porque ya vienen dados como nmeros. Por ejemplo esto es til para valores porcentuales, regulando la barra entre 0 y 100 o 0 y 1.
Este controlo, no tiene una utilidad funcional. Sirve nicamente de elemento decorativo para agrupar otros
- 62 -
Anexo 01
controles, especialmente los radio buttons, los cuales al dar opciones comunes se suelen agrupar por temas dentro de estos rectngulos.
Estos dos controles tienen funciones similares. Nos sirven para seleccionar distintos campos preintroducidos, o meter nuevos campos que se asimilen a algn tipo de pequea base de datos, para tenerlos para futuras ejecuciones del programa.
Sin duda el ms novedoso he importante de todos. Este es un control exclusivo de MatLab, que nos permite representar grficamente, cualquier cosa que necesitemos dentro de las funciones normales de representacin de MatLab. Podemos meter ms de uno dentro de una misma aplicacin, movindonos entre ellos usando su nombre para identificarlos:
- 63 -
Anexo 01
Todas las herramientas, las encontramos en la parte de arriba de nuestra ventana de trabajo. Cada una activada por uno de estos botones:
- 64 -
Anexo 01
Su funcin de izquierda a derecha, es la siguiente: Alineamiento. Editor de mens y cuadros de contexto. Acceso al cdigo de la ventana. Editor de propiedades de los objetos. Explorador de controles. Ejecutar aplicacin.
- 65 -
Anexo 01
- 66 -
Anexo 01
% --- Executes on button press in <nombre del control>. function <nombre del control>_Callback(hObject, eventdata, handles)
Grupo de Bioingeniera (E.U.I.T.I) - 67 Gustavo Muoz Agapito (44674)
Anexo 01
% hObject handle to <nombre del control> (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Esta estructura comn lo nico que tiene es el nombre de la funcin, y el evento que la activa. Todo lo dems, que queramos que suceda, lo tendremos que programar nosotros.
Lo primero que haremos ser utilizar el botn de creacin de cdigo, el cual nos generar todas las cabeceras, las funciones de arranque y los vnculos necesarios para que nuestra ventana funcione. Lo segundo que haremos, ser aadir nuestro cdigo.
Anexo 01
como cualquier script, con la salvedad, de estar asociada a nuestra ventana, y servirla de base de funcionamiento. Por lo que nuestras ventanas, estarn siempre compuestas de un par de archivos, que veremos, se pueden agrupar en uno solo, para trabajar con el compilador. Para esto usaremos la funcin export, dentro de la ventana de la guide, en el men file. Esto nos generara un solo archivo .m, que integra toda la creacin de la ventana grfica, en cdigo escrito.
% --- Executes just before EMG_Analyzer is made visible. function EMG_Analyzer_OpeningFcn(hObject, eventdata,
- 69 -
Anexo 01
handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to EMG_Analyzer (see VARARGIN) cla; %Carga del vector predeterminado por el programador. set(handles.eb_file_path,'String','D:\Trabajos de la Universidad y Documentos\Proyecto de Fin de Carrera\Caracterizacion de Electromiogramas\Pruebas de Electromiograma\PRB1CH1.txt'); handles.periodo=0; set(handles.eb_perm,'String',handles.periodo); %Valores iniciales para la eleccion del tipo de grafica que queremos para %la seal de filtrado. set(handles.rb_normal,'Value',1); set(handles.rb_med,'Value',0); set(handles.rb_doble,'Value',0); handles.val_fil=1; %Valores iniciales para el tipo de grafica de pwelch. set(handles.rb_oneside,'Value',1); set(handles.rb_twoside,'Value',0); handles.val_side=1; %Valores iniciales para la eleccion del tipo de seal sobre la que aplicar %la envolvente. set(handles.rb_sig_norm,'Value',1); set(handles.rb_sig_fil,'Value',0); handles.val_env=1; %Determinacion de la resolucion de la ventana de muestreo de la seal, para %obtener la envolvente. handles.l=0; set(handles.eb_res,'String',handles.l); % Choose default command line output for EMG_Analyzer handles.output = hObject;
Grupo de Bioingeniera (E.U.I.T.I) - 70 Gustavo Muoz Agapito (44674)
Anexo 01
vector=handles.vector1; long_vector=length(vector); Fs=get(handles.eb_perm,'String'); Fs=str2num(Fs); if Fs==0; error_per; return; end t=1:1:(long_vector); t=(t/Fs); handles.vector2=abs(vector); axes(handles.axes1); cla; plot(t,handles.vector2); grid on; zoom; guidata(hObject, handles);
En el primer resaltado tomamos un dato desde otra funcin; en el segundo resaltado, guardamos nuestro propio dato en la estructura
- 71 -
Anexo 01
handles; y en el tercer resaltado, actualizamos los datos almacenados en la estructura con los nuevos valores o las nuevas variables. ste ltimo, es una formula fija. Siempre es igual.
Fs=get(handles.eb_perm,'String'); set(handles.eb_area,'String',a); En el primero, a la variable Fs, le asignamos el valor escrito en el cuadro de edicin eb_perm. Primero indicaremos el nombre del control, y luego la caracterstica. sta la podremos sacar del editor de objetos en la GUIDE. En el segundo, tratamos de mostrar por pantalla en un edit box, el valor de la variable a, por lo que le daremos a la propiedad string del control, dicho valor. Primero el nombre del control, luego la propiedad y por ltimo el valor a asignar. Todas estas caractersticas se pueden preestablecer en la GUIDE, pero luego se pueden modificar al gusto del programador en el cdigo.
axes(handles.axes2); cla; plot(f,pyy(1:(Fs/4)+1)); axis([0 50+frec 0 opp]); title('Contenido en frecuencias (Hz)'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); grid on;
- 72 -
Anexo 01
zoom; new=20*log(pyy(1:(Fs/4)+1));
axes(handles.axes1); cla; plot(f,new); axis([0 1000 min(new) max(new)]); title('Contenido en frecuencias (Hz)'); xlabel('Frecuencia (Hz)'); ylabel('Amplitud'); grid on; zoom;
Lo nico que habr que hacer, ser poner la funcin axes(), indicando en su interior el nombre de los ejes a utilizar, que como cualquier control se encuentran dentro de la estructura handles: handles.axis1, handles.axis2 As conseguiremos representar nuestra salida grfica desde cualquier parte del cdigo, en la zona destinada a grficos, que necesitemos.
- 73 -
Anexo 01
Y por que querramos hacer esto si ya podemos trabajar en MatLab con nuestra funcin. Porque, de hecho, slo podemos trabajar en MatLab con nuestra funcin. Para poder ejecutarla, tendremos que disponer siempre del programa, y eso en algunos momentos o lugares, puede resultar imposible. La forma ms estndar de sacar nuestros programas del ordenador, es a travs de Visual C++ (en el caso de aplicaciones con ventanas), de forma que pueda ejecutarse en cualquier ordenador, en todo momento, siempre y cuando cumplamos unos requisitos mnimos.
- 74 -
Anexo 01
Una vez introducido y activado, lo primero que nos dice, es que si queremos que automticamente, se busquen compiladores en el PC, a lo cual responderemos que si. Esto nos producir una lista, de la cual escogeremos numricamente el compilador de Microsoft Visual C++. La lista en un ordenador normal, debera tener el siguiente aspecto:
Select a compiler: [1] Lcc C version 2.4 in C:\MATLAB65\sys\lcc [2] Microsoft Visual C/C++ version 6.0 in C:\Archivos de programa\Microsoft Visual Studio [0] None
- 75 -
Anexo 01
- 76 -
Anexo 01
En nuestro caso elegiremos la opcin 2, del Visual C++, y ya el resto de la automatizacin, corre por cuenta de MatLab, aunque antes nos pedir que nos aseguremos de la opcin elegida.
Una vez que le aseguremos que hemos elegido correctamente, se auto ejecuta la configuracin del compilador, y ya lo tendremos todo dispuesto por parte de MatLab. Recordemos que esto solo debemos hacerlos la primera vez. Luego ya queda configurado de por vida.
- 77 -
Anexo 01
En ella, marcaremos la opcin MATLAB Add-in, que nos activara la nueva barra de herramientas.
La barra de herramientas que obtendremos, tiene una serie de controles, con distintas funciones. Estas son:
El primer botn nos permite aadir archivos .m a nuestro proyecto visual actual, lo cual a la larga veremos que nos resultar ms til y cmodo que hacer directamente un proyecto MatLab, que es la otra opcin que nos da Visual C++.
- 78 -
Anexo 01
Esta ltima, la encontraremos al crear un nuevo proyecto, y tiene esta pinta. A la larga, no funciona demasiado bien, porque no est muy desarrollada. El botn de aadir proyecto, tiene las siguientes propiedades, de las cuales marcaremos, las que vienen reflejadas en la figura. Despus es solo elegir el archivo a abrir, a condicin de que sea una funcin. Las caractersticas del archivo ya las expondremos ms adelante.
Los dems botones de la barra de tareas no merecen la, por su escaso uso, salvo el del final que corresponde a la ayuda. Con esto, ya tendremos incorporado a nuestro proyecto un archivo de MatLab, que
Grupo de Bioingeniera (E.U.I.T.I) - 79 Gustavo Muoz Agapito (44674)
Anexo 01
funcionar como una funcin ms dentro de nuestro programa, con ciertas peculiaridades. A continuacin en Visual C++, para poder trabajar, lo que tenemos que hacer, es aadir las libreras de MatLab, para que visual, sea capaz de encontrar las referencias que le pasan los archivos de MatLab compilados, al ejecutarse. La mejor forma de verlo, va a ser ilustrado.
- 80 -
Anexo 01
- 81 -
Anexo 01
suma(2).ExtractData(&m_valor);
La funcin acta como una clase, y el mtodo ExtractData(), lo que hace es que te saca de dicha funcin, el valor que esta se supone
- 82 -
Anexo 01
que te tena que devolver. Estos valores que se le pasan o que te devuelve, se ponen en la declaracin de la funcin e MatLab. Un enunciado normal para una funcin sencilla (siguiendo con la suma), podra ser:
Todos los .m para el compilador, deben ser funciones, y todas las funciones tienen esa estructura: la cabecera y el cuerpo de la funcin. En la cabecera declararemos la funcin y los parmetros que toma o devuelve. Para poder pasarle valores a la funcin, estos deben tener una estructura concreta, comprensible por el cdigo que crea MatLab a partir del .m. Esta estructura es mwArray. Con ella, podremos pasarle a MatLab, cualquier tipo de datos que creemos en el cuerpo principal de nuestro programa. Por ejemplo, el cdigo siguiente.
[] char Path[100]="E:\\Mis documentos\\Proyecto de Gustavo\\Funciones de MatLab\\Maquina 02\\Muestra2"; char PathE[100]="E:\\Mis documentos\\Proyecto de Gustavo\\Funciones de MatLab\\Maquina 02\\"; mwArray PathEx,PathEEx m_status=Path; UpdateData(FALSE); PathEx=mwArray(Path); PathEEx=mwArray(PathE); []
Los datos, los seguiremos pasando a travs de la declaracin de la funcin como se ha hecho siempre, pero al tener forma de mwArray, la funcin compilada del .m, los entender, si los hemos creado o declarado en Visual C++.
- 83 -
Anexo 01
lo que haremos ser trabajar desde la consola de MatLab. Para crear ventanas de win32 que trabajen de acuerdo a una funcin que hayamos hecho en MatLab, el comando a utilizar ser el siguiente:
mcc -m <funcin.m>
MatLab generar no solo la aplicacin de win32, sino que adems genera los archivos .c, desde donde se puede compilar, y trabajar con ellos en C. Aunque debido a la complejidad del lenguaje de compilacin es recomendable que todas las modificaciones de la funcin se hagan en MatLab, y se vuelva a compilar la funcin cuantas veces sean necesarias.
mcc -x <funcin.m>
Esta operacin, nos crear un archivo que se llamara <funcin.dll>, y que llamaremos desde MatLab de la forma habitual, que ser totalmente funcional, y mucho ms rpido que su misma versin .m.
- 84 -
Anexo 01
No hay forma humana en esta versin del compilador, de que Visual C++, la acepte como tal, y la use en su programacin. Por lo tanto, la apertura de archivos en las funciones de MatLab, para pasar por el compilador, tiene que ser la clsica. Por lo que una sentencia tan sencilla como esta:
muestra=load(nombredearchivo);
Se convierte en un despliegue como el siguiente (copiado de una funcin real que carga dos archivos de texto, para compararlos mediante una funcin estadstica de estudio de poblaciones):
function emw=comparacion(Path,PathE,i,j); a=0.05; je=(j-1); nombre=sprintf('%s\\m%d.txt',Path,i); nombreE=sprintf('%s\\Estado0%d.txt',PathE,je); p=fopen(nombre,'r'); muestra=fscanf(p,'%f',inf); fclose(p); pE=fopen(nombreE,'r'); estado=fscanf(pE,'%f',inf); fclose(pE); [h,p,ci]=ttest2(estado,muestra,a); emw=h;
Ms que otra cosa, la programacin de las funciones en MatLab, para el compilador, se reduce a unos pocos conocimientos bsicos, y un montn de experiencia obtenida de miles de ensayos y pruebas, as que, hasta aqu los conocimientosy nimo con las pruebas.
- 85 -
Anexo 02
- 86 -
Anexo 02
Los elementos x e y, son las dos poblaciones que compararemos. En nuestro caso, una siempre ser la poblacin de referencia, representativa de cada estado. El parmetro alpha, es el grado de significacin, al cual, podremos rechazar la hiptesis nula. Por defecto, su valor es de 0.05, pero lo podremos modificar a voluntad. El valor de ci, es 100(1-alpha)%, y representa el intervalo de confianza para la diferencia real entre medias ( x y ). Por ltimo, significance, es el valor p asociado a la estadstica T, que tiene la siguiente expresin:
T= s
xy 1 1 + n m
Los valores m y n, hacen referencia al numero de observaciones de las poblaciones que comparamos. El valor s, hace referencia a la desviacin tpica.
9.2.3.- El Programa.
La primera aplicacin, se ha hecho en MatLab. El programa, lo que hace es una evolucin simple, de un estado al siguiente a lo largo de cuatro estados. Lo que hacemos es avanzar de un estado a otro; en el caso en que las poblaciones rechacen la hiptesis nula, permaneceremos en un estado, al darse un cierto nivel de identificacin entre nuestra poblacin de prueba, y la poblacin representativa de dicho estado. Si por el contrario, la hiptesis nula no es rechazada, entonces, pasaremos al siguiente estado, puesto que las poblaciones comparadas, ya no tienen relacin. Para ello, haremos una funcin de entrada, que llamara al primer estado. Cada estado esta representado por una funcin, y en la evolucin de la mquina, se van llamando entre ellos. Un estado cualquiera, tiene el siguiente cdigo:
Ver -> function estado0(muestra,marcador);
- 87 -
Anexo 02
El siguiente paso del programa, fue realizarlo en una ventana de win32, compilndolo en forma de auto ejecutable, con el compilador de MatLab. La ventana quedo de la siguiente manera:
La compilacin, no ofrece problemas, hacindolo de la manera que se indica en el apartado del compilador de MatLab. Hacemos primero el programa en C++, y luego le aadimos las funcione desde MatLab, que necesitamos. Estas son, la funcin estadstica de la comparacin de poblaciones, y la funcin que nos determina el nmero de muestras a leer de un archivo de poblaciones:
Ver -> function emw=comparacion(Path,PathE,i,j); Ver -> function n=nummuestras(Path);
El ltimo paso en el programa, ser implementarlo como ventana grfica en MatLab, en la que podremos incluir, capacidades grficas, para poder dibujar las muestras que vamos a analizar, y las representaciones de las distribuciones normales tanto de las poblaciones representativas de cada estado, como de los vectores de las poblaciones a contrastar. La ventana final, nos queda de la siguiente manera:
- 88 -
Anexo 02
En ella podemos ver la evolucin de la mquina en los recuadros rojos, el tiempo que se ha tardado en completar el ciclo, el numero de muestras ledas, la muestra con la que comparamos; y obre todo, en ella podremos modificar el valor de alpha, para dar mayor o menor grado de confianza entre las muestras. Tambin tenemos un acceso a la grfica de las normales. En ella se dibuja la gausiana con los valores de las muestras que tenemos, para ver grficamente la posible evolucin.
- 89 -
Anexo 02
- 90 -
Anexo 03
- 91 -
Anexo 03
Registro: Que contiene, unos archivos de extensin .ema, y que son los registros de las sesiones en la herramienta. Ah se puede almacenar el estado de una pantalla, para tenerlo ah a la vuelta al trabajo. Pruebas: Que almacena las pruebas buenas para su posterior anlisis. Esta a su vez. Tiene otras tres carpetas, una para cada tipo de afeccin, y adems, asociado a cada prueba, existen unos archivos de extensin .edb, que permiten almacenar, como si fuese una base de datos, las caractersticas de la prueba. Estas podrn ser ledas en la herramienta del lobulizador, donde podremos partir la prueba en tramos para su estudio. Vectores: Que contiene otras tres carpetas con cada tipo de afeccin, en las que almacenaremos, las partes de cada una de las pruebas que vamos a estudiar. De estas carpetas, el programa ir tomando las muestras que le pasemos, por su nombre. Para cambiar la carpeta en la que buscar, nos tendremos que referir al cambio de directorio, algo que veremos ms adelante.
La introduccin, nos da el nombre del programa, que en MatLab, es el comando que hay que emplear para lanzarlo desde la consola: emg_analyzer. Una vez pasada la introduccin, nos aparece la primera ventana del programa. Esta contiene una serie de anlisis, y el acceso a las dems herramientas de la aplicacin. La forma de la sta es la siguiente:
- 92 -
Anexo 03
Primero observamos dos zonas de representacin. No slo se aportan valores numricos para su anlisis, sino que tambin, tiene capacidades grficas, que nos permiten ver apreciativamente, los resultados de los anlisis realizados. Lo primero que se hace, es introducir el nombre del tramo de seal que queramos analizar. En los archivos de muestras, se sigue una metodologa, eficaz para manejar todas las partes de una forma clara y precisa tanto para el programa, como para el usuario. La forma de codificar los archivos una vez partidos, ser: Primero las muestras generales, se codificarn como Prueba 1, Prueba 2 y los tramos de cada prueba, de la forma lbulo 11 o espacio 11, lbulo 12 o espacio 12 y as sucesivamente. Esto ahorrara tiempo y complicaciones, sobre todo sabiendo cual es cada prueba, y de que carpeta (tipo de afeccin) la estamos leyendo, pues MatLab, no plantea un mtodo de localizacin y apertura de archivos tan intuitiva como la de Windows. Las dos cosas ms importantes que se necesitan saber de cada prueba, para introducirlo en la herramienta, ser el nombre de sta, y la
- 93 -
Anexo 03
frecuencia a la que ha sido muestreada. Para ello, tendremos las dos casillas, la del nombre, y la inmediatamente inferior Frecuencia de Muestreo.
El botn debajo del nombre de la muestra, sirve para renovar la muestra, y cargarla al principio del todo. Esto, tenemos que saber, que crea un vector de datos, al que slo puede accedes el siguiente bloque de tratamiento de la seal; el bloque de filtrado. ste a su vez, crear otro registro de datos, con el que trabajaremos en etapas sucesivas, como puede ser el rectificado de la seal, la envolvente, o la transformada rpida de Fourier, que nos dar, el espectro de armnicos que componen la seal. El trabajar con vectores de datos encadenados y relacionados, nos da una cierta estabilidad en el mtodo de estudio, dndonos una constancia metodolgica en el tratamiento de las pruebas. De otra forma, se pueden perder pasos por el camino, de tal manera, que pueda haber errores de metodologa en el estudio.
- 94 -
Anexo 03
Una vez que se carga la grfica de una muestra, pasamos a la etapa, de filtrado de la seal, en la que bsicamente lo que se hace es quitar el nivel de continua aportado por el amplificador, y corregir el ruido que pueda aportar el ambiente, y los componentes influenciables del equipo de captura. Para evitar los problemas de precisin y clculo por parte de MatLab, se debe tener en cuenta el escalado de la seal, de tal manera que la amplificaremos en el caso de que los valores de sta sean muy pequeos, para que el cmputo sea menos forzado. Para ello, se tendrn tres niveles de escalado, que multiplicarn la seal, por 1, 1000 o 1000000, en funcin de los valores iniciales de tensin. Este factor, abajo a la derecha, deber estar marcado antes de la carga de la seal, para que sea aplicado correctamente, en el vector de datos de salida.
- 95 -
Anexo 03
Una vez se tenga la seal cargada y escalada, pasaremos al bloque de filtrado de la muestra. Para el nivel de continua del amplificador, se tiene una casilla, modificable por el usuario, que permite fijar el valor mnimo de frecuencia en Hz, por debajo de la cual no se van a tener en cuenta los armnicos. Este campo, este referenciado como Fc. El otro campo, Orden, deja introducir manualmente el orden del filtro que se va a aplicar. ste, ser un paso bajo, en el cual fijamos la frecuencia de corte inferior, siendo este el punto antes del cual se deja de tener armnicos significativos para nuestro estudio. En nuestro caso, la mejor configuracin del filtro, es el de un paso bajo, Butterworth, de orden 5, con frecuencia de corte inferior de 2 Hz. A continuacin, mediante el botn Seal Filtrada, se har actuar el filtrado sobre la muestra, alcanzando el prximo nivel de datos para el estudio, el cual se pasa a las herramientas siguientes.
- 96 -
Anexo 03
La siguiente herramienta que acta sobre la seal, es la rectificacin. Para poder trabajar con la seal, y poder obtener su envolvente, sta debe ser rectificada. Tendremos dos formas de rectificar: Rectificacin de Media Onda, en la que se eliminan los ciclos negativos de la seal, suprimiendo mediante un algoritmo de clculo, todo lo que est por debajo de cero. Este tipo de rectificacin, se usara en algunos clculos especiales, aunque en nuestro caso, tendremos suficiente con el segundo tipo de rectificado. Rectificacin de Doble Onda, en la que se aplica un algoritmo de valor absoluto, para hacer que los ciclos negativos de la seal, pasen a la parte positiva del eje de tiempos. Esta rectificacin, ser la que utilizaremos a lo largo de todos los anlisis que realicemos.
- 97 -
Anexo 03
Una vez que se tiene la seal rectificada, ya podremos calcular la envolvente, de la que a dems sacaremos la informacin adicional de rea encerrada debajo de esta, que en nuestro caso, hace referencia a la fuerza ejercida por el msculo. Para realizar la envolvente, se introduce a dems, la ventana de muestreo. Esta ventana sirve, para poder tomar un grupo de puntos sobre los que haremos la media. Esta media, la haremos sobre esa ventana, y sacaremos un valor. A continuacin desplazaremos la ventana una muestra, y tomaremos otro valor, haciendo la media de esos puntos, desplazados a la derecha una muestra, y as sucesivamente, hasta que lleguemos al final de toda la seal rectificada. La grfica resultante, se mostrar debajo y sobre la grfica principal, para hacernos una idea de los tamaos relativos de ambas. Para mayor claridad, se decidi hacer en color rojo.
- 98 -
Anexo 03
El segundo anlisis importante, ya dentro del trabajo relativo a los EMG, y posiblemente, el ms importante de todos, es la transformada rpida de Fourier. Esta transformada, lo que hace, es darnos los armnicos, en frecuencia y peso relativo, que integran la seal. Para ello, lo que tendremos que introducir, es la frecuencia mnima por encima de la cual, queremos que el programa nos de informacin. Esto se har en el mismo cuadro que la ventana de muestreo de la envolvente, y bsicamente, hace referencia a una ventana, de tamao, un nmero de muestras determinado, que se relacionan con la frecuencia mnima de informacin, debido a la frecuencia de muestreo. Adems en los ttulos de las grficas, se da una informacin adicional, consistente en la frecuencia del armnico principal (el de mayor peso), y de la amplitud relativa, que le hace ser el principal. En la grfica superior, tambin obtendremos el espectro de frecuencias, pero en este caso en dB, teniendo as una idea absoluta, del transcurso de la seal.
- 99 -
Anexo 03
Y uno de los datos, junto al armnico principal, ms importantes, que lo obtendremos en la misma casilla en la que obtuvimos la fuerza desarrollada por la envolvente, y que es la frecuencia media de la seal. Esta frecuencia media, se obtendr como una media ponderada, en la que no slo intervienen, las frecuencias de los armnicos, sino que adems, hacemos que intervengan los pesos de estos, de forma porcentual.
ste es un men, que iremos desglosando en los apartados sucesivos. Veremos tambin, que en las distintas herramientas, se repetirn elementos de este men, que por supuesto, tendrn funciones anlogas al de la ventana principal, y que por lo tanto, no valdr la pena mencionar. La estructura, es la siguiente: Archivo. Guardar Sesin. Cargar Sesin. Salvar Datos. Mostrar Datos. Salir. Edicin. Cambiar Directorio. Cambiar Extensin. Herramientas. Lobulizador.
- 100 -
Anexo 03
Anlisis Porcentual. Evolucin Temporal. FFT ESP Potencia. Diagnstico. Ayuda. Acerca de EMG Analyzer. A continuacin se har un breve resumen de cada una de sus partes, porque posteriormente hablaremos en profundidad de cada una de las herramientas importantes, hablando de ellas en un apartado propio.
10.5.1.-
10.5.2.-
10.5.3.-
- 101 -
Anexo 03
Cuando este operativo, nos permitir guardar el vector de datos actual, que podremos conservar en un archivo de texto, para pasarlo a cualquier otra herramienta. En principio, su funcionalidad, nos tendra que poder dar a elegir guardar, cualquiera de los datos que tengamos ese momento en pantalla (lo que quiere decir, que nos permitir guardar los datos de la grfica superior, o los datos de la grfica inferior). A dems, tambin tendramos que poder elegir el nombre para guardarlos, y el directorio de destino. As mismo, debera almacenar los datos adicionales, asociados a una grfica, ya sean sus caractersticas, o los clculos realizados sobre ella.
10.5.4.-
10.5.5.-
Archivo Salir.
Como cualquier salir de cualquier aplicacin bajo Windows, nos saca del programa, previa ventana de advertencia.
10.5.6.-
- 102 -
Anexo 03
Con l, podremos cambiar el origen de las pruebas, dndole al programa la informacin necesaria para cargarlas. Tiene un directorio predeterminado, que se recarga cada vez que abrimos la aplicacin, que en nuestro caso es: D:\Proyecto de Fin de Carrera\Caracterizacion de Electromiogramas\ EMG Analyzer Toolbox\ Vectores\ Parquinson\ Estas lneas, indican lo siguiente: la primera, nos da la direccin donde se encuentra la carpeta con la aplicacin, que en este caso, la proporciona MatLab. La segunda, es la carpeta donde estn todos los archivos y directorio de nuestra herramienta. La tercera, nos indica en que carpeta de muestras estamos. Podemos indicarle que sean las Pruebas, o los vectores, en funcin de lo que queramos analizar; y por ltimo la cuarta, hace referencia a la enfermedad, de la que supuestamente estamos sacando las pruebas, que puede ser Esencial, Parkinson o Sanos. En la mayora de los anlisis, lo nico que nos hace falta cambiar, es la carpeta de la enfermedad, por eso que se haya hecho de esta manera, para simplificar la operatividad.
10.5.7.-
- 103 -
Anexo 03
este proyecto, y diseada por mi compaero de laboratorio Martn, de tal manera, que no haya que pasarlos a cdigo ASCII, porque ocupan ms, y se leen ms lentamente.
De momento esta funcionalidad, la da una funcin creada en MatLab, especialmente para esto, y todos los archivos que se pasan a la herramienta, por necesidades del anlisis, son ASCII. La funcin llamada Bin_Reader.m, tiene el siguiente cdigo, y no solo genera el archivo ASCII, sino que tambin crea una grfica de los datos ledos, y te los muestra en la consola de MatLab, para comprobar su veracidad. function vector=Bin_Reader(archivo1,archivo2); file1=fopen(archivo1,'r'); file2=fopen(archivo2,'w'); i=0; fseek(file1,40,'bof'); vector=fread(file1,'float=>double'); fclose(file1); for i=1:length(vector); fprintf(file2,'%f\n',vector(i)); end; fclose(file2); t=(1:1:length(vector))/1000; plot(t,vector); zoom; Para ejecutarla, escribiremos en la consola de MatLab, la siguiente lnea de comandos:
- 104 -
Anexo 03
Bin_Reader(<Archivo de Origen>,<Archivo de Destino>) Escribiendo en los archivos, la ruta completa, incluida la extensin. Si no, se generara un error, y no se reconocer el archivo, no pudindose leer posteriormente.
10.5.8.-
Herramientas.
Las herramientas, se explicarn en profundidad en apartados posteriores, por lo que en este momento, se omitir su descripcin. Solo decir, que al igual que la ventana principal, tiene una funcionalidad dentro del anlisis de muestras, muy importante. Decir tambin, que el grupo no es cerrado, y que se puede ampliar con nuevas herramientas, y que a su vez las que hay, estn sujetas a mejoras, actualizaciones, o expansiones.
10.5.9.-
Diagnosis.
En principio, la funcin de este control, de momento, en proceso de creacin, es la del diagnstico aproximado de la enfermedad. Hasta que las caractersticas de la enfermedad no estn fijadas y comprobadas con las dems herramientas, este control quedara inactivo. Su misin, ser la de sustituir a Excel, haciendo el solito todo los clculos y comprobaciones de las caractersticas sobre una seal cualquiera, de tal manera que al final, pueda decirnos aproximadamente, y siempre bajo la tutela de un experto, que posible enfermedad o no, sufre el propietario de la prueba realizada. De momento, y hasta mucho ms adelante, no se podr escribir su cdigo, debido a la falta de recursos actuales.
10.5.10.- Ayuda.
La ayuda, ser cuando este habilitada, una herramienta esencial de nuestro programa. Bsicamente, lo que tendr, ser el contenido de esta memoria de forma electrnica, para que en cualquier momento se pueda consultar, para resolver dudas sobre los EMG, o el funcionamiento de la herramienta de anlisis; y por supuesto, el famoso Acerca de EMG Analyzer, donde el autor, se ha permitido un momento de vanidad.
- 105 -
Anexo 03
10.6.- El Lobulizador.
Es una herramienta que nos permite crear una base de datos con las seales que se guardan de forma permanente para su estudio, en las carpetas de la herramienta de trabajo de la toolbox de anlisis. Adems, nos permite obtener tramos de seal sueltos, que en un momento dado se necesitarn para el anlisis, por medio de su delimitacin a travs de valores de tiempo. La interfaz de usuario, tiene la siguiente forma:
Para cargar las seales, se tendr que tener en cuenta, que el directorio predeterminado, apunta al archivo de pruebas, y no de vectores, de los enfermos de parkinson. Para ver otras pruebas, se tendr que cambiar esta opcin en el men edicin, cambiar directorio lectura; as como cuando se almacenan los tramos de las pruebas, tendremos que elegir la ubicacin de donde lo queremos hacer, con el men edicin, cambiar directorio escritura. Para ello, se cuenta con las herramientas cuyas interfaces son las siguientes:
- 106 -
Anexo 03
Teniendo en cuenta, que el directorio predeterminado de esta segunda, es el mismo del de la primera, pero en la carpeta de vectores, que hace referencia a los trozos de la seal correspondientes. Una vez que tengamos el directorio de las pruebas que queremos preparar, lo que tendremos que hacer es escribir el nombre de la prueba, y cargarla, para poder trabajar con ella. Para ello, usaremos los recuadros de texto, y los controles, que tenemos en la imagen, remarcados. En ellos, no slo pondremos la prueba, sino tambin muy importante, la frecuencia de muestreo, para que la lnea de tiempos se corresponda con la realidad. Esto es muy importante, porque para cortar la seal, tendremos que basarnos en el tiempo de inicio de la muestra a extraer, y el tiempo de finalizacin. De no hacerlo, al pasar a otras herramientas, tendramos incompatibilidades en el estudio de las frecuencias que componen la seal.
- 107 -
Anexo 03
Otra parte importante de la interfaz, es la base de datos, de las caractersticas de cada prueba cargada. El archivo asociado a cada prueba, anteriormente mencionado, contiene, las caractersticas de esta, que posteriormente, se mostraran en los campos de la interfaz. Estos campos sern los siguientes: Prueba Original: Que guardar, el nombre identificador de cada prueba, tal y como queda guardado por el programa de captura. Datos del Paciente: Identificado sencillamente como Paciente, entre los que tendremos los siguientes campos. Nombre. Primer Apellido. Segundo Apellido. Edad. Fecha. Fecha de la Operacin. Caractersticas Mdicas. Caractersticas de la Prueba. Estos campos, se ven remarcados en la siguiente imagen, para mayor claridad de la explicacin:
- 108 -
Anexo 03
Todos estos campos pueden ser modificados, mientras la interfaz este abierta. Lo nico que hay que hacer, es escribir sobre ellos, modificando los datos actuales, y accionar el control actualizar. Tendremos que tener en cuenta a la hora de escribir o modificar, que los cuadros de texto, no admiten INTROS, y hay que escribir la informacin toda seguida en la misma lnea. En caso contrario, la interpretacin del texto, puede dar resultados no deseados.
- 109 -
Anexo 03
Una vez que la grfica esta cargada, y documentada, pasaremos a partirla en tantos tramos como necesitemos. Para ello, utilizaremos los controles del partidor. Estos nos permitirn marcar los tiempos de inicio y fin del cacho de seal, almacenar este temporalmente en un vector en la memoria, darle un nombre y finalmente, almacenarlo en un archivo ASCII, que posteriormente pasaremos a las herramientas de anlisis. Los pasos de este proceso, los reflejaremos en la siguiente imagen:
Y el resultado, quedar de la siguiente manera. Tendremos la seal original en azul, y el cacho cortado en rojo, para que nos hagamos una idea visual del resultado de nuestra operacin; y como normalmente, los trozos extrados van contiguos, se ha habilitado el pequeo control azul, que lo que hace es cambiar el limite de tiempo superior, y pasarlo a la casilla de lmite de tiempo inferior. Entonces, ya solo nos quedar marcar, el lmite superior del siguiente trozo a almacenar.
- 110 -
Anexo 03
As, podremos tener todos los trozos que necesitemos de la seal, y al final, continuar con el anlisis, y la siguiente herramienta. Antes de terminar con el lobulizador, mencionar, que tambin existen dos controles que nos dan acceso, al almacenamiento y la carga de la sesin de trabajo, as como al cierre de la ventana.
- 111 -
Anexo 03
En ella destaca, la zona de representacin grfica, la zona de introduccin de muestras, y los controles de caractersticas de la seal.
- 112 -
Anexo 03
En la zona grfica, lo que se ver ser el resultado del anlisis. ste, se hace sobre los lbulos y los espacios de una misma seal, por separado; menos un algoritmo, que opera con los datos relacionados. En la zona de carga de pruebas, tendremos la posibilidad de estudiar, diez partes de la seal en conjunto, tamao de muestras, que hoy por hoy se ha considerado suficiente. Lo nico que tendremos que hacer, ser direccionar el archivo de lectura de pruebas, que por defecto esta en enfermos de parkinson, y poner los nombres de estas, que si se ha seguido la mecnica del lobulizador, sern consecutivos. Las caractersticas de las pruebas, sern como en otras ocasiones, la frecuencia de muestreo, la frecuencia mnima de informacin para las ventanas de anlisis que recorren las muestras, la frecuencia de corte, para el filtrado previo de las seales, ya que se almacenan desde le lobulizador, tal cual salen de la herramienta de captura, y el escalado de la seal, para que esta tenga dimensione suficiente, como para que los algoritmos de calculo, no tengan problemas para procesarla. Activaremos el anlisis con la opcin dibujar, y el resultado en pantalla, ser de la siguiente manera:
- 113 -
Anexo 03
A continuacin expondremos, el anlisis de las grficas generadas por la herramienta de anlisis: Grfica Azul. La grfica azul, nos representa la fuerza desarrollada en el msculo durante lo que sera el periodo de actividad de este. La referencia se toma en porcentaje, y el primer lbulo, representara el 100%, de la fuerza desarrollada por la actividad. A continuacin, el siguiente lbulo, ira en porcentaje relativo al primer lbulo, por lo que a lo largo de la seal, podemos ir viendo, el aumento o disminucin de la fuerza en la actividad. Grfica Roja. Al contrario que la grfica roja, lo anteriormente explicado, se hara sobre los espacios interlobulares, lo que seran, los periodos de inactividad del msculo; aunque el concepto de funcionamiento, sera anlogo al anterior. Grfica Lila. En esta grfica, ya nos metemos con frecuencias medias de cada uno de los espacios interlobulares. Al igual que con la fuerza, el primer espacio, se asimila al 100%. Y el las muestras sucesivas, se ve la evolucin del valor, a lo largo de la seal. Grfica Negra. Anloga a la anterior, pero en este caso, con los lbulos de la seal. Aunque se vea en el 50%, no tiene nada que ver, lo que pasa es que por motivos de claridad en la visualizacin, se desplazan esas dos grficas hacia abajo, para que no se monten en las grficas de la fuerza. Grfica Verde. Esta grfica, hace una referencia comparativa entre la fuerza de los lbulos, y la de los espacios. Nos dice, que porcentaje de fuerza representa el espacio interlobular X, con respecto al lbulo que le precede. Este anlisis, nos da una caracterstica directa, de las seales, que se puede usar en las conclusiones del proyecto.
- 114 -
Anexo 03
En ella observamos cuatro campos con capacidades grficas, y una serie de controles de acondicionamiento de la seal, de ejecucin y de control.
- 115 -
Anexo 03
Como en las anteriores, una vez que introduzcamos el nombre de la seal a estudiar, la frecuencia de muestreo de esta, y la correccin del escalado, pasaremos a los campos de frecuencia mnima de informacin, y de frecuencia de corte del filtro que vamos a aplicar, que en este ceso ser de orden 5, sin posibilidades de modificacin. Cuando tengamos todo relleno, con el control Dibujar, podremos exponer el resultado del anlisis. Tendremos que tener en cuenta, que para poder obtener la prueba, tendremos que direccional el directorio que la contiene, como en casos anteriores, con el comando del men Edicin, Cambiar Directorio. El resultado del anlisis, quedar de la siguiente manera:
- 116 -
Anexo 03
Las lneas rojas dentro de algunas ventanas de la seal, nos marcan el valor de la frecuencia mnima de informacin marcado por nosotros. Empezando por arriba y de izquierda a derecha, tendremos, en primer lugar, la grfica de la evolucin de la fuerza media en la seal. En ella, la ventana de muestreo, toma un trozo de la seal, el cual se analiza, calculando la fuerza media en ella desarrollada. El resultado es un valor positivo, que se representa en la grfica. Esa ventana de muestreo, representa un anlisis continuo a lo largo del tiempo en el que se desarrolla la seal, y cada uno de los valores representados por barras, representa el resultado de una de las X ventanas de muestreo. El nmero de barras representadas, hace referencia, al nmero de ventanas de muestreo creadas, y esto a su vez, a la frecuencia mnima de informacin proporcionada. La siguiente ventana, hace referencia a la frecuencia media. En sta, lo que haremos, ser aplicar el algoritmo de la media ponderada, aplicado para la primera interfaz de la herramienta, en cada una de las ventanas de muestreo generadas sobre la muestra.
- 117 -
Anexo 03
Como antes con la fuerza, obtendremos un valor, que representaremos por una barra, y a su vez habr tantas barras como ventanas de muestreo se hayan generado en funcin de la frecuencia mnima de informacin. Inmediatamente debajo, tendremos un anlisis similar, pero que en vez de tomar la media ponderada de la frecuencia, toma el valor mximo de frecuencias que haya dentro de ella (lo que denominamos, el armnico principal). Finalmente, a su izquierda, tendremos una grfica comparativa, representada con circulitos (o nube de puntos) para cada valor representado. En sta, podremos ver la diferencia sustancial existente entre la media ponderada de la frecuencia, y el armnico principal en una ventana de muestreo cualquiera. Adems de todo esto, en dos de las grficas tendremos unos resultados apreciativos, referentes a la media geomtrica de todos los puntos de la grfica. Aparecen en el ttulo de stas, y no contiene nada ms que un valor orientativo.
- 118 -
Anexo 03
En ella, tendremos como en casos anteriores, una zona grfica donde mostraremos el resultado, y una serie de controles, que nos permitirn acondicionar la seal, y cambiar los parmetros esenciales del anlisis. Entre ellos, encontramos la referencia al nombre y al directorio de origen de la muestra a analizar, la frecuencia de muestreo, la frecuencia mnima de informacin y la frecuencia de corte del filtro que aplicaremos para los niveles de continua, y el ruido proporcionado por el propio hardware del equipo. As mismo, encontramos los campos necesarios para rectificar el escalado de la seal, para amplificarla en amplitud.
Una vez que esto lo tengamos perfectamente cumplimentado, tendremos dos elementos de control, que estudiaremos a parte por su funcionamiento particular.
- 119 -
Anexo 03
Estos elementos, tienen como funcin, determinar el tipo de espectro de potencia, que se realizar en el anlisis. Podremos elegir entre dos: el periodograma, o el espectro proporcionado por el Mtodo Welch. La similitud, es grande, pero a la hora de representar se aprecian diferencias, que dependern del estudio, que usemos un mtodo u otro. Periodograma.
Mtodo Welch.
- 120 -
Anexo 03
Estos dos estudios nos permiten hacernos una idea, de la distribucin de la informacin dentro de la seal. Cuanto ms parecido sea el espectro de potencia, a la FFT (a la derecha de ste), ms correctos son los resultados de la FFT, y ms nos podremos fiar de estarlo haciendo bien.
- 121 -
Anexo 04
- 122 -
Anexo 04
Lo primero de todo que hemos tenido que hacer, ha sido, insertar tres botones en la aplicacin general [Aprenda Visual C++ en 21 Das], que llamasen a nuestras funciones, representadas por tres ventanas de dilogo. Estas tres funciones son: el conversor de binario a archivos de texto, el analizador, propiamente dicho y la ventana de captura creada por mi antecesor. Estos tres botones, se encuentran en los siguientes lugares, de la ventana principal de la aplicacin.
Y adems, tienen su replica en los comandos del men. Como la realizacin del cdigo viene al final, en el anexo 6, y all se explica todo lo que se ha hecho para hacerlo funcionar, trataremos en estos captulos de explicar el funcionamiento, y los datos obtenidos a travs de la herramienta.
- 123 -
Anexo 04
En l, lo nico que aparece, son las casillas para los nombres de los archivos que se van a tratar, y un espacio reservado para indicarnos el nmero de muestras totales, que se han ledo en el archivo binario, y se han pasado al archivo de texto (nmero de muestras de la seal capturada). Esto no slo nos sirve para trabajar con nuestra herramienta, sino que tambin nos permite exportar nuestras seales a otros programas como pueda ser MatLab, con el que tambin trabajamos, en el campo del anlisis y la identificacin.
Una vez que sealamos el archivo de origen de nuestros datos, y el archivo de destino, lo nico que tendremos que hacer es dar al botn de convertir. Lo bueno que tiene esta herramienta, es que no trabaja nicamente con el vector cargado en pantalla, sino que es independiente de ste, pudindola usar con cualquier archivo que deseemos.
- 124 -
Anexo 04
En ella, encontramos una serie de zonas de inters que pasamos a comentar. La primera de todas, es la de intervencin directa del usuario. En ella, entre otras cosas, se encuentra la zona para la carga de la prueba, y las casillas, para introducir los datos relativos a esta.
- 125 -
Anexo 04
En esta zona, podemos encontrar los siguientes campos: Seleccionar Archivo: es un botn que nos da acceso a cargar la prueba que deseemos. sta, estar en formato binario, y ya se ha programado convenientemente la ventana de apertura, para que la lectura de archivos, filtre para mostrar el formato .b. Umbral [Fuerza Reposo]: el umbral fuerza reposo lo utilizamos para poder separar las zonas de actividad de la seal, de las zonas de inactividad. Este umbral lo que hace es tomar un porcentaje indicado en tanto por uno, de la diferencia que existe entre el mximo de la seal, y el mnimo de la seal, una vez que quitamos la componente de continua. Tendremos que estimar este valor, en funcin de la seal generada en reposo por el paciente, en relacin a las zonas de actividad de ste. Tipo de Anlisis: aqu podremos determinar que prueba de las dos queremos hacer: o la prueba serie, o la prueba en paralelo, mediante el resaltado de los radio buttons.
- 126 -
Anexo 04
La segunda zona, nos aporta informacin sobre la seal que estamos estudiando. Tendremos que tener en cuenta, que en la cabecera del archivo binario que capturamos mediante la herramienta, se encuentran una serie de datos, que nos dan los valores de las condiciones de captura, como puedan ser, el nmero de muestras capturadas, o la frecuencia de muestreo a la que hemos registrado la seal.
Muestras: nos indica el nmero total de muestras que tiene la prueba. Este es un dato que tomaremos de la cabecera del archivo binario, y que nos servir para los lmites de lectura de las muestras, en los bules del programa. A dems, este dato, nos servir para poder calcular, el nmero de puntos necesarios para la ventana de muestreo de la envolvente, siendo stos, la centsima parte del nmero de muestras totales. Puntos de Actividad: es el nmero de puntos de la seal, que corresponden a la actividad muscular del paciente.
- 127 -
Anexo 04
Puntos de Reposo: es el nmero de puntos de la seal, que corresponden al reposo muscular del paciente. Comparando este nmero, con el obtenido en el apartado anterior, podremos ver la rigidez o no del paciente, en funcin de que sea ms o menos elevado el nmero de puntos de la actividad frente al reposo, en tiempos de movimientos simtricos. La tercera zona, es la zona donde aparecen los resultados del estudio en frecuencias. Aparecen una serie de resultados, por filas, relativos a cada uno de los patrones de frecuencias observados.
Las patologas reconocidas, se marcarn con una X, y siempre de acuerdo a dos niveles de precisin. La prueba ser ms acertada, si las casillas marcadas son S1 para sanos y E1 para enfermos. Para la prueba en paralelo, adems, existen otras dos casillas debajo, que nos indican los porcentajes de enfermedad o salud del paciente, en funcin de las cuatro caractersticas a la vez.
- 128 -
Anexo 04
Por ltimo, una lnea de estado, nos dar el diagnstico por escrito, por supuesto, siempre bajo supervisin mdica.
- 129 -
Bibliografa
Bibliografa.
[Funcionamiento de la Herramienta de Visualizacin] Memoria del proyecto de D. Fernando Parias Talavera, relativa a la interfaz de visualizacin y de integracin de nuevas herramientas. [Adquisicin de la Seal de Electromiograma] Memoria del proyecto de D. Jos Martn Gonzlez Garca, relativa a la interfaz de captura de seales a travs de la tarjeta de adquisicin montada en el PC. [Tutorial de MatLab, R13] Tutorial electrnico de MatLab, contenido en el paquete del programa de la versin R13, compuesto por un disco de contenidos de ayuda, integrado en la consola de MatLab, y un disco de contenidos en PDF, referentes a toda la ayuda electrnica. [Ayuda de Visual C++, v6] Ayuda electrnica de la herramienta de programacin Visual C++, de la versin comercial 6.0. [Estadstica Aplicada] Estadstica Aplicada. Universidad Nacional de Colombia. Sede en Medelln. (N. GUARN S.). [Estadstica para Ingenieros] [J. C. Miller y J. N. Millar. ETS QUIM] Estadstica para Qumica Analtica. Segunda Edicin. (J. C. Miller y J. N. Miller - Addison-Wesley Iberoamericana -). [Aprenda Visual C++ en 21 Das] Sams Teach Yourself Visual C++ 6 in 21 Days. Davis Chapman. A division of McMillan Computer Publishing (USA). [Artculos Diversos Sobre los Modelos de Markov] Artculos recogidos de Internet, con definiciones y ejemplos de utilizacin [Markov 01]. [Markov 02]. [Markov 03]
- 130 -