Matlab - Problema cargar .mat ejecutable

 
Vista:

Problema cargar .mat ejecutable

Publicado por Marcos (2 intervenciones) el 30/09/2013 10:18:44
Buenos días,

estoy creando un sistema de redes neuronales. He creado la interfaz y el código y se abre perfectamente, y funciona cuando lo utilizo con MatLab. El problema es cuando creo un ejecutable y le le doy a que carque mi red neuronal y realize los cálculos no hace nada. Tengo un boton de Reset que si funciona pero la red neuronal no la carga.
Utilizo el siguiente código:

function pushbutton1_Callback(hObject, eventdata, handles)
prueba = [handles.metricdata.edit1; handles.metricdata.edit2;handles.metricdata.edit3;handles.metricdata.edit4;handles.metricdata.edit5;handles.metricdata.edit6;handles.metricdata.edit7;handles.metricdata.edit8;handles.metricdata.edit9;handles.metricdata.edit10;handles.metricdata.edit11;handles.metricdata.edit12;handles.metricdata.edit13];
load('C:/Archivos de programa/MATLAB/bin/recunuevo.mat');
set(handles.mass, 'String',sim (net, prueba));

Alguien sabría como puedo cargar la red cuando pulse en el ejecutable .exe en un ordenador que no tenga ni matlab instalado.

Gracias de antemano.
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

Problema cargar .mat ejecutable

Publicado por ger (24 intervenciones) el 02/10/2013 02:07:18
Hola Marcos, mirá te cuento algo que te puede ser útil.
En ppio para que un ejecutable portable funcione sin problemas tenés que instalar el MCRInstaler de matlab.
Fijate en la carpeta de MATLAB de tu máquina en la carpeta R2010a>toolbox>compiler>deploy>win64>MCRInstaler
O en win 32 depende de tu plataforma...

Yo tengo la versión 2010, por ahí vos tenés otra, pero ubicá esta aplicación he instalala en aquellas máquinas donde quieras correr tu *.exe.
Si no haces esto previamente puede ocurrir que te salte un error *.dll

Si el programa se abre pero al cargar un archivo se genera un conflicto es porque el código que escribiste es dependiente de la carpeta bin de matlab.
Es una limitación grosera que tenés que resolver. En general esa carpeta no va a existir en otras máquinas.
Te conviene abrir una ventana de diálogo y generar el path correspondiente independientemente de donde se encuentre el archivo.
Probá con algo así:

function pushbutton1_Callback(hObject, eventdata, handles)
prueba = [handles.metricdata.edit1; handles.metricdata.edit2;handles.metricdata.edit3;handles.metricdata.edit4;handles.metricdata.edit5;handles.metricdata.edit6;handles.metricdata.edit7;handles.metricdata.edit8;handles.metricdata.edit9;handles.metricdata.edit10;handles.metricdata.edit11;handles.metricdata.edit12;handles.metricdata.edit13];
[filename, pathname] = uigetfile('*.mat', 'Seleccionar una red'); %Nombre y path del archivo
%Importa el archivo
name = fullfile(pathname,filename);
matrix_data = importdata( name, var1, var2, etc etc);

la última línea es un ejemplo hipotético, no existe tal función...
para generar tu función personal que lea tus matrices
escrbí en el command windows:
uiimport
y le das enter.
Se abre una ventanita de diálogo en donde cliqueas: File.
Después buscas en tu directorio un matriz de red neuronal cualquiera,
cliqueas en donde dice generar código y aceptas.
Inmediatamente se te va a generar un *.m que lo guardas con el nombre que se te antoje,
por ejemplo, importardata.m como se me ocurrió a mi pero el nombre es lo de menos.
En gral la función te va a pedir el ID del archivo que en el ejemplo que te puse sería la variable name.
matrix_data va a contener tu red neuronal y con ella hacé lo que se te antoje.
Otra cosa importante, cuando generes el *.exe empaquetá todas las funciones que uses, incluida esta.
al *.m guardalo en la carpeta junto con tu *.fig ppal.

