Matlab练习:timer(定时器3)
前言
同學(xué)畢設(shè)做信號辨識,需要嚴格設(shè)計時鐘信號,對于信號的精確產(chǎn)生有很高的需求,因此使用matlab的timer對象來實現(xiàn)該需求,本著學(xué)一個技術(shù)就要學(xué)精的原則,深入了解了matlab timer背后的實現(xiàn)原理,現(xiàn)將學(xué)習(xí)成果分享給大家。
主體
任務(wù)描述如下:
1多次執(zhí)行回調(diào)函數(shù):
顯示這個事件和在計時器開始運作,運行,和結(jié)束時的日期/時間產(chǎn)出。計時器回調(diào)函數(shù)會以2秒的間隔執(zhí)行三次。回調(diào)函數(shù)傳遞的前兩條語句是定時器對象和事件結(jié)構(gòu)的句柄。
事件結(jié)構(gòu)有兩個成員:類型定義了回調(diào)函數(shù)的來源,數(shù)據(jù)則是一個包含事件什么時候發(fā)生的日期時間的向量。
輸出如下:
StartFcn executed 25-May-2018 20:12:16.344 TimerFcn executed 25-May-2018 20:12:19.345 TimerFcn executed 25-May-2018 20:12:21.345 TimerFcn executed 25-May-2018 20:12:23.345 StopFcn executed 25-May-2018 20:12:23.351同樣記得刪除這個定時器:
delete(t)
2定義一個通用的回調(diào)函數(shù)
創(chuàng)建一個定時器對象來提示你在接下來的8小時中每10分鐘學(xué)習(xí)30秒。
在一個名為createErgoTimer.m的文件里面創(chuàng)建一個返回定時器的函數(shù)。
在這個文件里包含著三個局部函數(shù)來處理定時器開始,執(zhí)行和結(jié)束任務(wù)。
代碼如下:
使用起始延遲函數(shù)允許定時器在沒有指引你立即休息的情況下啟動計時器。
將執(zhí)行模式設(shè)置為固定空間,因此在一個時間函數(shù)執(zhí)行完后將是一個固定的耗散周期10分鐘30秒。這會允許你在下個10分鐘的間隔之間有30秒的休息時間。
在之間新建的createErgo.m文件中,增加一個本地函數(shù)來處理對應(yīng)與定時器開始的任務(wù)。作為默認,定時器對象將它自己和事件數(shù)據(jù)傳遞給回調(diào)函數(shù)。這個函數(shù)忽略事件數(shù)據(jù)
function ergoTimerStart(mTimer,~) secondsPerMinute = 60; secondsPerHour = 60*secondsPerMinute; str1 = 'Starting Ergonomic Break Timer. '; str2 = sprintf('For the next %d hours you will be notified',...round(mTimer.TasksToExecute*(mTimer.Period + ...mTimer.UserData)/secondsPerHour)); str3 = sprintf(' to take a %d second break every %d minutes.',...mTimer.UserData, (mTimer.Period - ...mTimer.UserData)/secondsPerMinute); disp([str1 str2 str3]) end增加一個局部函數(shù)來處理和執(zhí)行和任務(wù)相關(guān)的定時器。定義的定時任務(wù)回調(diào)函數(shù)應(yīng)該告訴你應(yīng)該休息30秒。
function takeBreak(mTimer,~) disp('Take a 30 second break.') end增加一個局部函數(shù)來處理和計時器停止相關(guān)的任務(wù)。
function ergoTimerCleanup(mTimer,~) disp('Stopping Ergonomic Break Timer.') delete(mTimer) end從內(nèi)存中刪除計時器任務(wù)。
在命令行輸入createErgoTimer函數(shù)來創(chuàng)建和開始一個定時器。
運行結(jié)果
Starting Ergonomic Break Timer. For the next 8 hours you will be notified to take a 30 second break every 10 minutes.Take a 30 second break.周期休息定時器。
開始周期休息定時器。在接下來的八個小時中每10分鐘你會被提醒一次休息30秒。
你可以讓這個定時器運行八小時也可以手動停止它。包括在內(nèi)存里面消除這個定時器。
停止周期間隔定時器。
參考:
mathwork官方文檔
總結(jié)
以上是生活随笔為你收集整理的Matlab练习:timer(定时器3)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 调用带返回多个结果集的方法,PH
- 下一篇: html5 注册协议弹出层,js制作带有