【发布时间】:2023-02-07 04:25:06
【问题描述】:
我正在寻找一种有效的编码来存储模拟系数。
数据有数千条曲线,每条曲线有 512 个连续的单精度数字。数据可以存储为定点,同时它应该保留大约 23 位精度(与统一级别相比)。
曲线可能看起来像那些:
我最好的方法是将数字转换为 24 位定点数。只要平方和减少,我就反复取相邻的差异。当使用 LZMA (xz,lzip) 压缩结果数据时,我得到大约 7.5 倍的压缩率(与 float32 相比)。
相邻差异在开始时很好,但它们强调了每一轮的量化噪声。
在边界处减去斜率/曲线后,我还尝试了余弦变换。产生的压缩要弱得多。
我试过 AEC 但 LZMA 压缩得更强。最高压缩是使用 bzip3(在相邻差异之后)。
我发现没有函数可以高精度和有限的参数数来拟合数据。
有没有办法在使用相邻差异时减少量化噪声的惩罚?
是否有更适合此类数据的编码?
【问题讨论】:
-
“连续”到底是什么意思?量化噪声从何而来?您是说 23 位中最低有效位的噪声吗?当您说“模拟”时,是由算法生成的而不是测量的吗?如果它们是由算法生成的,那么为什么不使用算法和参数作为压缩表示呢?
-
数据模型:数据由模型生成(基于大约 500MB 的测量数据)。计算模型是昂贵的,所以模型应该预先计算各种参数并分布。我想压缩几十 GB 的结果数据。我所说的量化噪声来自数字表示:在与最不重要步骤的一个相邻差异之后,你会得到一个尖峰。对于下一个相邻的差异,您会在前沿获得正尖峰,在下降沿获得负尖峰。
-
我的意思是连续的,数据遵循严格的曲线。我用这个词来强调数据应该具有高度的预测性。
-
那么你的意思是连续的, 不连续。
标签: encoding numbers compression