HDF gzip 压缩与 ASCII gzip 压缩

HDF gzip compression vs. ASCII gzip compression

我有一个包含 1100x1600 个数据点的二维矩阵。最初,我将它存储在一个 ascii 文件中,我使用命令 tar 压缩了该文件

tar -cvzf ascii_file.tar.gz ascii_file

现在,我想切换到 hdf5 文件,但它们太大了,至少在我使用它们的方式上是这样...首先,我使用 c 程序将数组写入 hdf5 文件

H5Fcreate, H5Screate_simple, H5Dcreate, H5Dwrite

按照这个顺序。 hdf文件中的数据没有压缩,而且比较大,所以我用命令压缩了

h5repack --filter=GZIP=9 hdf5_file hdf5_file.gzipped

不幸的是,这个压缩后的hdf文件仍然比压缩后的ascii文件大5倍,见下文table:

file               size
--------------------------
ascii_file         5721600
ascii_file.tar.gz   287408
hdf5_file          7042144
hdf5_file.gzipped  1117033

现在我的问题是:为什么 gzip 后的 ascii 文件这么小,有没有办法让 hdf 文件更小?

谢谢。

好吧,在阅读 Mark Adler's 评论后,我意识到这个问题有些愚蠢:在 ascii 情况下,值在一定数量的数字后被截断,而在 hdf 情况下 "real" 值("real" = 我正在使用的数据类型的任何精度)被存储。

但是,有一种方法可以进一步减小我的 hdf 文件的大小:通过使用

选项应用随机播放过滤器
--filter=SHUF