Bueno que te sea leve, espero haberte ayudado en algo.
Adiore, Ger.-
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

Problema cargar .mat ejecutable

Publicado por Marcos (2 intervenciones) el 02/10/2013 13:13:09
Muchisimas gracias por la ayuda,

mi archivo de mi red neuronal se llama recuperacion.mat y al abrirlo contiene un archivo llamado net que es el que quiero cargar. si lo cargo de la forma que yo lo tenía (que me da problema a la hora del ejecutable, si lo ejecuto desde matlab si me va bien)

cargo:
load('C:/Archivos de programa/MATLAB/bin/recunuevo.mat');
y obtengo:
net
(Imagen1.jpg)

de la forma que me han dicho:
[filename, pathname] = uigetfile ('*.mat', 'Seleccionar una red');
name = fullfile (pathname, filename);

obtengo

pathname, filename, name

pero haciendolo de ese modo no obtengo el net que es el que necesito.

De que otra forma puedo hacer para obtener el "dichoso" net que es el que necesito cargar para simular la red posteriormente:

sim (net, prueba);

Gracias de antemano, intentare ayudar también a lo que pueda.
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

Problema cargar .mat ejecutable

Publicado por ger (24 intervenciones) el 03/10/2013 14:09:37
Hola Marcos, como te dije anteriormente tenés q independizarte de la carpeta de matlab. Si llevás el ejecutable a otra máquina que no lo tenga instalado (que es la idea) te va tirar error.
Una vez que tenés el fullname, tenes que generar la fución como te expliqué más arriba que es lo más simple que se me imagina. No se qué tipo de datos contiene el archivo *.mat, pero si lo generás como te digo se crean variables que te organizan todo automáticamente, está bueno, intentalo. Una de esas variables va a contener tu archivo net. Si no superas esta instancia el ejecutable no va a ser posible. La otra opción es usar funciones específicas para abrir imágenes que están en el help. De todas maneras le vas a tener que pasar el fullname, Así como lo escribiste, tu programa solo es capaz de leer esto: C:/Archivos de programa/MATLAB/bin/recunuevo.mat
Abre un único archivo en la carpeta bin que se llama recunuevo.mat y nada más. Si agregas un archivo nuevo o le cambias el nombre te va a tirar error, estendés? Si creas una subcarpeta también. Tu código debe ser flexible a estos cambio, porque el ejecutable es inalterable una vez que se compiló...
Suerte, Ger.-
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

Problema mat ejecutable con archivo .mat

Publicado por julen (7 intervenciones) el 18/04/2015 03:28:21
Hola

He crado una interface grafica en matlab y posteriormente un archivo ejecutable. La interface grafica funciona correctamente pero el archivo ejecutable no funciona. Se carga, se abre, todo muy bien, pero no obedece las ordenes al clicar los botones.

Sospecho que el problema, está por haber empleado en el codigo de matllab las fucniones "save" y "load" y a su vez crear archivos .mat
Creo que el archivo ejecutable no lee correctamente este tipo de archivos y yo creo que si he realizado bien el archivo ejecutable (puse en la cabezera el programa principal .m, y despues el resto de programas como ".m", ".fig", ".jpeg" y " . mat")

Me gustaria tener una segunda opinion para saber si estoy en lo cierto y a ser posible alguna posible solucion.
Las funciones de "save" y "load" las emplee en el codigo de matlab para poder guardar datos que el usuario introduzca en la interface (Save) y tras cerrar y abrir el programa estos datos permanezcan(load). De esta manera cree los archivos .mat que no son mas que variables que necesito guardar y posterioemente cuando hagan falta cargar.

Muchas gracias y saludos!
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

Problema cargar .mat ejecutable

Publicado por Javier A. (1 intervención) el 13/03/2014 20:39:00
saludos,

Despues de crear el .exe (programa ejecutable), solo debes pegar el archivo .mat (donde esta guardada la red) en la carpeta donde esta tu .exe

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