Una pregunta que suele surgir a la hora de trabajar con vectores o matrices es cuál es el número máximo de elementos que puedo guardar. Un valor que depende de la memoria libre. No la memoria total del sistema. En Matlab existe la función memory()
con la que es posible obtener la memoria libre, aunque solo en Windows. Función que se puede emplear para calcular cuál es el número máximo de elementos en Matlab que se pueden guardar en memoria.
La función memory()
de Matlab
Al escribir la función memory en una sesión de Matlab obtendremos una respuesta como la siguiente:
>> memory() Maximum possible array: 12815 MB (1.344e+10 bytes) * Memory available for all arrays: 12815 MB (1.344e+10 bytes) * Memory used by MATLAB: 1156 MB (1.212e+09 bytes) Physical Memory (RAM): 8192 MB (8.589e+09 bytes) * Limited by System Memory (physical + swap file) available.
En la que se puede ver la memoria máxima que hay disponible para un array, la memoria disponible para todos los arrays, la memoria usada actualmente por el Matlab y la memoria física total disponible. Si queremos saber cuál es el número máximo de elementos que podemos guardar en un vector nos debemos fijar en el primer número y dividirlo por el tamaño de un elemento. En el caso de número reales el tamaño es 8.
Calcular el número máximo de elementos en Matlab
Los valores que se han obtenido por pantalla se pueden cargar en una variable. Variable que contendrá una estructura cuya propiedad MaxPossibleArrayBytes
es la que nos interesa. Así, se puede usar el siguiente código para ver el número máximo de elementos.
bytes = memory(); max_num = floor(bytes.MaxPossibleArrayBytes/8);
En el ejemplo de arriba el número máximo de elementos que se pueden cargar en un único vector son aproximadamente 1.700 millones. Este valor es una cota superior, por lo que es recomendable no intentar llegar a ese límite.
Conclusiones
Si queremos saber cuánta memoria nos queda en nuestra sesión de Matlab este truco nos puede ayudar. Además de indicarnos el tamaño aproximado de las matrices que podemos cargar.
Imagen de Theodor Moise en Pixabay