que tiene una gran variedad de flotar datos de la imagen punto:inexplicable Mathematica7 DumpSave [] problema
In[25]:= Dimensions[daylightImgd]
Out[25]= {18, 2002, 2989}
In[26]:= daylightImgd[[1, 1]][[1 ;; 10]]
Out[26]= {0.0122293, 0.0104803, 0.0103955, 0.0115533, 0.0118063, \
0.0120648, 0.0122957, 0.011398, 0.0117426, 0.0119997}
puedo guardar todo este conjunto de imágenes de disco utilizando con éxito DumpSave a la:
DumpSave["thisWorks.mx", daylightImgd]
El vertido de este gigante (archivo de 861 megas) lleva menos de 10 segundos. Si reduzco la resolución de estas imágenes, a la:
downsample[image_, f_] := Module[{w, h}, h = Dimensions[image][[1]];
w = Dimensions[image][[2]];
Table[image[[i, j]], {i, 1, h, f}, {j, 1, w, f}]]
In[26]:= daylightImgdDown = downsample[#, 4] & /@ daylightImgd;
In[27]:= Dimensions[daylightImgdDown]
Out[27]= {18, 500, 748}
In[28]:= daylightImgdDown[[1, 1]][[1 ;; 10]]
Out[28]= {0.0122293, 0.0118063, 0.0117426, 0.0119349, 0.0109443, \
0.0121632, 0.0121304, 0.00681408, 0.0101728, 0.00603242}
De repente, ya no puedo guardar más; cuelga la cosa, y hace girar para siempre - o por lo menos durante varios minutos, hasta que lo mato, y maxes CPU:
In[31]:= DumpSave["broken.mx", daylightImgdDown]; (* Hangs forever *)
Por lo que yo puedo determinar, todo es como debe ser: las imágenes tienen el downsampled dimensiones correctas; puedes trazarlos a través de ArrayPlot y todo se ve genial; el listado manual de la primera fila se ve bien. Todo, en resumen, parece lo mismo que con las imágenes no muestreadas, pero en el conjunto de datos mucho más pequeño DumpSave se cuelga.
¿Ayuda?
ACTUALIZACIÓN: Comentarios sobre la respuesta de Michael
Wow. Gracias por la respuesta extremadamente completa, que no solo respondió mi pregunta sino que también me enseñó un montón de material periférico.
Para su referencia, el problema del empaquetado fue un poco más complicado que simplemente reemplazar mi muestra descendente [] con una de las suyas. Dado que la matriz que estaba tratando de volcar es una matriz de 18 imágenes, una matriz en 3D, en otras palabras, y dado que estoy aplicando la disminución de muestreo a través del operador de Mapa, el empaquetado de la matriz 3D es falso (según PackedArrayQ) utilizando cualquiera de sus reescrituras de resolución baja.
Sin embargo, si tomo la salida de estas aplicaciones, y luego empacar la matriz 3D resultante, entonces toda la matriz 3d está lleno, y sólo entonces puedo DumpSave ella. Extrañamente, sin embargo, este proceso final de empaque, aunque es necesario para un DumpSave exitoso, apenas parece alterar el tamaño, según lo informado por ByteCount. Tal vez esto es más fácil en el código:
In[42]:= downsample3[image_, f_] :=
Module[{w, h}, h = Dimensions[image][[1]];
w = Dimensions[image][[2]];
Developer`[email protected][image[[i, j]], {i, 1, h, f}, {j, 1, w, f}]]
In[43]:= daylightImgdDown = downsample3[#, downsampleSize] & /@ daylightImgd;
In[44]:= ByteCount[daylightImgdDown]
Out[44]= 53966192
In[45]:= Developer`PackedArrayQ[daylightImgdDown]
Out[45]= False
In[46]:= dd = Developer`ToPackedArray[daylightImgdDown];
In[47]:= Developer`PackedArrayQ[dd]
Out[47]= True
In[48]:= ByteCount[dd]
Out[48]= 53963844
In[49]:= DumpSave["daylightImgdDown.mx", dd]; (* works now! *)
Nuevamente, muchas gracias.
¡Guau, buena respuesta! Interesado en saber si esto resuelve el problema del que pregunta. – dreeves