Matlab - CÓMO LEER STRING DE UN *.TXT

 
Vista:
sin imagen de perfil

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
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
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

CÓMO LEER STRING DE UN *.TXT

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 26/07/2013 16:37:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
>> importacion_datos_jose4
Archivo seleccionado: J:\Users\jeremias\Downloads\importacion_datos_jose4.txt
 
MATRIZ =
 
         0         0         0         0         0         0         0         0
    0.5400         0         0    0.3697         0         0         0         0
    1.0800         0         0   57.2821         0         0    2.2620    1.6050
    1.6200         0         0   56.6887         0         0    6.8668    6.1229
    2.1600         0         0   43.4159         0         0    2.3556    2.2279
    2.7000         0         0   35.9801         0         0    0.0374    0.2132
    3.2400         0         0   26.8952         0         0    2.0778    1.4846
    3.7800         0    0.0056   18.8318         0         0    1.6551    3.0116
    4.3200         0    0.4704   11.5703         0         0    0.0010    0.6307
    4.8600         0    1.0308    8.6638         0         0    0.7970    1.4885
    5.4000         0    1.3335   11.4282         0         0    1.6295    2.6859
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
sin imagen de perfil

CÓMO LEER STRING DE UN *.TXT

Publicado por ger (24 intervenciones) el 29/07/2013 13:41:19
Hola José, me parece que no puedo ver tu rta completa... escribiste algo más antes de MATRIZ o simplemente ejecutaste el código mío y te dio eso? Porque a mi incluso me tira error...
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
sin imagen de perfil

ESCRIBIR MATRIZ EN UN *.TXT

Publicado por ger (24 intervenciones) el 03/11/2013 21:24:50
Hola José, a ver si vos se te ocurre como solucionar esto.
Primero te pego la función que escribí y luego te hago la pregunta.

function abrir_Callback(hObject, eventdata, handles)
%La función abre el *.XYZ
[matrix,filas,columnas,ID] = import_divergencia;
for i = 1:1000 %filas OJO me revienta la memoria!!! 19750 filas
matrix.data(i,3) = 50 - matrix.data(i,3);
end;
%Genera un nuevo archivo y carga toda la información en la variable columna
fid = fopen('prueba.XYZ','w');
columna = textscan(ID, '%s', 'delimiter', '\n'); %Primera columnna
%Escribe el encabezado
for i = 1:6
linea = columna{1,1}(i);
texto = linea{1,1};
fprintf(fid,'%s \n',texto);
end;
%Agrega la matriz de valores
dlmwrite('prueba.XYZ',matrix.data,'-append','roffset', 0,'delimiter','\t');
fclose(fid);

La función import_divergencia lee unos archivos *.XYZ y rescata la matriz de valores, el encabezado etc, etc... el objetivo del programa es procesar esa matriz de números, así que genero un nuevo archivo y escribo los nuevos valores en el archivo prueba.XYZ. Como tiene un encabezado, lo agrego primero y después los valores propiamente dicho con la función dlmwrite.
Todo parece andar bien, pero al abrir el archivo no va a nueva línea cuando termina de escribir el primer renglón. O sea todos los valores quedan separados por el TAB, no me quedan las filas de matriz ni las columnas... Lo extraño es que cuando abro el archivo desde el Curren Folder de MATLAB queda todo perfecto. Se te ocurre por qué esto? cómo podría solucionarlo?
Gracias,
Ger.-
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