切換到寬版
  • 廣告投放
  • 稿件投遞
  • 繁體中文
    • 8689閱讀
    • 3回復(fù)

    [分享]讓Matlab高效率運(yùn)行的技巧 [復(fù)制鏈接]

    上一主題 下一主題
    在線cyqdesign
     
    發(fā)帖
    28752
    光幣
    97058
    光券
    0
    只看樓主 倒序閱讀 樓主  發(fā)表于: 2008-10-17
    關(guān)鍵詞: Matlab
    用過Matlab的人都知道,Matlab是一種解釋性語(yǔ)言,存在計(jì)算速度慢的問題,為了提高程序的運(yùn)行效率,matlab提供了多種實(shí)用工具及編碼技巧。 J<5vs3[9  
    6M<mOhp@}n  
    1. 循環(huán)矢量化 vU \w3  
    !Lg}q!*%>V  
      Matlab是為矢量和矩陣操作而設(shè)計(jì)的,因此,可以通過矢量化方法加速M(fèi)文件的運(yùn)行。矢量化是指將for循環(huán)和while循環(huán)轉(zhuǎn)換為等價(jià)的矢量或矩陣操作。下面給出一個(gè)循環(huán)的例子: @|\s$L  
    ~qLhZR\g^  
    i=0; y?R <g^A  
    !+*?pq  
    for n = 0:0.1:1000 {C0OrO2:  
    P`IMvOs&  
        i=i+1; b]s1Q ]V  
    QLpTz"H  
        y(i)=cos(n); T h- vG  
    "` ?W u  
    end On96N|  
    ?w5nKpG#RI  
    那么我們可以矢量化為: \ \mO+N47i  
    +DV6oh  
    n= 0:0.1:1000; `aWwF} +Y  
    *V@MAt  
    y=cos(n); -) v p&-  
    ->"h5h  
    我們可以用tic和toc函數(shù)來(lái)查看上述各代碼運(yùn)行的時(shí)間,采用for循環(huán)的程序0.39秒(具體時(shí)間和計(jì)算機(jī)配置有關(guān)),而矢量化后幾乎耗時(shí)為0。 DRmh(T  
    B|q3;P  
    2. 給數(shù)組或矩陣預(yù)分配內(nèi)存 6'sFmC  
    W*/s4 N  
        特別是使用大型數(shù)組或矩陣時(shí),Matlab進(jìn)行動(dòng)態(tài)內(nèi)存分配和取消時(shí),可能會(huì)產(chǎn)生內(nèi)存碎片,這將導(dǎo)致大量閑置內(nèi)存產(chǎn)生,預(yù)分配可通過提前給大型數(shù)據(jù)結(jié)構(gòu)預(yù)約足夠空間來(lái)避免這個(gè)問題。 ID