2011-09-07 18 views
6

Powiel możliwe:
MATLAB: maximum pre-allocated size?Matrix w programie MATLAB

Czy istnieje ograniczenie rozmiaru na stworzenie macierzy w programie MATLAB? Jeśli tak, to gdzie mogę znaleźć te informacje?

+0

Istnieją dwie granice: (1) maksymalna liczba elementów dozwolona w tablicy, twardy limit i (2) bajty dostępne dla pojedynczej tablicy. Te liczby są bardzo różne. Aby uzyskać szczegółowe informacje, zobacz inne pytanie i [tę odpowiedź] (http://stackoverflow.com/a/28907084/2778484). – chappjc

Odpowiedz

5

pamięci jest ograniczona w Matlab jedynie ilością pamięci (w tym pamięci wirtualnej) udostępnione mu przez system operacyjny. Macierze są przechowywane w pamięci jako ciągła przestrzeń, więc jeśli macie matrycę, która zajmowałaby 8 GB pamięci, potrzebny byłby jeden duży fragment o pojemności 8 GB, który będzie dostępny w pamięci.

Możesz użyć polecenia memory, aby uzyskać szczegółowe statystyki dotyczące dostępnej pamięci, w tym ilość dostępnej pamięci dostępnej dla pojedynczej macierzy. Na przykład:

> memory 

Maximum possible array:   677 MB (7.101e+008 bytes) * 
Memory available for all arrays: 1601 MB (1.679e+009 bytes) ** 
Memory used by MATLAB:   446 MB (4.681e+008 bytes) 
Physical Memory (RAM):   3327 MB (3.489e+009 bytes) 

    * Limited by contiguous virtual address space available. 
    ** Limited by virtual address space available. 

Aby obliczyć wielkość tablicy, że wartość Maximum possible array odpowiada, wystarczy podzielić przez liczbę bajtów wymaganych przez poszczególnych elementów tablicy. Z dokumentacji memory:

Maksymalna możliwa Array

Maksymalna możliwa Array jest rozmiar największego ciągły blok pamięci darmo. Jako taka jest górną granicą największej pojedynczej macierzy, którą MATLAB może utworzyć w tym momencie.

MATLAB wywodzi się ten numer z mniejszą z dwóch następujących wartości:

* The largest contiguous memory block found in the MATLAB virtual address space 
* The total available system memory 

zobaczyć, jak wiele elementów tablicy liczba ta reprezentuje, podzielić przez liczbę bajtów w klasie tablicy. Na przykład, dla podwójnej tablicy, podziel przez 8. Rzeczywista liczba elementów, które MATLAB może utworzyć, jest zawsze mniejsza niż ta liczba.

Mathworks dostarcza również szczegółową dokumentację, jak uniknąć Out of Memory błędów here.

1

Tak, limit jest ograniczony ilością dostępnej pamięci RAM w urządzeniu. Można to sprawdzić w programie MATLAB za pomocą polecenia

feature('memstats') 
Powiązane problemy