
CÓMO LEER STRING DE UN *.TXT
Publicado por ger (24 intervenciones) el 26/07/2013 14:47:37
Hola a todos, tengo el siguiente problema. Estoy haciendo una GUIDE que tiene más que un botón con el tag DVH, el callback es el que sigue:
function DVH_Callback(hObject, eventdata, handles)
[filename, pathname] = uigetfile('*.DVH', 'Seleccionar un DVH');
if isequal(filename,0)
disp('selección cancelada')
else
disp(['Archivo seleccionado: ', fullfile(pathname, filename)])
end;
fileID = fopen(filename);
tline = fgets(fileID);
i = 1;
while ischar(tline)
disp(tline)
tline = fgets(fileID);
if ~ischar(tline),
break;
end;
j = 1;
elemento = tline(j);
while ischar(elemento)
MATRIZ(j,:) = elemento;
j = j + 1;
elemento = tline(j);
end;
i = i+1;
end
MATRIZ = MATRIZ';
display(MATRIZ);
fclose(fileID);
El problema es que no se cómo discriminar cada cada string y guardarlo como un elemento único en mi matriz llamada MATRIZ.Para complicar el asunto un poco más el *.txt tiene un encabezado que lo tendría que saltear pero si logro al menos armar la matriz ya sería un gran adelanto para mi.
Después me las arreglo más fácil. El *.txt es el siguiente (las columnas de nros siguen, son bastante largas):
"CAT3D - Dose Volume Histogram"
"Patient name" "fulano"
"Plan name" "fulano_ETAPA1"
"ROI volume in ml"
"Type" "differential"
"Prescription isodose" 100.000000
"Prescription dose" 54.000000
"dose " "PROSTATA" "RO RECTO" "RO VEJIGA" "VESICULAS" "CTV" "RO CADERA DER" "RO CADERA IZQ"
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.540000 0.000000 0.000000 0.369724 0.000000 0.000000 0.000000 0.000000
1.080000 0.000000 0.000000 57.282086 0.000000 0.000000 2.261992 1.605000
1.620000 0.000000 0.000000 56.688714 0.000000 0.000000 6.866762 6.122888
2.160000 0.000000 0.000000 43.415913 0.000000 0.000000 2.355585 2.227851
2.700000 0.000000 0.000000 35.980121 0.000000 0.000000 0.037437 0.213210
3.240000 0.000000 0.000000 26.895179 0.000000 0.000000 2.077762 1.484576
3.780000 0.000000 0.005623 18.831763 0.000000 0.000000 1.655116 3.011596
4.320000 0.000000 0.470420 11.570256 0.000000 0.000000 0.000985 0.630747
4.860000 0.000000 1.030800 8.663840 0.000000 0.000000 0.797017 1.488524
5.400000 0.000000 1.333480 11.428209 0.000000 0.000000 1.629501 2.685858
function DVH_Callback(hObject, eventdata, handles)
[filename, pathname] = uigetfile('*.DVH', 'Seleccionar un DVH');
if isequal(filename,0)
disp('selección cancelada')
else
disp(['Archivo seleccionado: ', fullfile(pathname, filename)])
end;
fileID = fopen(filename);
tline = fgets(fileID);
i = 1;
while ischar(tline)
disp(tline)
tline = fgets(fileID);
if ~ischar(tline),
break;
end;
j = 1;
elemento = tline(j);
while ischar(elemento)
MATRIZ(j,:) = elemento;
j = j + 1;
elemento = tline(j);
end;
i = i+1;
end
MATRIZ = MATRIZ';
display(MATRIZ);
fclose(fileID);
El problema es que no se cómo discriminar cada cada string y guardarlo como un elemento único en mi matriz llamada MATRIZ.Para complicar el asunto un poco más el *.txt tiene un encabezado que lo tendría que saltear pero si logro al menos armar la matriz ya sería un gran adelanto para mi.
Después me las arreglo más fácil. El *.txt es el siguiente (las columnas de nros siguen, son bastante largas):
"CAT3D - Dose Volume Histogram"
"Patient name" "fulano"
"Plan name" "fulano_ETAPA1"
"ROI volume in ml"
"Type" "differential"
"Prescription isodose" 100.000000
"Prescription dose" 54.000000
"dose " "PROSTATA" "RO RECTO" "RO VEJIGA" "VESICULAS" "CTV" "RO CADERA DER" "RO CADERA IZQ"
0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.540000 0.000000 0.000000 0.369724 0.000000 0.000000 0.000000 0.000000
1.080000 0.000000 0.000000 57.282086 0.000000 0.000000 2.261992 1.605000
1.620000 0.000000 0.000000 56.688714 0.000000 0.000000 6.866762 6.122888
2.160000 0.000000 0.000000 43.415913 0.000000 0.000000 2.355585 2.227851
2.700000 0.000000 0.000000 35.980121 0.000000 0.000000 0.037437 0.213210
3.240000 0.000000 0.000000 26.895179 0.000000 0.000000 2.077762 1.484576
3.780000 0.000000 0.005623 18.831763 0.000000 0.000000 1.655116 3.011596
4.320000 0.000000 0.470420 11.570256 0.000000 0.000000 0.000985 0.630747
4.860000 0.000000 1.030800 8.663840 0.000000 0.000000 0.797017 1.488524
5.400000 0.000000 1.333480 11.428209 0.000000 0.000000 1.629501 2.685858
Valora esta pregunta


0