SoloCodigo
Programación Específica => Matlab => Mensaje iniciado por: Estrufi en Miércoles 25 de Febrero de 2009, 18:11
-
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);
-
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!
-
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.
-
Buenas!
Sí que funciona, Muchisimas gracias!
Saludos!