Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

El cultivo de matrices usando functionmatfile

Al escribir un gran número de valores grandes en un archivo MAT, el tamaño del archivo aumenta de forma no incremental. Se espera que este método de aumento. Para minimizar el número de veces que el archivo debe crecer y garantizar un rendimiento óptimo, asigne los valores iniciales a la matriz antes de rellenarlo con datos.

Por ejemplo, supongamos que tiene un objeto grabable.MatFile

fileName = 'matFileOfDoubles.mat'; matObj = matfile(fileName); matObj.Properties.Writable = true; 

Defina los parámetros de los valores que se escribiran. En este caso, escriba 1 millón valores, 50000 a la vez. Los valores deben tener una media de 123,4, y una desviación estándar de 56,7.

size = 1000000; chunk = 50000;  mean = 123.4; std = 56.7; 

Asigne un valor inicial de cero al último elemento de la matriz antes de rellenarlo con datos.

matObj.data(1,size) = 0;

Ver el tamaño del archivo.

  • En sistemas, uso.Windows®dir

    system('dir matFileOfDoubles.mat');

  • En los sistemas, utilice:UNIX®ls -ls

    system('ls -ls matFileOfDoubles.mat');

En este caso, es menos de 5000 bytes.matFileOfDoubles.mat La asignación de un valor inicial al último elemento de la matriz no crea un archivo de gran tamaño. Sin embargo, prepara su sistema para el aumento de tamaño potencialmente grande de.matFileOfDoubles.mat

Escribir datos en la matriz, un fragmento a la vez.

nout = 0; while(nout < size)     fprintf('Writing %d of %d\n',nout,size);     chunkSize = min(chunk,size-nout);     data = mean + std * randn(1,chunkSize);     matObj.data(1,(nout+1):(nout+chunkSize)) = data;     nout = nout + chunkSize; end 

Ver el tamaño del archivo.

system('dir matFileOfDoubles.mat');

El tamaño del archivo es ahora mayor porque la matriz se rellena con datos.

Consulte también

Temas relacionados