Matlab - excel a traves de matlab

 
Vista:
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 04/12/2013 05:29:07
Amigos, tengo un programación que me permite trabajar con los datos de un excel y luego imprimir resultados en el mismo sin ni un problema, sin embargo, necesito que de manera automática mi programa realice las mismas operaciones en varios excel almacenados en una misma carpeta.

Ayuda por favor!!
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
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 04/12/2013 15:54:42
Me imagino que se pudiese utilizar for, sin embargo cada archivo excel tiene distinto nombre... esto es una parte de lo q tengo y necesito ejecutar automaticamente para todos los excel dentro de una carpeta.


function preparar2()
datos=xlsread('Abril-01-2013 Maq6.xlsx','Hoja1');
latitud=datos(:,11);
longitud=datos(:,12);
n=length(latitud);
B=0;

for i=1:(n-1)
A=sqrt((longitud(i+1)-longitud(i))^2+(latitud(i+1)-latitud(i))^2); %calcula la distancia entre 2 puntos
Distancia(i:n)=A;
if latitud(i)<667048;
B=0;
else
B=B+A;
end
Distancia_acumulada(i:n)=B;
end

xlswrite('Abril-01-2013 Maq6.xlsx',Distancia','Hoja1','P2');
xlswrite('Abril-01-2013 Maq6.xlsx',Distancia_acumulada','Hoja1','Q2');




pd: solo llevo un par de semanas aprendiendo a usar matlab,
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
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 05/12/2013 02:19:18
Pudiesen llegar a ser cientos de nombres, la idea es que el programa pudiese abrir cada excel que se encuentre en alguna carpeta determinada. Pero por dar un ejemplo los nombres pudiesen ser

Abril-01-2013 Maq6.xlsx
Abril-01-2013 Maq9.xlsx
Abril-01-2013 Maq12.xlsx
Abril-05-2013 Maq3.xlsx
Abril-05-2013 Maq31.xlsx


pd. agradezco su buena voluntad de antemano
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
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 05/12/2013 04:41:39
no interesa
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
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 05/12/2013 05:10:49
ya encontre una forma de crear un vector con todos los nombres de los excel de una carpeta. Faltaría hacer que de manera automatica, el programa se ejecutara para cada nombre incluido en ese vector.





function out=get_list_files(path,type);
list_dir=dir(fullfile(path,type));
list_dir={list_dir.name}’;
out=list_dir;
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
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 06/12/2013 00:04:59
ya se lo he enviado. 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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

excel a traves de matlab

Publicado por Dave (1094 intervenciones) el 07/12/2013 11:28:40
Hola Alvaro;

He corregido tu función de tal forma que pueda trabajar de una forma generica

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function preparar2(fname)
datos=xlsread(fname,'Hoja1');
latitud=datos(:,11);
longitud=datos(:,12);
n=length(latitud);
B=0;
 
for i=1:(n-1)
A=sqrt((longitud(i+1)-longitud(i))^2+(latitud(i+1)-latitud(i))^2); %calcula la distancia entre 2 puntos
Distancia(i:n)=A;
if latitud(i)<667048;
B=0;
else
B=B+A;
end
Distancia_acumulada(i:n)=B;
end
 
xlswrite(fname,Distancia','Hoja1','P2');
xlswrite(fname,Distancia_acumulada','Hoja1','Q2');


Ahora podría utilizarla de la siguiente manera:

1
>> preparar2('Archivo_excel.xlsx')


o podrías colocarla fácilmente en un ciclo For


Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

excel a traves de matlab

Publicado por Dave (1094 intervenciones) el 07/12/2013 11:24:46
Hola Alvaro;

La solución es bien simple, primero debes crear una función que haga todo el proceso y calculo de necesitas, esta función debería trabajar u operar sobre un archivo de nombre genérico, luego haces un script en el coges todos los nombres de los archivos, los colocas en un vector y luego los vas leyendo y pasando cada uno de los nombres a la función genérica, creada anteriormente.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
sin imagen de perfil

excel a traves de matlab

Publicado por alvaro (23 intervenciones) el 09/12/2013 04:29:08
Gracias por tu ayuda, pero sigo teniendo problemas.
El código en cuestión es bastante mas largo que el que copie mas arriba. El asunto es que hice lo mismo que hiciste tu, para que se trabaje de forma genérica, sin embargo me aparece el siguiente error:

"too many input arguments"

espero solucionar eso, para luego intentar meter todo dentro de un for para que lea todos los nombres de los archivos, almacenados en un vector.
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