Programación Específica > Matlab

 fprintf y fscanf

(1/1)

Estrufi:
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:
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:
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:
Buenas!

 Sí que funciona, Muchisimas gracias!

 Saludos!

Navegación

[0] Índice de Mensajes

Ir a la versión completa