Matlab - Recorrer campos de una estructura

 
Vista:
sin imagen de perfil

Recorrer campos de una estructura

Publicado por Ignacio (26 intervenciones) el 07/04/2014 09:09:30
Estoy haciendo mi proyecto con Matlab. Estoy atascado y he buscado ayuda en profesores y foros y por el momento llevo igual durante una semana. Estoy haciendo un programa que procese los datos de una señal de electromeografía. Esa señal consta de intervalos propios de la actividad y descansos entre uno y otro. Quiero separarlos. Para ello he hecho lo siguiente:




NumCiclos=0;
for k=2:2:length(Datos.markers)-1

eval(sprintf(' Ciclos.Ciclo%d= Datos.datablock1.data(Datos.markers(k)*10:(Datos.markers(k+1)*10)-1,:) ', k));
NumCiclos=NumCiclos+1;
end
if k==length(Datos.markers)-1
if mod(k+1,2)==0
eval(sprintf(' Ciclos.Ciclo%d= Datos.datablock1.data(Datos.markers(k+1)*10:end,:) ', k+1));
NumCiclos=NumCiclos+1;
end
end

k va de dos en dos para evitar los tramos de descanso
Datos.markers son marcas de donde empiezan los intervalos
Datos.datablock1.data Tiene los valores de la señal en microvoltios. Es una matriz de entre 1 y 16 columnas
Con Ciclos.Ciclo%d creo una estructura cuyos campos son los ciclos de interés
NumCiclos va guardando el número de ciclos que se van creando
El if es para que cree el último ciclo donde no hay marcas después, sino no creaba el último ciclo o daba error.

Mi estructura Ciclos consta de un numero variable de campos dependiendo de la señal. Cada campo Ciclos.Ciclo%d puede tener una longitud distinta, desde una sola fila hasta... el fin de los tiempos, con sus correspondientes columnas.

Mi problema es que ahora me gustaría sacar la media de cada ciclo (de cada Ciclos.Ciclo%d ) pero no se como recorrer la estructura Ciclos para entrar en cada campo. Después sacaría la media de todas las medias.

Me gustaría saber si hay alguna forma de recorrer los campos de una estructura de forma automática tal y como las creo con el bucle for anterior.

Estoy algo desesperado buscando ayuda y alternativas sobre como hacerlo. Toda información será de agradecer. Agradezco de antemano vuestra ayuda

Muchas Gracias por vuestro tiempo. Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder