资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

MATLABGUI动画演示中暂停功能怎么实现

小编给大家分享一下MATLAB GUI动画演示中暂停功能怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

做网站、成都网站建设,成都做网站公司-创新互联已向上1000家企业提供了,网站设计,网站制作,网络营销等服务!设计与技术结合,多年网站推广经验,合理的价格为您打造企业品质网站。

先简单说一下思路:

  • 把这个暂停按钮设计成togglebutton

  • 把变化的步长放到这个togglebuttonUserData

  • 点击开始时,执行一个死循环,每次循环都获取一下暂停按钮的UserData值,把这个值作为动态显示数据的变化步长。

  • 点击暂停按钮时,如果按钮被按下了则修改其UserData的值为0,这样步长就不变了,也就相当于把动画暂停了

  • 再次点击该按钮时,按钮弹起,则修改其UserData的值为原来的步长。


function MainFigure()
clc
close all
% 创建主窗口
hMain = figure('NumberTitle', 'off', 'Name', '暂停功能Demo', 'Menubar', 'none', 'Toolbar', 'none');

% 创建总布局
lay = uiextras.VBox('Parent', hMain);
% 创建子布局1
lay1 = uiextras.HBox('Parent', lay);
% 创建子布局2
lay2 = uiextras.HBox('Parent', lay);

% 创建坐标系
axMain = axes('Parent', lay1, 'NextPlot', 'replace', 'XTick', [], 'YTick', []);
lay1.Widths = -1;

% 创建开始按钮
start_btn = uicontrol('Parent', lay2,...
   'Style', 'pushbutton', ...
   'String', '开始');

% 创建暂停按钮
pause_btn = uicontrol('Parent', lay2,...
   'Style', 'togglebutton', ...
   'String', '暂停', ...
   'UserData', 0.001);

% 设置布局2中的控件的宽度
lay2.Widths = [-1, -1];

% 设置总布局
lay.Heights = [-1, 32];

% 设置回调函数
start_btn.Callback = {@callback_start_btn, pause_btn, axMain};
pause_btn.Callback = {@callback_pause_btn};

end


function callback_start_btn(~, ~, pause_btn, ax)
x = -2 : 0.01 : 2;
p = 0.001; % 幂的初始值
while true
   if p > 4 || p < 0
       pause_btn.UserData = -pause_btn.UserData;
   end
       
   % 获取幂的变化步长
   p = p + pause_btn.UserData
   % 计算当前幂运算后的函数值
   y = abs(x).^p;
   plot(x, y, 'Parent', ax);
   pause(0.001)
   drawnow
end

end

function callback_pause_btn(this, ~)
if this.Value == 1
   this.UserData = 0;
   this.String = '继续';
else
   this.UserData = 0.001;
   this.String = '暂停';
end
end

以上是“MATLAB GUI动画演示中暂停功能怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


网站标题:MATLABGUI动画演示中暂停功能怎么实现
当前链接:http://cdkjz.cn/article/ijigcj.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220