应用hold on和pause 来解决,设定pause的时间参数大小调整画图速率
clc
hold off
t=0m=0
t1=[0 0.1] %要构成序列
x=-1.5*pi
axis([x x+2*pi -1.5 1.5])
grid on
for i=1:100
hold on
t=0.1*i %下一个点
m=t-floor(t)
t1=t1+0.1%下一段线(组)
m1=[sin(t1)cos(t1)]
p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5)
x=x+0.1
axis([x x+2*pi -1.5 1.5])
pause(0.1)
end
前段时间的一个问题【matlab gui 循环计算过程实现暂停和继续计算】(编号426631696194936852)是题主问的吧?
由于度娘弱智又恶心的过滤机制,后续的交流一直不顺畅(我试图通过评论说明多次被删,也看到多次有评论提醒,但打开却看不到),现把代码上传到这里。
基本做法是,在进行循环之前,加上以下几句:
fig=gcf figure(fig)setappdata(fig,'Disu_Pause',0)
set(fig,'WindowButtonDownFcn','setappdata(gcbf,''Disu_Pause'',~getappdata(gcbf,''Disu_Pause''))')
然后,在每个循环体的最里层的最前面,加上
% 通过获取自定义的数据Disu_Pause判断是否暂停;关闭窗口则退出try
while true
if ~getappdata(fig,'Disu_Pause')
break
else
pause(0.01)
end
end
catch me
return
end
基本思想:
1、通过自定义窗口的应用数据避免使用全局变量;
2、设置窗口的WindowButtonDownFcn回调函数在点击鼠标时改变应用数据;
3、在每个循环中,如果状态为pause,则利用形式上的死循环进行等待(每次0.01秒,是系统时钟的精度),如果不是状态,则退出等待的循环体;
4、用try-catch结构,在关闭窗口时返回(即退出程序)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)