2012-12-07 86 views
1

我嘗試了零(1500 * 64),但它表示「超出了程序允許的最大變量大小」。
但[C,MAXSIZE] = COMPUTER返回MAXSIZE = 2.1475e + 009
那麼爲什麼它不工作?此外,在嘗試在Matlab命令行上發佈這個命令幾次後,我嘗試了從零(500 * 64)到零(1500 * 64)的所有內容以找到允許的最大值,並且有時返回「允許的最大可變大小該程序已超出。「爲500 * 64,有時返回「內存不足」。錯誤。這可能是什麼原因?這就是所述存儲器命令返回:Matlab中數組的最大尺寸

最大可能數組:486 MB(5.094e + 008字節)*內存 適用於所有數組:1436 MB(1.506e + 009字節)**內存使用 由MATLAB:353 MB(3.697e + 008字節)的物理內存 (RAM):3070 MB(3.219e + 009字節)

  • 受可用的連續虛擬地址空間的限制。 **受限於可用的虛擬地址空間。 [U,S] =存儲器的

輸出

[U,S] =存儲器

U =

MaxPossibleArrayBytes: 509411328 
MemAvailableAllArrays: 1.5057e+009 
     MemUsedMATLAB: 369819648 

S =

VirtualAddressSpace: [1x1 struct] 
     SystemMemory: [1x1 struct] 
    PhysicalMemory: [1x1 struct] 

如何根據這些信息來計算我允許的最大大小,無論是從元素的nuber還是佔用的字節總數?

回答

3

命令

x = zeros(1500*64); 

嘗試創建雙精度零,每面96000層的元件,需要73千兆字節的方陣。

我懷疑要使用

x = zeros(1500,64); 

這產生一個1500通過-64陣列雙精度零的,需要的存儲器0.8兆字節。

+0

這無疑是user13267所犯的錯誤。不是真正的問題,但那不是你的錯。 +1 –

+0

抱歉,我的錯;感謝你的回答 :) – user13267

1

當我谷歌的錯誤消息,第一擊是MathWorks公司的描述性幫助頁面,MATLAB的開發商:

根據這一點,你應該使用computer命令,而不是memory,以瞭解您的MatLab版本支持的最大矩陣大小。

對於「內存不足」錯誤,請使用memory報告的「最大可能數組:486 MB(5.094e + 008字節)」,然後除以數組元素的大小(雙精度爲8字節實際值,這是MatLab默認使用的值)。它的這麼低的原因是由於地址空間碎片,這是memory命令在談到「受連續地址空間限制」時告訴你的。