在 MATLAB 運算過程,可以隨時改變每一個矩陣的維度,以容納新的資料。但是每一次增大矩陣的容量時,MATLAB就必須要向電腦的作業系統索取記憶體,因此會造成程式執行效率的降低,而且造成記憶體使用的分散現象(Memory Segmentation),此種由於記憶體的動態配置而造成的分散使用現象,可能導致「實際雖仍有充足的記憶體,但卻未有連續空間以處理較大矩陣」的現象。
基於以上種種原因,若預先知道使用矩陣的維度大小,則最好實施矩陣的預先配置(Pre-allocation),可用的指令有 zeros、ones、cell(用於異值陣列的預先配置)及 struct(用於結構陣列的預先配置)等。例如,欲計算矩陣 x 的每一個元素的平方值並將之儲存於矩陣 y,有兩種作法,如下:
在上述範例中,由於我們使用 y = zeros(1, n) 來預先配置所須矩陣 y,因此程式碼的執行效率快了 20 多倍。
MATLAB程式設計:進階篇