您好,登錄后才能下訂單哦!
小編給大家分享一下MATLAB GUI動(dòng)畫演示中暫停功能怎么實(shí)現(xiàn),相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
先簡單說一下思路:
把這個(gè)暫停按鈕設(shè)計(jì)成togglebutton
把變化的步長放到這個(gè)togglebutton
的UserData
中
點(diǎn)擊開始時(shí),執(zhí)行一個(gè)死循環(huán),每次循環(huán)都獲取一下暫停按鈕的UserData
值,把這個(gè)值作為動(dòng)態(tài)顯示數(shù)據(jù)的變化步長。
點(diǎn)擊暫停按鈕時(shí),如果按鈕被按下了則修改其UserData
的值為0,這樣步長就不變了,也就相當(dāng)于把動(dòng)畫暫停了
再次點(diǎn)擊該按鈕時(shí),按鈕彈起,則修改其UserData
的值為原來的步長。
function MainFigure()
clc
close all
% 創(chuàng)建主窗口
hMain = figure('NumberTitle', 'off', 'Name', '暫停功能Demo', 'Menubar', 'none', 'Toolbar', 'none');
% 創(chuàng)建總布局
lay = uiextras.VBox('Parent', hMain);
% 創(chuàng)建子布局1
lay1 = uiextras.HBox('Parent', lay);
% 創(chuàng)建子布局2
lay2 = uiextras.HBox('Parent', lay);
% 創(chuàng)建坐標(biāo)系
axMain = axes('Parent', lay1, 'NextPlot', 'replace', 'XTick', [], 'YTick', []);
lay1.Widths = -1;
% 創(chuàng)建開始按鈕
start_btn = uicontrol('Parent', lay2,...
'Style', 'pushbutton', ...
'String', '開始');
% 創(chuàng)建暫停按鈕
pause_btn = uicontrol('Parent', lay2,...
'Style', 'togglebutton', ...
'String', '暫停', ...
'UserData', 0.001);
% 設(shè)置布局2中的控件的寬度
lay2.Widths = [-1, -1];
% 設(shè)置總布局
lay.Heights = [-1, 32];
% 設(shè)置回調(diào)函數(shù)
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
% 計(jì)算當(dāng)前冪運(yùn)算后的函數(shù)值
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 = '繼續(xù)';
else
this.UserData = 0.001;
this.String = '暫停';
end
end
以上是“MATLAB GUI動(dòng)畫演示中暫停功能怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。