2011-09-07 30 views
6

Duplicar posibles:
MATLAB: maximum pre-allocated size?matriz en MATLAB

¿Hay una limitación de tamaño en la creación de una matriz en MATLAB? Si es así, ¿dónde puedo encontrar esta información?

+0

Existen dos límites: (1) máximo número de elementos permitidos en una matriz, un límite estricto y (2) bytes disponibles para una sola matriz. Estos números son muy diferentes. Vea la otra pregunta y [esta respuesta] (http://stackoverflow.com/a/28907084/2778484) para más detalles. – chappjc

Respuesta

5

memoria es limitada en Matlab sólo por la cantidad de memoria (incluyendo la memoria virtual) que le han facilitado por el sistema operativo. Las matrices se almacenan en la memoria como espacio contiguo, por lo que si tiene una matriz que ocuparía 8 GB de memoria, necesitaría una gran cantidad de 8 GB para que esté disponible en la memoria.

Puede usar el comando memory para proporcionar estadísticas detalladas sobre la memoria disponible para usted, incluida la cantidad de memoria contigua disponible para una sola matriz. Por ejemplo:

> 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. 

Para calcular el tamaño de la matriz que el valor corresponde a Maximum possible array, simplemente divida por el número de bytes requeridos por cada elemento de la matriz. Desde el memory documentación:

posible máxima de matriz

máximo de la matriz Posible es el tamaño del mayor bloque de memoria libre contigua. Como tal, es un límite superior en la matriz más grande que MATLAB puede crear en este momento.

MATLAB deriva este número desde el más pequeño de los dos valores siguientes:

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

para ver cuántos elementos de la matriz, este número representa dividir por el número de bytes de la clase Array. Por ejemplo, para una matriz doble, divida por 8. La cantidad real de elementos que MATLAB puede crear es siempre menor que este número.

Mathworks también proporciona documentación detallada sobre cómo evitar errores here.

1

Sí, está limitado por la cantidad de RAM disponible en su máquina. Puede inspeccionar esta en MATLAB usando el comando

feature('memstats') 
Cuestiones relacionadas