<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    關于matlab程序運行時間計算方法的思考

    發布時間:2015-10-27 11:04    發布者:designapp
    關鍵詞: matlab
      簡介:在matlab中,為了驗證比較兩個算法直接的效率,我們常常需要計算某段程序的運行時間,而常用的也就是三種方法:
      1、tic和toc命令對;格式如下面一段程序。
      tic;
      a=0;
      for i1=1:100000
      for j1=1:10000
      a=a+1;
      end
      end
      toc;
      tic命令表示開啟一個matlab的計時器,toc則表示停止之前與之對應的tic開啟的計時器,并得到最后的計時結果,上一段程序結果如下:
      Elapsed time is 3.720372 seconds.
      2、clock加etime函數;程序結構如下面一段。
      t1=clock;
      b=0;
      for i2=1:100000
      for j2=1:10000
      b=b+1;
      end
      end
      t2=clock;
      etime(t2,t1)
      其中,clock命令是獲取系統的時間矢量,而etime函數則是計算兩個時間矢量之間的差并以秒單位形式表示。clock作為時間矢量包含了年月日時分秒六個參數,如在matlab單獨執行這一命令可得到:
      >> clock
      ans =
      1.0e+003 *
      2.0120 0.0080 0.0180 0.0140 0.0180 0.0507
      3、cputime命令計算運行時間;
      m1=cputime;
      c=0;
      for i3=1:100000
      for j3=1:10000
      c=c+1;
      end
      end
      m2=cputime;
      m=m2-m1
      cputime命令是獲取matlab自啟動后所占用cpu的運行時間,這里需要詳細介紹下,cputime不是代表matlab的運行時間,而是指matlab占用cpu的時間。大家知道,window系統的多進程管理類似于我們所說的時分復用概念,即cpu完成多進程是通過時間劃分來實現的,這一時刻運行的是進程一,下一時刻運行的是進程二,由于速度非?,所以對于用戶來說看起來就是同時運行的。我們可以做個試驗,在一打開matlab的時候,執行cputime命令得到:
      >> cputime
      ans =
      13.1197
      說明我們matlab打開用了13秒多的時間,大家可以自我感覺下是不是這個時間。
      既然大概的原理我們知道了就可以來比較比較這三者的區別。首先,tic和toc的方法是最優的,這也是matlab幫助中提倡的一種。從精度上來說,第一種方法精度最高,由于是matlab自身的計時器,精度上要比后兩者高,其次是cputime,最低的是clock只有毫秒級的精度。再者,從最接近實際電路運行時間上來說,也是第一種方法最為接近,這點我們仔細分析下。
      我們知道,想得到某段程序在matlab中運行的時間,目的是在于對該程序所實現的算法在實際電路中處理的時間有個大概的估計與比較,所以我們最想要的是它在cpu運行的時間。這一點第二種方法則不太適合了,因為它采用的是系統時間作為計算參數,在這個時間內肯定還有著別的后臺運行程序等。而對于第三種方法,cputime所對應的測量對象是matlab整個程序,而并不是對于我們所測量的這段程序而言(matlab也可以看做是一個編譯器,對我們編寫的m代碼進行編譯,所以它還需要進行著別的操作)。再看看我們的第一種matlab推薦的方法,tic是啟動一個matlab內部的計時器,所以說它也是一種基于cpu時間的計時,而且更重要的是,計時開始的時間是我們設定在代碼前的,可以說tic和toc中間對于matlab來說,大部分時間就是運行這段代碼,所以時間上是最接近實際在電路中運行的時間的。
      關于上面的比較,個人閑來無事做了個實驗:同樣的代碼,將matlab在任務管理器中的進程優先級進行改動,我們可以明顯看到運行時間上的變化。
                                   
    本文地址:http://www.portaltwn.com/thread-154704-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區
    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