Dadas dos funciones, vamos a encontrar el punto de corte a través de una GUI de Matlab. La interfaz gráfica genera ambas funciones al presionar un botón. Luego, se calcula el punto de corte, se asigna su coordenada a un cuadro de texto estático. La siguiente gráfica muestra el entorno de esta GUI.
Programamos que el segundo botón esté desactivado cuando inicia a correr el programa. Esto lo hacemos en la parte correspondiente del archivo .m
OpeningFcn.
- % --- Executes just before corte_graficas is made visible.
- function corte_graficas_OpeningFcn(hObject, eventdata, handles, varargin)
- set(handles.pushbutton2,'Enable','off')
- handles.output = hObject;
- guidata(hObject, handles);
El código que se ejecuta el presionar el primer botón se muestra a continuación. Se generan dos funciones y se colocan sus valores en
handles para poder exportar estos valores a otra función del archivo .m.
- % --- Executes on button press in pushbutton1.
- function pushbutton1_Callback(hObject, eventdata, handles)
- x = 0:0.01:10;
- y1 = x .^2 + 2;
- y2 = x .^3 ;
- handles.x=x;
- handles.y1=y1;
- handles.y2=y2;
- handles.axes1;
- plot(x, y1, x, y2);
- ylim([0,10])
- set(handles.pushbutton2,'Enable','on')
- guidata(hObject, handles);
Finalmente, el botón etiquetado como
Corte ejecuta el código que
encuentra el punto de corte de las dos gráficas y presenta la coordenada en el cuadro estático de texto.
- % --- Executes on button press in pushbutton2.
- function pushbutton2_Callback(hObject, eventdata, handles)
- idx = find(handles.y1 - handles.y2 < eps, 1); %// Index of coordinate in array
- px = handles.x(idx);
- py = handles.y1(idx);
- set(handles.text1,'String',['x= ',num2str(px),' y= ',num2str(py)])
- handles.axes1;
- hold on
- plot(px, py, 'ro', 'MarkerSize', 18)
- hold off