Matlab - duda lectura archivo

 
Vista:

duda lectura archivo

Publicado por David (18 intervenciones) el 20/07/2011 22:07:19
Buenas tardes, a ver si alguien me puede echar una mano que me he quedado atascado nada mas empezar con un programa.

Tengo unas hojas de excell con datos, un ejemplo podria ser el siguiente:
1,2 11.8 5
2,3 9,7 4
3,4 8,7 3
4,2 7,5 2
5,5 6,7 1
6,9 5,7 0
7,6 4,3 9
8,4 3,4 8
9,3 2,7 7
10,2 1,7 6

Guardado con el nombre 'datos.xlsx'

Esas hojas de excell estan cargadas en el directory de Matlab.

Me gustaria leer cada fila en un vector porque luego voy a utilizar cada uno de esos vectores (en este caso de dimensiones 1x3) en redes neuronales.

El programa empezaría asi:

>>function tomardatos
>>fid=fopen('datos.xlsx', 'rt')
%aqui utilizaria un bucle for segun el numero de columnas y de filas pero de momento intento leer solo la primera linea de la sigiente manera
>>primlinea=textscan(fid, '%n %n &n')
%y aqui viene mi problema, cuando abro la variable primlinea está vacia.

Espero haberme explicado bien.

Si alguien me pudiera echar una mano le estaría muy agradecido.

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

duda lectura archivo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/07/2011 00:18:31
hola David.
una sugerencia.
Revisate toda la ayuda de matlab sobre la funcion textscan
digita en la ventana de comandos de Matlab
>> help textscan
y luego haces clic en doc textscan.
y te saldra varios ejemplos de esta funcion.
estudialo con cuidado.
y podras resolver tu pregunta.


saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN 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
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

duda lectura archivo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/07/2011 20:16:02
hola DAVID.
Uno de ellos debes de querer.
%======================================
%1RA FORMA
clear all;
ARCHIVO='importandodatosexcel12.xlsx';
[estado,hojas]=xlsfinfo(ARCHIVO);
Data1=xlsread(ARCHIVO,cell2mat(hojas(1)),'A1:C10');
display(Data1)

%===========================================

%==============================================
%2DA FORMA
clear all;
ARCHIVO='importandodatosexcel12.xlsx';
[estado,hojas]=xlsfinfo(ARCHIVO);
Data2=xlsread(ARCHIVO,cell2mat(hojas(1)),'A1:C10');
display(Data2)
[n,m]=size(Data2);
for i=1:n
v = genvarname(['v',num2str(i)]);
eval([v '=[Data2(i,:)]'])
end
%============================================

%===========================================
%3DA FORMA
clear all
fid=fopen('importandodatosexcel12.txt');
Data3=textscan(fid,'%f %f %f');
fclose(fid);
Data3=cell2mat(Data3);
display(Data3)
%=============================

%===========================================
%4DA FORMA
clear all
DATA=importdata('importandodatosexcel12.xlsx');
Data4=DATA.Hoja1;
display(Data4)
%=============================

EJECUCION.
>> importandodatosexcel12
Data1 =

1 2 11
2 39 74
3 48 73
4 27 52
5 56 71
6 95 70
7 64 39
8 43 48
9 32 77
10 21 76


Data2 =

1 2 11
2 39 74
3 48 73
4 27 52
5 56 71
6 95 70
7 64 39
8 43 48
9 32 77
10 21 76


v1 =

1 2 11


v2 =

2 39 74


v3 =

3 48 73


v4 =

4 27 52


v5 =

5 56 71


v6 =

6 95 70


v7 =

7 64 39


v8 =

8 43 48


v9 =

9 32 77


v10 =

10 21 76


Data3 =

1 2 11
2 39 74
3 48 73
4 27 52
5 56 71
6 95 70
7 64 39
8 43 48
9 32 77
10 21 76


Data4 =

1 2 11
2 39 74
3 48 73
4 27 52
5 56 71
6 95 70
7 64 39
8 43 48
9 32 77
10 21 76

saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN 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

duda lectura archivo

Publicado por David (18 intervenciones) el 21/07/2011 21:56:10
Muchas gracias Jose, lo conseguí muy parecido a la tercera forma que has explicado tu. No conseguìa hacerlo con el xlsx y lo que hice fue copiarlo a un txt para poder utilizar bien la funcion textscan. Dejo el programa por si a alguien le intersa:

programa(filas,columnas,archivo)
fid=fopen(archivo,'rt');
for i=1:1:filas
linea=textscan(fid, ' %n %n %n %n *[]^\n');
linea=cell2mat(linea);
linea;
for j=1:1:columnas
lineas(i,j)=linea(j);
end
end
lineas

Al compilar el programa habra que poner programa(10,3,'datos.txt'). Está hecho asi porque tengo que utilizar archivos con distinto nombre y así elijo hasta que datos quiero tratar.

Espero que a alguien le sirva.

Muchas gracias Jose
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

duda lectura archivo

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/07/2011 22:56:47
hola David.
Mi archivo de texto: importandodatosexcel12.txt es de 10x3, ahora cuando ingrese filas mayor que 10 debe mostrarme un mensaje de que los datos ingresados estan mal, analogamente con la columna.
%===========================================
function lineas=importandodatosexcel13(filas,columnas,archivo)
a=importdata(archivo);
[n,m]=size(a);
if filas<=n && columnas<=m
fid=fopen(archivo);
for i=1:filas
for j=1:columnas
lineas(i,j)=cell2mat(textscan(fid,'%n *[]^ '));
end
end
fclose(fid);
else
lineas='ERROR AL INGRESAR LOS DATOS';
end
%=================================

VARIAS EJECUCIONES

>> lineas=importandodatosexcel13(5,2,'importandodatosexcel12.txt')
lineas =
1 2
11 2
39 74
3 48
73 4

>> lineas=importandodatosexcel13(10,3,'importandodatosexcel12.txt')
lineas =
1 2 11
2 39 74
3 48 73
4 27 52
5 56 71
6 95 70
7 64 39
8 43 48
9 32 77
10 21 76

>> lineas=importandodatosexcel13(15,3,'importandodatosexcel12.txt')
lineas =
ERROR AL INGRESAR LOS DATOS

>> lineas=importandodatosexcel13(8,7,'importandodatosexcel12.txt')
lineas =
ERROR AL INGRESAR LOS DATOS



saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN 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