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.
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!
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
0