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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4520|回復: 0
打印 上一主題 下一主題
收起左側

matlab之代碼運行效率

[復制鏈接]
跳轉到指定樓層
樓主
ID:65608 發表于 2014-9-3 23:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      matlab是一款數學工具,所以使用這個工具,可以幫助解決大多數的科學問題。馬克思說,如果一門科學還沒有用到數學,那它不能稱之為科學(大意是這樣的,哈哈)。這是本人第一次寫博文,文字功底實在有限(不是自謙,我是一個驕傲的人,嘿嘿),請見諒。看過很多專業性的文章,都會涉及很多專業名詞,第一眼就看上去就很牛B,但因此也有了距離感(不敢繼續往下讀)。本人的目的是用淺顯的語言,清晰的結構,與有共同愛好的人,一起溝通學習,一起進步。下面就開始言歸正傳,說說Matlab。



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

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

x = rand(800000, 1);

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

2’clock/etime函數,clock函數,返回一個1*6的double類型的當前時間值,年月日時分秒,etime(t2,t1)用來計算兩個日期向量t1,t2的時間差,單位也是seconds。

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

3' cputime函數,返回matlab啟動以來CPU時間,沒有單位。在程序前后保證cpu時間,然后比較大小。這種方法個人不是很好用,畢竟我們都是生活在標準時鐘下,如果不以秒作為計量單位,有些不知所措的感覺。因為不知道過了多長時間,當前的時間又是什么,是不是很可怕,哈哈···。

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

1’ 把相同的事情一起做了。比如說定義特別大的數組或矩陣,matlab進行動態內容分配和取消時,可能產生內存碎片,導致大量內存閑置,程序必然會耗時,在程序開頭預分配這樣的大數組,則避免了這個問題。

2‘自己手里有的,干嘛還向別人借呢。盡可能使用matlab內部提供的函數,它提供的函數絕對是各種問題的最優算法,那些可都是大師級人物寫出來的,程序肯定是相當高效,有現成的為什么不用呢。基于模型設計,自動生成可執行的嵌入式代碼,也是這樣的道理。

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

今天就寫這么多吧,希望有同志一起交流學習,并繼續關注以后的博文,

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一区二区三区免费 | 黄色精品 | 深爱激情综合 | 国产亚洲精品久久久优势 | 无码一区二区三区视频 | 久久国产精品91 | 午夜一区二区三区在线观看 | 成人区精品一区二区婷婷 | 久久国产精品视频 | 性天堂网| 精品视频亚洲 | 精品视频在线免费观看 | 欧美日韩综合一区 | 久久色视频 | 国产精品视频在线免费观看 | 欧美久久一区 | 日日操夜夜干 | 成人免费淫片aa视频免费 | 天天玩夜夜操 | 精品中文在线 | 一区二区三区国产 | 欧美日韩久| 亚洲视频在线看 | 精品一区二区电影 | 亚洲精品乱码久久久久v最新版 | 尤物在线精品视频 | 美国一级黄色片 | 日韩欧美久久精品 | 99视频在线 | 99视频免费看 | 午夜精品久久久久久久久久久久久 | 午夜影晥 | 欧美日韩成人一区二区 | 一区二区三区在线观看免费视频 | 国产精品久久久久久久久久尿 | 亚洲精品久久久一区二区三区 | 亚洲一区视频在线 | 日本欧美国产在线观看 | 911精品国产 | www四虎影视 | 欧美mv日韩mv国产网站91进入 |