GUI use inputs as min and max for a function question? - Homework
Ältere Kommentare anzeigen
I am making a GUI where it plots the cos(x) in the range of [0 10]. However, there are two open textboxes that can be changed by the user to create a new min and max range for cos(x). If the user changes these two numbers, the cos(x) plot should update accordingly.
Here is my script so far:
function varargout = costext(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @costext_OpeningFcn, ...
'gui_OutputFcn', @costext_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
% End initialization code - DO NOT EDIT
% --- Executes just before costext is made visible.
function costext_OpeningFcn(hObject, eventdata, handles, varargin)
% Choose default command line output for costext
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes costext wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = costext_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
fplot('cos', [0, 1]);
xlabel('x');
ylabel('cos(x)');
function edit3_Callback(hObject, eventdata, handles)
function edit3_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function edit4_Callback(hObject, eventdata, handles)
% --- Executes during object creation, after setting all properties.
function edit4_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
This works only to show the cos(x) function from [0 10] using fplot, but how can I change the MIN and MAX for what the user inputs and changes the graph???
Antworten (2)
Image Analyst
am 29 Nov. 2013
Bearbeitet: Image Analyst
am 29 Nov. 2013
0 Stimmen
Try xlim() and ylim().
1 Kommentar
Image Analyst
am 3 Dez. 2013
See fixed code attached below.
Nora
am 30 Nov. 2013
8 Kommentare
Image Analyst
am 30 Nov. 2013
You can have an edit field where the user types in something. Then you read it and call xlim() and/or ylim().
Nora
am 30 Nov. 2013
Image Analyst
am 30 Nov. 2013
That doesn't make sense. You get the user's input from the edit box by using get() then turn it into a number and send that number into xlim() to set the axes limits to whatever the user said.
Nora
am 1 Dez. 2013
Nora
am 3 Dez. 2013
Image Analyst
am 3 Dez. 2013
And how does the fix I attached in my answer not do that? I believe it does.
Nora
am 3 Dez. 2013
Image Analyst
am 3 Dez. 2013
Then you need to create callbacks for the edit boxes and put a call to UpdatePlot() in there. The disadvantage of doing that is that the user will have to know that it won't know when they're done typing in a number into the edit field and that nothing will happen until that edit field loses focus. So they need to click away , such as in the other edit field or on a button or on some other control. And if they're going to have to click someplace outside the edit field anyway , then why not just make it obvious with an "Update plot" button?
Kategorien
Mehr zu Migrate GUIDE Apps finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!