• Sábado 18 de Mayo de 2024, 19:51

Autor Tema:  fprintf y fscanf  (Leído 2027 veces)

Estrufi

  • Miembro MUY activo
  • ***
  • Mensajes: 158
    • Ver Perfil
fprintf y fscanf
« en: Miércoles 25 de Febrero de 2009, 18:11 »
0
Hola, estoy bastante desesperada, por un lado en una funcion escribo un codigo como este para guardar en un fichero los siguientes datos, el problema es que en otra funcion quiero leer los datos del fichero (uno de esos datos en una matriz de 7 columnas, al final de todo) Eso lo hago tal y como indico tb a continuacion, el problema es k no me sale.. alguien podria ayudarme un poco?

Muchisimas gracias!

f=fopen(strcat(file,'.txt'),'w+');
fprintf(f,'Nombre fichero: %sn',file);
fprintf(f,'t: %dn',t);
fprintf(f,'paso_t: %dn',paso_t);
fprintf(f,'calibracion_t: %dn',calibracion_t);
fprintf(f,'unidad_t: %sn',unidad_t);
fprintf(f,'pasox: %dn',pasox);
fprintf(f,'pasoy: %dn',pasoy);
fprintf(f,'tamaño_region_2^: %dn',pot);
fprintf(f,'umbral: %fn',umbral);
fprintf(f,'calibracion_x: %fn',calibracion_x);
fprintf(f,'calibracion_y: %fn',calibracion_y);
fprintf(f,'unidad_l: %snn',unidad_l);

%Cabecera de la matriz.
fprintf(f, '%st%st%sttt%sttt%stt%stt%sn', 'x', 'y', 'dx','dy', 'u_dx', 'u_dy', 'nu' );
for fila=1:Q
fprintf(f,'%dt%dt%ft%ft%ft%ft%dn',tabla_desplazamientos(fila,:));
end
fclose(f);
return


%Intento de leer directamente:
f=fopen(strcat(file,'.txt'),'r+');
file=fscanf(f,'%sn');
t=fscanf(f,'%dn');
paso_t=fscanf(f,'%dn');
calibracion_t=fscanf(f,'%dn');
unidad_t=fscanf(f,'%sn');
pasox=fscanf(f,'%dn');
pasoy=fscanf(f,'%dn');
pot=fscanf(f,'%dn');
umbral=fscanf(f,'%fn');
calibracion_x=fscanf(f,'%fn');
calibracion_y=fscanf(f,'%fn');
unidad_l=fscanf(f,'%snn');

%Cabecera de la matriz.
cabecera=fscanf(f, '%st%st%sttt%sttt%stt%stt%sn');
tabla_desplazamientos=fscanf(f,'%i %i %f %f %f %f %i',[7 inf])
tabla_desplazamientos=tabla_desplazamientos';
%fclose(f);

Estrufi

  • Miembro MUY activo
  • ***
  • Mensajes: 158
    • Ver Perfil
Re: fprintf y fscanf
« Respuesta #1 en: Jueves 26 de Febrero de 2009, 11:05 »
0
Hola,

 Planteo otra duda intentando hacerlo mas sencillo:

  Creo un fichero que solo tiene, dos datos que me interesan antes de la matriz, y luego la matriz de datos.

 El fichero lo creo de la siguiente manera:

 f=fopen(strcat(file_matriz,'.txt'),'w+');
fprintf(f,'%fn',calibracion_x);
fprintf(f,'%fn',calibracion_y);
for fila=1:Q
    fprintf(f, '%dt%dt%ft%ft%ft%ft%dn',tabla_desplazamientos(fila,:));
end
fclose(f);
return

 Y da como resultado un fichero asi:

1.000000
1.000000
16   496   0.136433   10.401273   0.107671   1.926077   4
48   656   -0.396950   0.403057   0.670991   0.680991   4
80   528   0.086771   -11.328609 0.106660   0.674574   4
80   656   -1.050371   1.050371   0.494334   0.494100   4
112   272   0.135117   1.729021   0.500136   1.118337   4
112   624   0.002004   -1.089595   0.045181   0.020206   4

Para leer el fichero y guardar los dos primeros datos en dos variables intento hacer esto:


 %Abrimos y leemos en una matriz los valores "x" "y" "dx" y "dy"
f=fopen(strcat(file,'.txt'),'r+');
calibracion_x=fscanf(f,'%fn');
calibracion_y=fscanf(f,'%fn');
matriz= fscanf( f,'%i %i %f %f %f %f %i',[7 inf]) %hay que cambiar algo aki para poder leer bien la matriz.
matriz= matriz'
matriz=cat(2,matriz(:,1),matriz(:,2),matriz(:,3),matriz(:,4));
fclose(f);

 Pero así no funciona bien fscanf.., como podría hacer? en teoria no deberia ser tan complicado,no?

 Muchisimas gracias, Saludos!

allisap

  • Miembro MUY activo
  • ***
  • Mensajes: 259
  • Nacionalidad: mx
    • Ver Perfil
Re: fprintf y fscanf
« Respuesta #2 en: Viernes 27 de Febrero de 2009, 00:02 »
0
saludos

ok, prueba a usar esto,

%Abrimos y leemos en una matriz los valores "x" "y" "dx" y "dy"
f=fopen('texto1.txt');
calibracion_x=fscanf(f,'%fn',1);
calibracion_y=fscanf(f,'%fn',1);
matriz= fscanf( f,'%i %i %f %f %f %f %i',[7 inf]) %hay que cambiar algo aki para poder leer bien la matriz.
matrizfinal=[matriz(1,:);matriz(2,:);matriz(3,:);matriz(4,:)]'
fclose(f);

espero te sirva
Victor Pasilla Campos
Puebla,Pue.

Estrufi

  • Miembro MUY activo
  • ***
  • Mensajes: 158
    • Ver Perfil
Re: fprintf y fscanf
« Respuesta #3 en: Lunes 2 de Marzo de 2009, 18:18 »
0
Buenas!

 Sí que funciona, Muchisimas gracias!

 Saludos!