Cuáles son todas las formas posibles y eficientes de memoria para almacenar múltiples imágenes de tamaño fijo y tipos de datos en Matlab?
stoy tratando de comprender las formas más eficientes de memoria para almacenar múltiples imágenes del mismo tamaño en Matlab.
Todo lo que escribo aquí se basa en mi poco conocimiento y puede no ser exacto.
asta ahora, sé que podemos leer imágenes en conjuntos de celdas, conjuntos multidimensionales, estructuras.
num_imgs = 100;
nrow = 512;
ncol = 512;
cellArray = cell(1,num_imgs);
cellArray(1,:) = {zeros(nrow,ncol,'logical')};
threeDArray = zeros(nrow,ncol,num_imgs,'logical');
structArray(1:num_imgs ) = struct('Image', zeros(nrow,ncol,'logical'));
whos
Name Size Bytes Class Attributes
cellArray 1x100 26225600 cell
ncol 1x1 8 double
nrow 1x1 8 double
num_imgs 1x1 8 double
structArray 1x100 26225664 struct
threeDArray 512x512x100 26214400 logical
De estothreeDArray
es mejor ya que no necesita ningún puntero para matrices consecutivas.
mientras que,cellArray
es el segundo mejor, ya que solo necesita punteros para cada conjunto de 8 bytes adicionales (es decir, 100 * 8 bytes más).
Finalmente, creo que las estructuras necesitan un poco más dependiendo de la etiqueta de cada campo.
Ahora
¿Hay alguna otra forma posible de hacer esto?
Cuál es la forma más eficiente de memoria para leer, escribir y otros parámetros importantes que afectan el rendimiento de su código?
Entiendo que las celdas tienen punteros, por lo que cada elemento encellArray
no tiene que almacenarse contiguamente en la memoria, mientras quethreeDArray
necesita memoria contigua.
¿Alguien puede explicar este tipo de factores que afectan el rendimiento en detalle?