久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 4561|回復(fù): 0
收起左側(cè)

matlab之代碼運(yùn)行效率

[復(fù)制鏈接]
ID:65608 發(fā)表于 2014-9-3 23:02 | 顯示全部樓層 |閱讀模式
      matlab是一款數(shù)學(xué)工具,所以使用這個(gè)工具,可以幫助解決大多數(shù)的科學(xué)問(wèn)題。馬克思說(shuō),如果一門(mén)科學(xué)還沒(méi)有用到數(shù)學(xué),那它不能稱(chēng)之為科學(xué)(大意是這樣的,哈哈)。這是本人第一次寫(xiě)博文,文字功底實(shí)在有限(不是自謙,我是一個(gè)驕傲的人,嘿嘿),請(qǐng)見(jiàn)諒。看過(guò)很多專(zhuān)業(yè)性的文章,都會(huì)涉及很多專(zhuān)業(yè)名詞,第一眼就看上去就很牛B,但因此也有了距離感(不敢繼續(xù)往下讀)。本人的目的是用淺顯的語(yǔ)言,清晰的結(jié)構(gòu),與有共同愛(ài)好的人,一起溝通學(xué)習(xí),一起進(jìn)步。下面就開(kāi)始言歸正傳,說(shuō)說(shuō)Matlab。



    Matlab是一個(gè)運(yùn)行程序的平臺(tái),那首先得清楚程序運(yùn)行的基準(zhǔn),也就是時(shí)鐘(這個(gè)跟學(xué)習(xí)單片機(jī)里的時(shí)鐘是一樣的),或者稱(chēng)之為時(shí)間軸。時(shí)鐘頻率當(dāng)然是CPU內(nèi)核頻率(保證在全速運(yùn)行的情況下),這貌似跟一個(gè)Programmer無(wú)關(guān),而更加關(guān)心的可能是‘代碼實(shí)際執(zhí)行的時(shí)間’和‘如何提交代碼效率’。matlab已經(jīng)提供了計(jì)時(shí)函數(shù)(在MCU里叫做計(jì)時(shí)器,本人從事過(guò)嵌入式,所以不免將其對(duì)比學(xué)習(xí),這也不失為一種好的方法,哈哈)。

  1’tic/toc函數(shù),tic用在程序的開(kāi)始,作用是啟動(dòng)一個(gè)計(jì)時(shí)器,實(shí)際是保存了當(dāng)前的時(shí)間值,toc放在程序尾部,表示終止計(jì)數(shù)器,返回從計(jì)時(shí)器開(kāi)啟到此刻的流逝時(shí)間(elapsed time).這就可以測(cè)量代碼試行時(shí)間,注意返回值單位已換算成seconds(秒);

x = rand(800000, 1);

t1 = tic;  fft(x);  toc(t1)             % Recommended
Elapsed time is 0.097665 seconds.

2’clock/etime函數(shù),clock函數(shù),返回一個(gè)1*6的double類(lèi)型的當(dāng)前時(shí)間值,年月日時(shí)分秒,etime(t2,t1)用來(lái)計(jì)算兩個(gè)日期向量t1,t2的時(shí)間差,單位也是seconds。

t = clock;  fft(x);  etime(clock, t)
ans =
    0.1250

3' cputime函數(shù),返回matlab啟動(dòng)以來(lái)CPU時(shí)間,沒(méi)有單位。在程序前后保證cpu時(shí)間,然后比較大小。這種方法個(gè)人不是很好用,畢竟我們都是生活在標(biāo)準(zhǔn)時(shí)鐘下,如果不以秒作為計(jì)量單位,有些不知所措的感覺(jué)。因?yàn)椴恢肋^(guò)了多長(zhǎng)時(shí)間,當(dāng)前的時(shí)間又是什么,是不是很可怕,哈哈···。

