我有一个取决于8个变量的方程式,并且有8个滑块定义每个变量。到目前为止,我已经用按钮开始计算方程式,并且已经绘制了。 我希望GUI在没有按钮的情况下进行计算,每当我更改任何滑块的值时,解决方案会在图中自动更新。 这是我到目前为止使用的代码:
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
T = get(handles.sliderT, 'value');
x0=get(handles.sliderx0,'value');
kSin=get(handles.sliderkSin,'value');
kSigma=get(handles.sliderkSigma,'value');
Omega=get(handles.slideromega,'value');
alpha=get(handles.slideralpha,'value')*180/pi;
t0=get(handles.slidert0,'value');
tspan = [0 50];
xprimefixed = @(t,x) xprime(t,x,T,kSin,kSigma,Omega,alpha,t0);
[t,x] = ode45(xprimefixed, tspan, x0);
plot(handles.axes2, t, x, 'g');
是否有任何机构可以就如何放置代码以消除按钮提出建议? 非常感谢提前。
答案 0 :(得分:0)
当前在按钮回调中的功能是什么计算。
我建议您将pushbutton1_Callback(~,~,handles)
重命名为runODE(handles)
,并在每个滑块的回调结尾添加runODE(handles)
。因此,每个滑块移动都会调用runODE
。
更好的设计方法是让runODE
仅从GUI中读取值,并使用单独的函数接受所有这些值并返回x
和t
,然后您可以在GUI中绘图。因此,您可以轻松使用(并测试)ODE功能,而无需启动GUI,例如,如果您想执行详尽的参数扫描。