我有一個MATLAB GUI和一個將數據寫入文件的單獨應用程序。 我想讓我的MATLAB GUI定期檢查文件,並在更改時更新GUI。如何在後臺更新MATLAB GUI?
在Java中,我會使用SwingUtils.Timer(sp?)對象來做這樣的事情。 MATLAB有定時器功能嗎?我可以編寫一個java類,並按照我的意思去做,但是想要一個快速和骯髒的演示,最好是純MATLAB。
我有一個MATLAB GUI和一個將數據寫入文件的單獨應用程序。 我想讓我的MATLAB GUI定期檢查文件,並在更改時更新GUI。如何在後臺更新MATLAB GUI?
在Java中,我會使用SwingUtils.Timer(sp?)對象來做這樣的事情。 MATLAB有定時器功能嗎?我可以編寫一個java類,並按照我的意思去做,但是想要一個快速和骯髒的演示,最好是純MATLAB。
您可以使用TIMER函數在MATLAB中創建計時器對象。例如,這創建了一個計時器對象應執行函數myFcn一旦定時器後每10秒啓動:
timerObject = timer('TimerFcn',@myFcn,'ExecutionMode','fixedRate',...
'Period',10.0);
定時器啓動和使用函數START和STOP停止。您還應該始終記住,在完成使用後,請使用DELETE將其刪除。您可以在MATLAB documentation中找到有關使用定時器的更多信息。
值得注意的是,如果您想要更新GUIDE GUI中的軸對象,則需要額外的一點「欺騙」才能使其工作。您必須更改GUIDE中軸對象的HandleVisibility屬性,或者您必須明確獲取該句柄。要做到這一點,如下更改timerObject建設(這是假設你GUIDE軸窗口產生的GUI被稱爲axes1):
timerData.axes = handles.axes1;
timerData.n = 1; % some state needed for the plots.
timerObject = timer('TimerFcn',@myFcn,...
'ExecutionMode','fixedRate',...
'Period',10.0,...
'UserData', timerData);
然後在myFcn
,我們需要參考的軸對象。具體來說:
function [] = myFcn(timerObj, event)
timerData = get(timerObj, 'UserData');
plot(timerData.axes, (1:n)/n, sin(20*2*pi*(1:n)/n));
line((1:n)/n, cos(20*2*pi*(1:n)/n, 'Parent', timerData.axes);
timerData.n = timerData.n + 1;
set(timerObj, 'UserData', timerData);
end