以上就是測(cè)量代碼執(zhí)行時(shí)間的幾種方法,推薦是使用第一種方法,簡(jiǎn)單、準(zhǔn)確。如果有更好的方法,歡迎提出來(lái),一起學(xué)習(xí)。關(guān)于'如何提高代碼效率',寫(xiě)出優(yōu)質(zhì)的代碼,這是一個(gè)非常值得研究的問(wèn)題了,也是一個(gè)優(yōu)秀的程序員一生都在思考的。在這里我提升到幾條原則,與其說(shuō)明哪條程序該怎么寫(xiě),效率更高,這樣永遠(yuǎn)也說(shuō)不完的話題,還不如提煉出實(shí)用的編程原則,作為編寫(xiě)程序時(shí)的方向指導(dǎo)。哲學(xué)家不就是這樣嗎,用幾句精髓的句子,概括了蕓蕓眾生苦苦尋覓的生活,驀然回首,那人已在燈火闌珊處。

1’ 把相同的事情一起做了。比如說(shuō)定義特別大的數(shù)組或矩陣,matlab進(jìn)行動(dòng)態(tài)內(nèi)容分配和取消時(shí),可能產(chǎn)生內(nèi)存碎片,導(dǎo)致大量?jī)?nèi)存閑置,程序必然會(huì)耗時(shí),在程序開(kāi)頭預(yù)分配這樣的大數(shù)組,則避免了這個(gè)問(wèn)題。

2‘自己手里有的,干嘛還向別人借呢。盡可能使用matlab內(nèi)部提供的函數(shù),它提供的函數(shù)絕對(duì)是各種問(wèn)題的最優(yōu)算法,那些可都是大師級(jí)人物寫(xiě)出來(lái)的,程序肯定是相當(dāng)高效,有現(xiàn)成的為什么不用呢。基于模型設(shè)計(jì),自動(dòng)生成可執(zhí)行的嵌入式代碼,也是這樣的道理。

3’借力用力。matlab語(yǔ)言是為矩陣操作而設(shè)計(jì),這方面有獨(dú)到的優(yōu)勢(shì),但也不是萬(wàn)能,可以說(shuō)任何一種語(yǔ)言都是為解決某一需求而孕育的,不是為了拯救世界和平,消除所有問(wèn)題。自己不擅長(zhǎng)的事情,就交給別人去做吧。MEX 工具可編譯C、C++、Fortran等多種計(jì)算語(yǔ)言,生成MEX文件(.mexw32/.mexw64格式的文件),類(lèi)似windows 的dll文件,能夠動(dòng)態(tài)鏈接到程序中。比如循環(huán)操作,用C編寫(xiě)豈不是小兒科。

今天就寫(xiě)這么多吧,希望有同志一起交流學(xué)習(xí),并繼續(xù)關(guān)注以后的博文,

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线免费 | 欧美视频精品 | 色爱av| 久久久久久成人 | 亚洲免费福利视频 | h片免费观看 | 在线观看视频一区二区三区 | 婷婷综合视频 | 少妇福利视频 | 国产成人亚洲精品自产在线 | 亚洲免费看片 | 亚洲激情视频在线观看 | 一区二区免费 | 亚洲成人动漫在线观看 | 国产福利一区二区三区 | 久久视频这里只有精品 | 天堂成人av | 青青草伊人网 | 天天曰天天操 | 在线91 | 成人爽a毛片一区二区免费 亚洲午夜在线观看 | 久草精品视频在线看网站免费 | 97在线超碰| 中文在线免费看视频 | 亚洲综合免费 | 日韩一区在线播放 | 91手机看片 | 成年人午夜视频 | 婷婷久久久 | 国产高清久久 | 亚洲欧美网站 | 中文字幕高清在线 | 六月激情婷婷 | 18在线观看免费入口 | 韩国精品一区二区 | 国产激情网站 | 中文字幕伊人 | 国产精品高潮呻吟久久 | 亚洲精品一区二区三区精华液 | 亚洲精品在线观看视频 | 日韩在线免费播放 |