Quais são as formas possíveis e eficientes de memória para armazenar várias imagens de tamanho fixo e tipos de dados no Matlab?

Estou tentando entender as maneiras mais eficientes de memória para armazenar várias imagens do mesmo tamanho no Matlab.

Tudo o que escrevo aqui é baseado no meu pouco conhecimento e pode não ser preciso.

Até agora, eu sei que podemos ler imagens em matrizes de células, matrizes multidimensionais, estruturas.

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'));

quem é

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       

A partir dissothreeDArray é melhor, pois não precisa de ponteiros para matrizes consecutivas.

enquanto que,cellArray é o segundo melhor, pois só precisa de ponteiros para cada matriz de 8 bytes extras (ou seja, 100 * 8 bytes mais).

Finalmente, as estruturas precisam de um pouco mais, dependendo da tag de cada campo, eu acho.

Agora,

Existem outras maneiras possíveis de fazer isso.

Qual é a maneira mais eficiente de memória para leitura, gravação e outros parâmetros importantes que afetam o desempenho do seu código?

Eu entendo que as células têm ponteiros para que cada elementocellArray não precisa ser armazenado contiguamente na memória, enquantothreeDArray precisa de memória contígua.

Alguém pode explicar esse tipo de fatores que afetam o desempenho em detalhes?

questionAnswers(1)

yourAnswerToTheQuestion