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?
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?
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.
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')
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