Lectura de un archivo de texto y trazado en 3D
Frecuentes
Visto 1,139 veces
0
Quiero leer en un archivo de texto que contiene algunas cadenas pero principalmente números. Quiero poder ignorar las cadenas y solo mirar los números. Quiero trazar esos valores en un plano 3D. Los datos se ven así:
Tech4:<152.266724,173.189377,27.995975>
<117.880638,156.116531,27.999983>
<129.849899,59.195660,27.999983>
<249.321121,60.605404,27.999983>
<224.120361,139.072739,28.000668>
<171.188950,143.490921,56.933430>
<171.188950,143.490921,83.548088>
<171.188950,143.490921,27.999985>
Creo que leer en un archivo es solo:
File = textread('testFile.txt');
¿Cómo puedo solo mirar esos valores y luego trazarlos?
¡Gracias!
2 Respuestas
1
fid = fopen([pathname,filename]);
tline = fgetl(fid);
CX = [];
CY = [];
CZ = [];
while ischar(tline)
% skip < and >
tline = substr(tline, 1, length(tline)-2)
% extract numbers
temp = textscan(tline,'%n%n%n', 'delimiter',',');
CX(end+1,:) = [temp(1)];
CY(end+1,:) = [temp(2)];
CZ(end+1,:) = [temp(3)];
tline = fgetl(fid);
end
fclose(fid);
y luego trazarlo usando plot3 (CX, CY, CZ)
Llamada de función.
Sin embargo, agregue el cheque para "Tech4:" al principio ...
contestado el 22 de mayo de 12 a las 21:05
1
Creo que también puedes usar directamente escaneo de textos en una sola línea:
fid = fopen('archivo de prueba.txt');
data = textscan(fid,'%*s%f,%f,%f');
fclose (fid);
esto carga los valores de todas las filas con el formato especificado en la variable data
. Sin embargo, no hay matlab para probarlo.
fscanf es una opción para, el mismo tipo de parámetros que textscan.
EDITAR: error tipográfico, desea detectar flotantes (%f) por supuesto, y no enteros (%d)
EDIT2: obtuve matlab y lo probé, esto funciona aquí para su entrada de muestra ^^
fid = fopen('testFile.txt');
data = textscan(fid,'%*s%f%f%f','Delimiter',',<>')
fclose(fid);
contestado el 23 de mayo de 12 a las 09:05
Cuando uso fid = fopen([nombre de ruta, nombre de archivo]), ¿qué pongo para nombre de ruta para decir algo que está en c:/Archivos de programa (x86)/Bloc de notas++/fileTest.txt? - andré a
Solo usa fid = fopen('c:/Program Files(x86)/Notepad++/fileTest.txt');
- Günther Struyf
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas matlab 3d or haz tu propia pregunta.
qué está haciendo la temperatura ('%n%n%n', 'delimiter',',') - andré a
temp es una matriz con un valor triple extraído de una cadena en formato N,N,N. Es como sscanf(tline, "%f,%f,%f", &temp[0], &temp[1], temp[2]) en C. - Viktor Latipov
Está diciendo CX, CY, CZ todos los valores de cambio en cada ciclo. - andré a
el código anterior recopila todos los valores en tres matrices: CX, CY, CZ. - Viktor Latipov
¿Qué tiene de malo la línea tline = fgetl(fid)? Hay un error que dice Identificador de archivo no válido. Use fopen para generar un identificador de archivo válido. - andré a