Matlab - Try catch xlsread

 
Vista:
Imágen de perfil de diego alejandro
Val: 21
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Try catch xlsread

Publicado por diego alejandro (10 intervenciones) el 24/05/2017 15:44:23
Hola todos, estoy intentado hacer una rutina para cargar varios archivos de excel con nombres numericos no consecutivos, para eso hice un loop que aumenta los numeros, cuando no son consecutivos estoy intentando cargar con try catch por que a idea es hacer una matriz con todos los datos, estoy usando este scrip:

tentativa=input('insira o numero da primera tentativa= ','s')


nome_ext_pini=['resultados_passo_ini_',num2str(tentativa),'.xls']% carga dos dados de bas line alvo D


%^^^^^^^^^^^^^^^^^^^^^^^^@@@@@@____no casso do dar erro_____@@@@@^^^^^^^^^^^
try %NO CASO QUE AS TENTATIVAS PERCAM A SEQUENCIA NUMERICA TRY CATCH OFERECE A POSIBILIDADE DE ESCREVER O NUMERO DA SEGUINTE TENTATIVA
[NUM_INI,TXT_INI]=xlsread(nome_ext_pini);
catch ME%VARAVIEL ONDE SE GARDA O TIPO DE ERRO
if (strcmp(ME.identifier,'MATLAB:XLSREAD:unabletoopenfile'))%TIPO DE ERRO QUE DISPARA O TRY
h=errordlg(['a tentativa: ',nome_ext_pini,' nao se encontra'],'Erro');
uiwait(h);%NO MOMENTO QUE A PESSOA DE CLIK NO OK DO CADRO CONTINUAM OS CALCULOS
num=input('entre com o num da tentativa seguinte sim o numero 0:', 's');
nome=[num];
nome_ext_pini=['resultados_passo_pini_',num2str(num2),'.xls']% carga dos dados de bas line alvo D
[NUM_INI,TXT_INI]=xlsread(nome_ext_pini)
end
end

al rodar y no encontrar el archivo aparece este error

Error using xlsread (line 128)
XLSREAD unable to open file 'resultados_passosA_2.xls'.
File 'D:\Dropbox\Dropbox\mestrado_mayara_gc02_2017_01_16_110022\resultados_passosA_2.xls' not found.

Error in matriXXX (line 37)
[NUM_PSA,TXT_PSA]=xlsread(nome_ext_psa)

estoy tomando como guia un try catch previo para archivos *.txt, pero no entiendo por que no funciona si modifique el error.

agradezco la ayuda.
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 Daniel
Val: 269
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Try catch xlsread

Publicado por Daniel (264 intervenciones) el 24/05/2017 22:25:41
Hay varias opciones para hacer esto a mi entender no es del todo apropiado usar try catch en este contexto. Te recomiendo algo como los que sigue.

La razón para no usarlo es la siguiente; tu puedes listar los archivos que tienen una determinada extensión y un determinado nombre, en tu caso 'resultados_passo_ini_' algun_numero '.xls'. el comando 'ls' te permite esto:


nombre='resultados_passo_ini_';
extension='.xls';
lista=ls([nombre '*' extension]);
disp(lista)
resultados_passo_ini_6.xls
resultados_passo_ini_8.xls

No siempre la lista queda bien ordenada por ejemplo si los archivos tienen numeros de la siguiente manera:

resultados_passo_ini_15.xls
resultados_passo_ini_6.xls
resultados_passo_ini_8.xls
resultados_passo_ini_85.xls

pero se puede extraer el numero de cada archivo y ordenarlos de manera sencilla para que queden correctamente.

Te paso el código para hacer todo esto, espero te sirva:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
clc
clear all
 
nombre='resultados_passo_ini_';
extension='.xls';
lista=ls([nombre '*' extension]);
n=size(lista,1);
numero_de_archivo=zeros(1,n);
 
for s=1:n
    numero_de_archivo(s)=str2double(strrep(strrep(lista(s,:),nombre,''),extension,''));
end
[~,b]=sort(numero_de_archivo);
lista_ordenada=lista(b,:);
for j=1:n
    [matriz(j,:),txt]=xlsread(lista_ordenada(j,:));
end
 
disp('Archivos leidos:')
disp(' ')
disp(lista_ordenada)
disp(' ')
disp('Matriz de numeros leidos:')
disp(' ')
disp(txt)
disp(matriz)

Comentanos como te fue

Saludos

Daniel
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 diego alejandro
Val: 21
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Try catch xlsread

Publicado por diego alejandro (10 intervenciones) el 25/05/2017 06:18:37
Hola Daniel muchas gracias por su ayuda, pero si me puede ayudar con el try pues para aprender, yo tengo un try con archivos de texto y quisiera saber en este caso como es con xlsread que tendria que modificar.

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

Try catch xlsread

Publicado por Daniel (264 intervenciones) el 26/05/2017 18:37:39
Adjunta el código de matlab completo porque el error refiere a algo que no está en el texto que subiste

Saludos
Daniel
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 Nueva ayuda
Val: 21
Ha aumentado su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Try catch xlsread

Publicado por Nueva ayuda (10 intervenciones) el 31/05/2017 13:54:17
Hola Daniel, que pena no haber contestado antes, estaba medio ocupado.

Te comento que con tu solucion inicial pude solucionar el problema, pero tengo una pregunta, cuando se hace las listas de los nombres se generan variables de ticvo char, como puedo guardar esos datos en un archvo texto?

muchas gracias por tu ayuda

Diego.
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