Matlab - Sobre-escribir en un archivo *.txt

 
Vista:

Sobre-escribir en un archivo *.txt

Publicado por Lucia Robles Diaz (1 intervención) el 05/10/2011 01:34:40
Hola.

Mi duda es la siguiente:
Quiero sobre-escribir sobre un archivo .*txt ya existente. Mas concretamente re-escribir las líneas 16 y 17 del archivo. Lo he intentado de la siguiente manera pero, creo que tengo múltiples errores en el código porque no obtengo ningún resultado.

fid=fopen('atlantico01.swn','r+')
for i=1:15
fgets(fid);
end

fprintf(fid,'INPGRID WIND REGULAR ', ...
num2str(min(x1)) ,' ',num2str(min(y1)) ,' ',...
num2str(0.0) ,' ',...
num2str(m-1) ,' ', num2str(n-1),' ',...
num2str(Dx) ,' ',num2str(Dy) )

fprintf(fid, ' \n');

fprintf(fid,'READINP WIND 1 ','''',nombre,'''', ' 1 0 FREE')

fclose(fid)

Muchas gracias de antemano

Un saludo
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

Sobre-escribir en un archivo *.txt

Publicado por Arnold Torres (26 intervenciones) el 05/10/2011 04:40:17
Hola Lucia...
Tengo una solucion recursiva, no se como se cambia directamente... pero intenta con lo siguiente
1. Crea un archivo txt con el siguiente texto

BEGIN NEW DATA CASE
C --------------------------------------------------------
C Generated by ATPDRAW Agosto, Viernes 26, 2011
C A Bonneville Power Administration program
C by H. K. Høidalen at SEfAS/NTNU - NORWAY 1994-2008
C --------------------------------------------------------
POWER FREQUENCY 60.
$DUMMY, XYZ000
C dT >< Tmax >< Xopt >< Copt >
.0005 0.25 60. 60.
500 1 1 1 1 0 0 1 0
C 1 2 3 4 5 6 7 8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH

2. crea un .m con el siguiente codigo
clc
clear all

archivo = 'Alban.txt';
fid = fopen(archivo,'r');
xarchivo = 'XAlban.txt';
guardar = fopen(xarchivo,'w');

k1 = [];
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

3. Cuando lo ejecutes te daras cuenta que se crea un archivo llamado "xAlban.txt" (No se te olvide buscarlo en el current folder) es el mismo "Alban.txt" pero con unos cambios... ¿Que se hizo?... bueno, el archivo "xAlban.txt" contiene los cambios que quiero que se haga... el codigo dice que cuando encuentre la linea: C dT >< Tmax >< Xopt >< Copt > (este es un filtro de busqueda), cuando encuentre esta linea, quiero que cambie, en las lineas siguientes, el valor "0.25" por "-1."
Espero que esto 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
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

Sobre-escribir en un archivo *.txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/10/2011 23:54:10
hola Patricia.
%=================================
%Dado dos valores n y m , donde n=5 y m=10;
% Hacer un programa para intercambiar los valores de n y m
% es decir al final n debe tener el valor de 10 y m debe tener
% el valor de 5; n=10; m=5;

clear all
n=5;
m=10;
temporal=5;
n=10;
m=temporal
%==========================

Haz este mismo logica, pero en tu caso n y m son archivos.
y te saldrá lo que estas queriendo hacer


saludos
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR MATLAB
[email protected]
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