Итак, я изучаю учебник по Android и столкнулся с ранней проблемой при создании меню. Я создал папку в res
под названием menu
и поместил в game_menu.xml
, как мне сказали.
Но строка inflater.inflate (R.menu.game_menu, меню);
говорит мне, что R.menu
не может быть решена. Поскольку мне, вероятно, не следует редактировать R.java
вручную, я был бы признателен за помощь в том, что делать.
Out [25] = {18, 2002, 2989} In [26]: = daylightImgd [[1, 1]] [[1 ;; 10]] Out [26] = {0.0122293, 0.0104803, 0 ....
У меня очень большой массив данных изображений с плавающей запятой:
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}
Я могу успешно сохранить весь этот массив изображений на диск, используя DumpSave a la :
DumpSave["thisWorks.mx", daylightImgd]
Сброс этого гиганта (861 мегабайт) занимает менее 10 секунд. Если я уменьшу выборку этих изображений, а-ля:
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}
Тогда внезапно я больше не смогу сохранить дамп; эта вещь зависает и вращается навсегда - или, по крайней мере, в течение многих минут, пока я ее не убью, и максимально увеличивает процессор:
In[31]:= DumpSave["broken.mx", daylightImgdDown]; (* Hangs forever *)
Насколько я могу судить, все так, как должно быть: изображения с пониженной частотой имеют правильные размеры; Вы можете построить их через ArrayPlot, и все выглядит отлично; вручную перечисление первого ряда выглядит нормально. Короче говоря, все выглядит так же, как и с изображениями без дискретизации, но на гораздо меньшем наборе данных DumpSave зависает.
Справка?
ОБНОВЛЕНИЕ: Комментарии к ответу Михаила
Вау. Спасибо за предельно тщательный ответ, который не только ответил на мой вопрос, но и научил меня многим второстепенным вещам.
Для справки, вопрос с упаковкой был немного сложнее, чем просто замена моего даунсэмпла [] на один из твоих. Поскольку массив, который я пытался выгрузить, представляет собой массив из 18 изображений - другими словами, трехмерный массив, а поскольку я применяю понижающую дискретизацию с помощью оператора Map, упакованный трехмерный массив имеет значение false (согласно PackedArrayQ ), используя любой из ваших нижестоящих примеров, переписывает.
Однако, если я возьму выходные данные этих приложений, а затем упакую результирующий трехмерный массив, , затем весь трехмерный массив будет упакован, и только тогда Могу ли я DumpSave это. Как ни странно, этот последний процесс упаковки, хотя и необходим для успешного DumpSave, как представляется, едва ли изменить размер, как сообщает ByteCount. Может быть, это проще в коде:
In[42]:= downsample3[image_, f_] :=
Module[{w, h}, h = Dimensions[image][[1]];
w = Dimensions[image][[2]];
Developer`ToPackedArray@Table[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! *)
Опять же, большое спасибо.