Matlab - Cómo implementar de forma correcta un ciclo for

 
Vista:
sin imagen de perfil

Cómo implementar de forma correcta un ciclo for

Publicado por Angie López Castaño (2 intervenciones) el 14/06/2017 05:29:26
Buenas noches, es la primera vez que participo aquí y lo hago porque he aprendido mucho de las respuestas que se han dado a muchas de las preguntas que por aquí se plantean. Mi duda o mis dudas es que estoy tratando de implementar un código para el tratamiento de ciertos volúmenes médicos de 30 pacientes sanos, por ahora estoy sólo con cinco pacientes porque es mucho el tiempo de procesamiento y estoy preocupada por el consumo de memoria ya que creo que estoy haciendo las cosas de forma muy larga. Implementé un ciclo for para los cinco pacientes y lo estoy haciendo con los condicionales if y elseif. Es decir, if i==1 se correrá en Matlab uno de los volúmenes con todo el procesamiento que hay detrás, el problema es que debo hacer esto para cada uno y pienso que tal vez hay una forma más rápida de hacerlo o hay una forma mejor de utilizar el ciclo for, debido a que lo único que cambia para cada paciente es el volumen de datos.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
%% Procedimiento - Cinco pacientes sanos - Formato NIfTI
 for i=1:5
%% Volúmenes reales - Formato NIfTI
if i==1
    %CARGO EL VOLUMEN DEL PACIENTE SANO # 1
    nii1= load_untouch_nii('IXI016-Guys-0697-IXI3DMPRAG_-s231_-0301-00003-000001-01.nii');
    V=nii1.img; %---> Este ya es el volumen como tal (211x187x211)
    e=10; %--->Umbral para detectar bordes
    umb=20; %--->Umbral para determinar que voxeles si me sirven o no
    [f, c, s] = size(V);
    [Gx, Gy, Gz, G_norm, G_Norm, Vol] = HistGradiente(V); %---> Función para obtener la magnitud del gradiente
    [H_Vol, L_Vol, Th] = TF_LHhistA(V,Gx,Gy,Gz, G_norm, e, umb); %-->Función para obtener el histograma LH
    % Se utiliza la función hist3 para construir el histograma bidimensional LH
    % con el valor de intensidad alto y bajo
 
    %---> Histograma LH
    LH_hist1 = hist3([H_Vol, L_Vol],[256,256]);
    V = single(V);
    G_Norm=double(reshape(G_norm, f*c*s, 1));
    Vol=double(reshape(V, f*c*s, 1));
    %--->Histograma - Gradiente 
    TF2D_hist1 = hist3([G_Norm, Vol], [256,256]);
 
    %% --->Guardar los datos para cada paciente para luego visualizarlos
    save('LH_hist1');
    save('TF2D_hist1');
    clear
end

Como ven esto es sólo para el paciente uno, y debo hacerlo para treinta pacientes en total, aunque por ahora sólo empezaré con cinco. Espero obtener un poco de ayuda :) Muchas gracias!
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
sin imagen de perfil

Cómo implementar de forma correcta un ciclo for

Publicado por Angie (2 intervenciones) el 14/06/2017 18:44:46
Ah bueno si, no caí en cuenta de eso, mil disculpas. En el siguiente archivo adjunto las dos funciones utilizadas en el código y el archivo correspondiente al volumen y el lector para poder leer formato nifti en Matlab. Muchas gracias :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar