国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Matlab——Timer對(duì)象(多線(xiàn)程編程)

2019-11-11 00:29:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

原文地址:http://www.ilovematlab.cn/thread-258845-1-1.html

今天突然想實(shí)現(xiàn)個(gè)多線(xiàn)程功能,尼瑪,被折磨透了。最終才找到了Timer對(duì)象和 Dynamic關(guān)于Timer的教程。感謝dynamic 大神的無(wú)私奉獻(xiàn)。但由于原文應(yīng)用實(shí)例寫(xiě)的比較特殊,因此單獨(dú)寫(xiě)出一部分總結(jié)和一個(gè)實(shí)例做為自己的貢獻(xiàn)吧。

看了上述資料相信大家對(duì)Timer對(duì)象的各個(gè)屬性和其字段有一定了解,更多的信息可在幫助文件中獲得。這里再總結(jié)一下,仔細(xì)看Timer對(duì)象的句柄我們可以發(fā)現(xiàn),Timer其實(shí)由兩部分構(gòu)成:(一)對(duì)象本身的一些屬性,如ExecutionMode等(二)回調(diào)函數(shù)(Call Back Function)對(duì)于第一點(diǎn),Timer對(duì)象實(shí)質(zhì)上與結(jié)構(gòu)體一樣,只需要掌握每個(gè)屬性及其字段名即可。可見(jiàn)Timer實(shí)現(xiàn)相關(guān)功能主要集中在回調(diào)函數(shù)上。那么與普通函數(shù)相比,回調(diào)函數(shù)有哪些不同呢?1.有默認(rèn)的入?yún)bj和event。這一點(diǎn)一定要注意,在編寫(xiě)回調(diào)參數(shù)時(shí)一定要在函數(shù)名末尾加(obj,event),否則出錯(cuò)。2.當(dāng)有其他入?yún)r(shí),函數(shù)調(diào)用形式發(fā)生變化,需寫(xiě)在同一元胞數(shù)組中。這兩點(diǎn)詳見(jiàn)Dynamic帖子第三部分,這里僅僅予以強(qiáng)調(diào)。接下來(lái)我將試圖以一個(gè)例子,用最最直白的語(yǔ)言告訴大家,尼瑪,這玩意到底怎么用。這是一個(gè)畫(huà)圓的腳本:alpha=0:pi/20:2*pi;%角度[0,2*pi]R=2;%半徑x=R*cos(alpha);y=R*sin(alpha);plot(x,y,'o-') %畫(huà)圖axis equal %平衡坐標(biāo)軸那么如果我想做一個(gè)動(dòng)畫(huà),讓這個(gè)圓每隔一段時(shí)間畫(huà)一點(diǎn)點(diǎn),應(yīng)該怎么畫(huà)呢?這無(wú)疑要用到多線(xiàn)程控制。及我們介紹的Timer 對(duì)象。首先將上述腳本改編成回調(diào)函數(shù)TimeFcn:(本例中取名為CircleTask)function CircleTask(obj,event)event_time = datestr(event.Data.time);   %使用event對(duì)象的data的time屬性獲得系統(tǒng)當(dāng)前時(shí)間,并轉(zhuǎn)換成字符串d=event_time(19:20);   %由于本身保存的是年月日小時(shí)分鐘秒,但我只需要秒的數(shù)據(jù),因此單獨(dú)取出d=str2double(d); %將字符串轉(zhuǎn)換成數(shù)字alpha=0:pi/20:pi/20*d;%角度[0,2*pi]ud=obj.UserData;  %使用obj對(duì)象的UserData屬性傳參R=ud;%半徑x=R*cos(alpha);y=R*sin(alpha);plot(x,y,'o-')axis equal以上就是整個(gè)回調(diào)函數(shù),將其保存并添加路徑。Timer對(duì)象的調(diào)用腳本為:t=timer('Name','CircleTimer',...'TimerFcn',@CircleTask,...'Period',1,...'ExecutionMode','fixedspacing');%本句解釋成中文就是:%t= timer(計(jì)時(shí)器名字是啥?,叫CircleTimer,要輸入的TimerFcn回調(diào)函數(shù)是啥? ,%用CircleTask這個(gè)函數(shù),每次隔多久運(yùn)行?,一秒,%執(zhí)行時(shí)間間隔的模式是什么?,上次執(zhí)行完畢到這次執(zhí)行計(jì)時(shí));ud=3;t.UserData=ud;start(t);以上代碼全部復(fù)制黏貼進(jìn)command window按回車(chē)即可結(jié)束時(shí)運(yùn)行: stop(t);在這里我想說(shuō)明我回調(diào)函數(shù)前四步為何那么麻煩:由于matlab本身保存的double型時(shí)間包含年月日小時(shí)分鐘秒這些信息,而我需要的僅僅是“秒”這一信息,因此不得不先將matlab的double型時(shí)間轉(zhuǎn)換成文字,讀取秒后再轉(zhuǎn)換成數(shù)值。如果大家有更好的方法請(qǐng)務(wù)必要告訴我
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 水城县| 资源县| 四平市| 政和县| 金寨县| 浑源县| 西吉县| 新乡县| 怀化市| 额敏县| 新河县| 榆树市| 迁安市| 高陵县| 收藏| 深水埗区| 南昌市| 綦江县| 桑植县| 安平县| 罗甸县| 自治县| 新田县| 瑞丽市| 宝山区| 芦溪县| 崇州市| 西乌| 武陟县| 平南县| 四川省| 临颍县| 电白县| 邹城市| 敦化市| 雷波县| 黑山县| 岑溪市| 蕉岭县| 拜城县| 大兴区|