Я пытаюсь сохранить карту как файл * .mat, который довольно большой. (. Где-то около 4 или 5gigs я не могу быть уверен, потому что я никогда не мог сохранить файл ...)Matlab save save container.Map()
карта генерируется:
[amap, ~] = load_audio(config);
и сохранены позже по
save('audioMap', 'amap');
Теперь сгенерированный файл имеет только 218 байт, но ошибок не возникает. Попытка прочитать содержимое файла с whos('-file', 'audioMap.mat')
приводит к следующей ошибке:
Warning: Unable to read some of the variables due to unknown MAT-file error.
каждой запись карты является ячейкой с 6 значений. Теперь запрашивая размер карты в результатах рабочего пространства Matlab в следующий вывод:
Name Size Bytes Class Attributes
amap 2279x1 112 containers.Map
Теперь ясно размер не правильно, но я могу перебирать карты и все данные присутствуют. При запросе размера записи это примерно 2,5 МБ.
Я также попытался сохранить переменную из рабочей области, щелкнув правой кнопкой мыши и сохранил - как с тем же результатом. У кого-нибудь есть идеи, почему Matlab не может правильно сохранить эту карту?
Вы пытались сохранить его, используя флаг ['-v7.3'] (http://www.mathworks.com/help/matlab/ref/save.html#inputarg_version). Понятно, что MATLAB думает, что объект намного меньше, чем он, поэтому он не выдаст нормального предупреждения об использовании этого флага. – Suever
Кроме того, что на самом деле * внутри * каждого из этих элементов карты? Являются ли они обычными объектами? – Suever
Это может быть проблема с сериализацией, которая требуется для сохранения объектов. Является ли container.Map вашей единственной объектно-ориентированной структурой данных? Если да, попробуйте 'amap_struct = struct (amap)' и сохраните полученную структуру. Нет автоматизма для возврата объектов, но вы можете проверить, есть ли все данные после загрузки (amap_struct.serialisation.values) – Daniel