2014-12-24 1 views
0

Мне было интересно, почему файл h5 занимает больше места в жестком диске, чем обычный файл мата, в то время как содержимое такое же. Я всегда думал, что h5 - это своего рода сжатый. Подробности приведены нижеH5 vs Mat-File Matlab

Использование 2014b Matlab в 64-битных Linux-Ubuntu

код 1:

clear,clc 
h5create('myfile.h5','/DS1',[900 9000]); 
mydata = rand(900,9000); 
h5write('myfile.h5', '/DS1', mydata); 
data = h5read('myfile.h5','/DS1'); 

код 2

clear,clc 
a=rand(900,9000); 
save a a; 

Размер файла мат На 2 мб меньше, чем файл h5 (61 мб), есть ли какие-либо флаги, которые я игнорирую для процесса сохранения h5?

ответ

1

По умолчанию HDF5 несжатый, но он поддерживает различные фильтры сжатия. GZIP реализуется в MATLAB, вы можете просто включить его, установив уровень выше 0.

h5create('myfile_gzip.h5','/DS1',[900 9000],'Deflate',9,'ChunkSize',[100,100]); 
h5write('myfile_gzip.h5', '/DS1', a); 

Для ChuckSize я сделал глупое предположение, которое, к счастью, пришел с хорошими результатами, может быть, вы можете попробовать другие значения, если вы испытываете плохие результаты.

+0

Не уверен, что если я неправильно соблюдал код, но точный код дает данные 58 МБ, которые совпадают с файлом макета по умолчанию (вывод кода 2 моего исходного вопроса). Я пытаюсь поиграть с размером куска не лучше. – user2375049

+0

@ user2375049: MAT-файлы также сжаты, поэтому достижение примерно того же размера - это то, что я обвинил в том, что я «хороший». Такие случайные данные трудно сжимать, вы не можете ожидать никаких чудес. – Daniel