Matlab - Vectores y matrices

 
Vista:

Vectores y matrices

Publicado por Nbb (10 intervenciones) el 21/03/2011 01:10:12
Hola!!!
Mi duda es la siguiente:

mediante la funcion textscan estoy creando vectores extrayendo datos de un string, este string va variando y lo que quiero es ir almacenado ese vector en una matriz. Alguien me podría ayudar, os dejo el cacho de codigo:

A=zeros(puntos,2); %%la variable puntos varia en mi programa
i=1;
fichero=fopen('datos.txt','r ');
while ~feof(fichero)
% Leo línea a línea

linea=fgets(fichero);

%%% La razon de porque utlizo textscan sobre el string linea y no se el fichero directamente, es porque en el medio realizo otras operaciones, pero que para la duda no es necesario

C=textscan(linea,'%f,%f');
A(i,:)=[C{1,1} C{1,2}]
i=i+1;
end

fclose(fichero);

El fichero de texto es algo así: (2 números decimales por línea y separados por coma)

998440321.583179,5.0049311725752
998500309.214595,4.96892044853219
998560296.846011,2.93780207533553
998620284.477427,3.05988436081944
998680272.108844,3.82871077618616
998740259.74026,3.65028568818916
998800247.371676,3.0851206760602
998860235.003092,3.24509302167866
998920222.634508,4.4699067124577
998980210.265925,4.38816660549368
999040197.897341,3.59696778635518
999100185.528757,3.06969283436078
999160173.160173,4.79491662967543
999220160.791589,3.15707094959942
999280148.423006,4.20158021628991
999340136.054422,3.76184436874431
999400123.685838,3.23195630915443

No consigo almacenar los datosde de forma correcta. Me gustaría que cada linea del fichero fuera una fila de la matriz.

Gracias espero que alguien me lo solucione!!
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
Imágen de perfil de JOSE CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Vectores y matrices

Publicado por JOSE CABALLERO (5917 intervenciones) el 21/03/2011 02:05:08
Lo que estas haciendo esta bien, lo comprobe con el comando fprintf. Solo hice un pequeño arreglo nada mas. Los datos lo he guardado en un archivo de texto llamado datoss.txt. Aqui te pego el codigo:

clear, clc,
i=1;
fichero=fopen('datoss.txt','r');
while ~feof(fichero)
linea=fgets(fichero);%Leo línea a línea
C=textscan(linea,'%f,%f');
A(i,:)=[C{1,1} C{1,2}];
i=i+1;
end
fclose(fichero);
format long
display(A)
[f,c]=size(A);
for i=1:f
fprintf('%18.6f %18.14f\n',A(i,1), A(i,2));
end

la ejecución:
>> textscann
A =
1.0e+008 *
9.984403215831790 0.000000050049312
9.985003092145950 0.000000049689204
9.985602968460110 0.000000029378021
9.986202844774271 0.000000030598844
9.986802721088440 0.000000038287108
9.987402597402600 0.000000036502857
9.988002473716760 0.000000030851207
9.988602350030920 0.000000032450930
9.989202226345080 0.000000044699067
9.989802102659251 0.000000043881666
9.990401978973409 0.000000035969678
9.991001855287570 0.000000030696928
9.991601731601731 0.000000047949166
9.992201607915890 0.000000031570709
9.992801484230061 0.000000042015802
9.993401360544221 0.000000037618444
9.994001236858379 0.000000032319563

998440321.583179 5.00493117257520
998500309.214595 4.96892044853219
998560296.846011 2.93780207533553
998620284.477427 3.05988436081944
998680272.108844 3.82871077618616
998740259.740260 3.65028568818916
998800247.371676 3.08512067606020
998860235.003092 3.24509302167866
998920222.634508 4.46990671245770
998980210.265925 4.38816660549368
999040197.897341 3.59696778635518
999100185.528757 3.06969283436078
999160173.160173 4.79491662967543
999220160.791589 3.15707094959942
999280148.423006 4.20158021628991
999340136.054422 3.76184436874431
999400123.685838 3.23195630915443


Si hay dudas me escribes.
Atte. JOSE CABALLERO.
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

Vectores y matrices (Resuelto)

Publicado por Nbb (10 intervenciones) el 21/03/2011 11:18:40
Muchas gracias!!! ya me funciona, es que yo hacía un disp(A) , me olvidé de poner format long antes para que me saliera en el formato adecuado, y al no ponerlo me salían ceros. Y estaba tan obcecada, que no me hubiera dado cuenta del pequeño error ni en broma.

Muchas gracias
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 JOSÉ CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Vectores y matrices (Resuelto)

Publicado por JOSÉ CABALLERO (5917 intervenciones) el 21/03/2011 15:00:58
OK. Entonces el problema estaba en la visualización de resultados. Puedes utilizar formart short, format long, format bank, format rat y si quieres una cantidad especifica de decimales entonces en este caso utilizas format fprintf. Bueno son los másutilizados pero hay mas formatos de salida. Lo puedes ver escribiendo help format en el 'Comman Window? de Matlab

Atte. JOSE CABALLERO.
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