Matlab - copiar de un txt a otro con Matlab

 
Vista:

copiar de un txt a otro con Matlab

Publicado por Edurne (2 intervenciones) el 04/08/2011 13:40:14
Hola!!
Tengo un problemilla con Matlab, que espero que alguien me pueda solucionar!
Tengo un archivo de texto en el que debo hacer algunas modificaciones, que implican añadir líneas al archivo, pero no es al final, sino en lugares concretos.
Hasta el momento, lo que he hecho es extaer la información que necesito y crear un .txt con la parte que debo introducir en el archivo original. Es decir, lo que necesito ahora mismo es coger la parte inicial y final del archivo original y en la parte intermedia introducir el archivo que he creado.
No se si me he explicado bien, espero que alguien pueda ayudarme!!
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

copiar de un txt a otro con Matlab

Publicado por Arnold Torres (26 intervenciones) el 04/08/2011 17:11:31
Yo tuve un problema similar y esto fue lo que hice:
1) Creas una variable que abre el archivo que quieres leer (solo para lectura). Por ejemplo, si tu archivo *.txt se llama pepito haces, por ejemplo
fid = fopen(pepito,'r'); aqui has creado la variable "fid"
2) Creas una variable que abre un archivo nuevo (para escritura), aqui es donde guardaras los datos que estas extrallendo los datos del primer archivo ("pepito"). Haces lo sig
guardar = fopen(xpepito,'w'), aqui has creado el archivo "xpepito" que es donde vas a escribir los datos
3) usa las funciones fgets (o fgetl) para pasar de una linea a otra y la funcion fprintf para escribir en el nuevo archivo....
A continuacion pegare un codigo que use haciendo lo anterior que genera archivos *.atp

function [xarchivo] = GeneradorArchivosATP (Vector_Fallas,carpetatrabajo)

load('descriptores')

for k = 1:length(Vector_Fallas) % Entra a cada carpeta "FALLA_0X"
numfalla = Vector_Fallas(k);
carpetafalla = [carpetatrabajo '\ATP\archivosATP\FALLA_0' num2str(numfalla)];
for j = 1:length(BARRA)
if BARRA(j) <= 9
for t = 1:length(RESISTENCIA)
if RESISTENCIA(t) <= 9
archivo = [carpetafalla '\Falla0' num2str(Vector_Fallas(k)) '_B00' num2str(BARRA(j)) '_RF0' num2str(RESISTENCIA(t)) '.atp'];
fid = fopen(archivo,'r');
k1 = [];
xarchivo = [carpetafalla '\XFalla0' num2str(Vector_Fallas(k)) '_B00' num2str(BARRA(j)) '_RF0' num2str(RESISTENCIA(t)) '.atp'];
guardar = fopen(xarchivo,'w');
while isempty(k1) == 1
tline = fgets(fid);
fprintf(guardar,'%s',tline);
k1 = findstr(tline,'C dT >< Tmax >< Xopt >< Copt >');
if isempty(k1) == 0
tline = fgets(fid);
findstr(tline,'0.25');
cambiar = strrep(tline,'0.25',' -1.');
fprintf(guardar,'%s',cambiar);
end
end
fclose(fid);
delete(archivo);
end
end
end
end
end
fclose('all');

No intentes hacerlo directamente en matlab, no te va a funcionar porque yo estoy leyendo incluso carpetas... Es solo para que te guies. La parte que mas te interesa es la del "while". No esta de mas que uses las ayudas de matlab para las funciones que te dije al comienzo, para mi fue suficiente y no soy experto en matlab... Espero te sirva....Saludos
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

copiar de un txt a otro con Matlab

Publicado por Edurne (2 intervenciones) el 05/08/2011 08:38:02
Muchas gracias por la ayuda! Ya he conseguido resolver mi problema!!
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

copiar de un txt a otro con Matlab

Publicado por klipya (13 intervenciones) el 29/10/2012 11:36:32
hola! Me ha parecido muy interesante tu comentario ya que es lo que estoy intentando hacer. Tengo una pregunta. SI quiero copiar en una columna de mi archivo de texto la línea 18 y, de esa línea, la posicion número 12 a la 19 ¿como podría hacerlo?
Saludos,
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