필터 지우기
필터 지우기

GUI use inputs as min and max for a function question? - Homework

조회 수: 1 (최근 30일)
Nora
Nora 2013년 11월 29일
댓글: Image Analyst 2013년 12월 3일
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???
  댓글 수: 2
Nora
Nora 2013년 12월 3일
Edited .m and .fig is attached. The lim still doesn't work.
What is wrong with the GUI???
Nora
Nora 2013년 12월 3일
Attached files to the question above:

댓글을 달려면 로그인하십시오.

답변 (2개)

Image Analyst
Image Analyst 2013년 11월 29일
편집: Image Analyst 2013년 11월 29일
Try xlim() and ylim().

Nora
Nora 2013년 11월 30일
Referencing
fplot('cos', [0, 1]);
I am only changing the x values [XMIN XMAX] by the user. I was wondering how I can have the user input adjust the graph accordingly by changing the text on the GUI?
  댓글 수: 8
Nora
Nora 2013년 12월 3일
I tried to change the MIN and MAX and I got this update.
Error using feval
Undefined function 'edit2_Callback' for
input arguments of type 'struct'.
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in costext (line 17)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)costext('edit2_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Error using feval
Undefined function 'btnUpdate_Callback' for
input arguments of type 'struct'.
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in costext (line 17)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)costext('btnUpdate_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Error using feval
Undefined function 'edit2_Callback' for
input arguments of type 'struct'.
Error in gui_mainfcn (line 96)
feval(varargin{:});
Error in costext (line 17)
gui_mainfcn(gui_State, varargin{:});
Error in
@(hObject,eventdata)costext('edit2_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating uicontrol Callback
Also, I am trying to do this without using an update button, and just have the MIN and MAX change when the user presses enter.
???
Image Analyst
Image Analyst 2013년 12월 3일
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?

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Interactive Control and Callbacks에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by