Matlab - error al tratar de graficar en GUI

   
Vista:

error al tratar de graficar en GUI

Publicado por Juan Sebastian Duarte sebasdua11@hotmail.com (7 intervenciones) el 02/05/2015 04:35:03
Buenas noches.

Tengo que presentar un programa que me modifique unas variables de un modelo biologico, especificamente el modelo de HODGKIN-HUXLEY (HH). El profesor nos facilito el codigo del modelo y mi trabajo es hacer una GUI, solicitar una variable al usuario, y luego mostrar la modificación del modelo en unas graficas.

He hecho la GUI con GUIDE pero al tratar de mostrar las condiciones iniciales del modelo me sale un error que no entiendo.

1
2
3
4
5
6
7
8
9
10
11
function Graficar_Callback(hObject, eventdata, handles)
% hObject    handle to Graficar (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
dbstop if error
HH (la función que contiene el modelo biologico y me genera las variables que me permite graficar)
ax=handles.axes1;
plot(ax,t,y(:,1),'m');
title('Time Profile of Memb. Potential in Nerve Cells')
xlabel('Time (ms)'); ylabel('Potential (mV)')
grid on;

----->Error in gui>Graficar_Callback (line 95)
handles.ax=handles.axes1;

He intentado con axes(handles.axes1) y tampoco me ha dado resultado.

De antemano agradezco su tiempo y sus ayudas. Soy muy novato en esto del Matlab.
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 Royeth

error al tratar de graficar en GUI

Publicado por Royeth jesus.royeth@gmail.com (742 intervenciones) el 03/05/2015 05:08:36
No es posible acceder a las variables de un guide mediante un script , debido a que son métodos privados, un ejemplo :

1
2
3
4
5
function [r]=ejemplo(a,b)
n=mean([a b])
s=std([a b]);
r=n/s;
end


una vez ejecutada esta función no se puede acceder a n ni a s , la única salida es r e incluso no sale como r misma sino como ans

la forma que puede ser reconocida es que se declare global en cada una de las partes en donde se vaya a trabajar con dicha variable o que sea un argumento de salida.
para el caso del guide es recomendable programar los script que tienes independientes tipo función con el fin de que puedas acceder a ellos , o en el mejor de los casos que trates de programar todo en un solo archivo

https://www.facebook.com/royethmatlab
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

error al tratar de graficar en GUI

Publicado por Juan Sebastian Duarte sebasdua11@hotmail.com (7 intervenciones) el 03/05/2015 05:40:53
Muchas gracias por su respuesta y su tiempo.

Sería posible que me diera un ejemplo de como declarar una variable globalmente?
Ya lo he intentado añadiendo "global" antes del nombre de la variable pero no tuve mucho exito :(

gracias de nuevo
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 Royeth

error al tratar de graficar en GUI

Publicado por Royeth jesus.royeth@gmail.com (742 intervenciones) el 03/05/2015 05:49:18
ok supongamos que tenemos el caso anterior en un archivo iría :

1
2
3
4
5
6
function [r]=ejemplo(a,b)
global n s
n=mean([a b])
s=std([a b]);
r=n/s;
end

y si quiere usar en otro archivo la n y la s entonces el otro archivo también debe declarar global dichas variables :


1
2
3
4
global n s
t=n^2/s;
disp(t)
%etc


https://www.facebook.com/royethmatlab
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

error al tratar de graficar en GUI

Publicado por juan Sebastian Duarte sebasdua11@hotmail.com (7 intervenciones) el 03/05/2015 05:52:08
Listo hombre Muchas gracias.
Mañana empezare a programar con sus recomendaciones.

Me ha sido de mucha ayuda. 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