Matlab - Llamar función desde GUI

   
Vista:

Llamar función desde GUI

Publicado por Javier javier.ignacio@laudadio.com.ar (2 intervenciones) el 19/03/2014 13:47:47
Saludos a todos.

Tengo el siguiente problema:

Estoy haciendo una gui en la que el usuario introduce una función de dos variables en un edittext [ec] y con un pushbutton [graficar] se grafica. El tema es que no se como hacer para que me reconozca la función (superficie a graficar) desde el edittext [ec]
(li,paso y ls son otros edittext para que el usuario elija el intervalo, pero con eso no hay problema)

function graficar_Callback(~, eventdata, handles)

exti=str2num(get(handles.li,'String'))
pas=str2num(get(handles.paso,'String'))
exts=str2num(get(handles.ls,'String'))

[x,y]=meshgrid(exti:pas:exts); %dominio
f=(get(handles.ec,'string'));
f;
surf(x,y,z);
shading flat;
rotate3d on %permite girar la sup
xlabel('Eje X'),ylabel('Eje Y'),zlabel('Eje Z')

Nota1: Ya probé el código y si funciona cuando directamente yo defino la función en el script, es decir, que cambio las líneas:

f=(get(handles.ec,'string'));
f;

por:

z=exp (-(x.^2 + y.^2))

Pero obviamente no me sirve, porque la idea es que el usuario ingrese la función que quiera.

Nota2: Mis conocimiento en matlab son bajos así que agradecería en el caso de que me den un ejemplo,
una breve explicación sobre la función que vayan a usar, o cual es el mejor modo de hacer lo que quiero, etc.

Desde ya muchas gracias.
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 Jorge

Llamar función desde GUI

Publicado por Jorge (212 intervenciones) el 19/03/2014 23:26:17
Hola Javier.

Después de que obtienes el String correspondiente a f(x,y) de tu edit text puedes utilizar el comando "subs" de la siguiente forma:

1
2
f = get(handles.ec,'string');
f = subs(f,{'x','y'},{x,y});


Y con eso debería funcionar.


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

Llamar función desde GUI

Publicado por Javier (2 intervenciones) el 19/03/2014 23:40:28
Muchas gracias Jorge, sirvió. 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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Llamar función desde GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 19/03/2014 23:59:38
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function varargout = graficar_una_supericie(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @graficar_una_supericie_OpeningFcn, ...
                   'gui_OutputFcn',  @graficar_una_supericie_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
 
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
 
function graficar_una_supericie_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
 
function varargout = graficar_una_supericie_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
 
function funcion_Callback(hObject, eventdata, handles)
fun=get(hObject,'String');
handles.fun=fun;
guidata(hObject, handles);
 
function Extremo_a_Callback(hObject, eventdata, handles)
a=str2double(get(hObject,'String'));
handles.a=a;
guidata(hObject, handles);
 
function Extremo_b_Callback(hObject, eventdata, handles)
b=str2double(get(hObject,'String'));
handles.b=b;
guidata(hObject, handles);
 
function incremento_Callback(hObject, eventdata, handles)
inc=str2double(get(hObject,'String'));
handles.inc=inc;
guidata(hObject, handles);
 
function graficar_Callback(hObject, eventdata, handles)
fun=handles.fun;
a=handles.a;
b=handles.b;
inc=handles.inc;
 
[X,Y]=meshgrid(a:inc:b);
f=inline(fun,'x','y');
Z=f(X,Y);
surf(X,Y,Z);
shading flat;
rotate3d on
xlabel('Eje X'),ylabel('Eje Y'),zlabel('Eje Z')



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

Llamar función desde GUI

Publicado por Sebastian (4 intervenciones) el 04/03/2016 19:46:43
Hola disculpa necesito graficar una funcion cualquiera ingresada por el usuario cuando se presiona un push button pero tengo un prblema que el rato de presionar el pushbutton no se me grafica nada ya que no se me recupera el valor de mi string en un edit text y nose como graficar a esta funcion ingresada por teclado
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

Llamar función desde GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 05/03/2016 14:06:17
Un posible error, no estas exportando las variables de una función a otra función. Pero puede ser otro error. Se tendría ver el código mismo.



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.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

Llamar función desde GUI

Publicado por Sebastian (4 intervenciones) el 06/03/2016 04:32:58
1
2
3
4
5
6
7
function pushbutton2_Callback(hObject, eventdata, handles)
x=linspace(0,2*pi,100);
y=get(handles.edit9,'String');
plot(x,y);
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

Ese es mi codigo pero solo me funciona cuando pongo X en el edit text me podria ayudar para que seaingresando cualquier funcion
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

Llamar función desde GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 06/03/2016 14:40:05
Debes subir dos archivos tanto *.fig y *.m con la opcion de Adjuntar archivos. Tu error debe estar en la exportación, pero esa parte no se ve cuando pones solo parte de tu archivo. Como veras yo subo todo el código m lineas arriba, para el usuarios de matlab lo pueda reproducir. Por mi parte te puedo hacer todo el código completo de lo que estas preguntando, pero el objetivo no es eso, es objetivo es ver en que parte de tu código hay error y arreglarlo.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.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

Llamar función desde GUI

Publicado por Sebastiab (4 intervenciones) el 06/03/2016 19:54:52
El programa que estoy hacierndo grafica Seno,Coseno y Tangente y luego las sobrepuestas
Tengo 2 problemas en el push buttom 'Enviar Valores' que estoy haciendo necesito guardar los valores pero no se estan guardando
en el axes 2 tengo que ingresaruna funcion cualquiera para que sea graficada pero no se me grafica solo grafica X ninguna otra funcion
Esperome pueda ayudar seria de gran ayuda ya que el trabajo es un adicional y es para el dia de mañana
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

Llamar función desde GUI

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 06/03/2016 21:52:56
1
2
3
4
5
6
7
function pushbutton2_Callback(hObject, eventdata, handles)
axes(handles.axes2);
x=linspace(0,2*pi,100);
y=get(handles.edit9,'String')
y=vectorize(inline(y));
y=y(x);
plot(x,y);



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
El correo es para servicios de programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.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

Llamar función desde GUI

Publicado por Sebastian (4 intervenciones) el 07/03/2016 04:33:09
Muchisimas gracias fue de total ayuda su codigo en realidad mil 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