GUI中的MATLAB Timer不更新绘图

时间:2017-05-23 10:10:27

标签: matlab plot timer matlab-guide

我正在尝试在MATLAB指南中制作一行的动画。我正在尝试使用计时器来更新情节。

以下是我的计时器代码。

handles.startPos = -2.5;
handles.line_init =0;
cla(handles.axes1);
guidata(hObject, handles);
handles.timer = timer('Period', 1.0 / 2, ...
                          'TimerFcn', @(~,~)update_line(handles.startPos,hObject), ...
                          'ExecutionMode', 'fixedRate');

以下是我的 update_line 功能

的代码
function p = update_line(x_cor,hObject)
handles = guidata(hObject);
if (handles.line_init==1)
    delete(handles.line)
end
axes(handles.axes1)
p = plot3([handles.startPos handles.startPos+0.5],[0 0],[0 0],'r','LineWidth',4);
handles.line = p;
handles.line_init=1;
disp(handles.startPos)
handles.startPos = handles.startPos+0.5;
guidata(hObject,handles)

变量“handles.startPos”正在更新。但情节没有得到更新。它只显示带有“handles.startPos”的初始值的图,而不是更新的图。但是如果我再次停止并启动计时器,则使用“handles.startPos”的新值更新绘图。但是,它再次没有得到更新,它保持不变。

1 个答案:

答案 0 :(得分:0)

你是否正在启动计时器?

start(handles.timer)

此外,代码不会按原样运行 - handle.axes1设置为什么?

如果我使用以下内容,它适用于我:

 handles.axes1 = 0
 handles.startPos = -2.5;
 handles.line_init =0;
 cla(handles.axes1);
 hObject = figure
 handles.axes1 = gca
 guidata(hObject, handles);
 handles.timer = timer('Period', 1.0 / 2, ...
                      'TimerFcn', @(~,~)update_line(handles.startPos,hObject), ...
                      'ExecutionMode', 'fixedRate');
 start(handles.timer)
相关问题