THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
从索引序列和值序列中恢复部分频域分量,剩余分量填充为0,进行离散余弦逆变换IDCT,转为时域数据。
5 实验评估
5.1 性能对比:
对一组长度为170,000的真实气温数据,使用不同的方式进行编码压缩,结果如下:
编码压缩方式 | 写入开销(s) | 查询开销(s) | 空间占用(byte) | 精度损失(RMSE) |
---|---|---|---|---|
PLAIN+UNCOMPRESSED | 2.6 | 0.11 | 1,398,024 | 0 |
TS_2DIFF+GZIP | 1.9 | 0.18 | 144,099 | 0 |
TS_2DIFF+GZIP+SDT(COMPDEV=0.25) | 2.0 | 0.036 | 36,225 | 0.219 |
FREQ(SNR=40,BLOCKSIZE=1024)+UNCOMPRESSED | 2.2 | 0.11 | 50,303 | 0.206 |
FREQ(SNR=40,BLOCKSIZE=1024)+GZIP | 2.1 | 0.11 | 25,663 | 0.206 |
- TS_2DIFF+GZIP是压缩比最大的无损编码压缩方式,它的空间占用远远低于PLAIN+UNCOMPRESSED,但有损编码压缩可以进一步大幅减少空间;
- 在TS_2DIFF+GZIP的基础上,可以继续应用有损的SDT压缩方法。由于该方法直接删除了大量数据点,而在查询时又没有通过插值进行恢复,因此查询开销远低于其余方法;
- FREQ+GZIP可以取得最佳的空间压缩效果,在精度损失与SDT方法相当的情况下,可以节约30%的空间占用。
5.2 参数对性能的影响:
频域编码在配置文件中包括两个参数:`freq_snr`指定了编码的信噪比;`freq_block_size`指定了编码进行时频域变换的分组大小。对上述数据,测试在不同参数下的空间占用、编码时间和解码时间:
空间占用:
- 随着SNR的增大,我们需要保存更多的频域分量,因此空间占用也不断增大;
- 在SNR较小时,增大block size可以降低空间占用,而SNR较大时,增大block size反而会增加空间占用。这是因为block size同时影响了下面两项:
- 随着block size增大,频域分辨率提高,能量更加集中,这一效应在SNR较小时占主导;
- 随着block size增大,索引序列的空间占用随之增大,由于SNR较大时保留的频域分量较多,这一效应占主导;
编码时间:
- 为了突出参数的影响,这里的编码时间是用于执行编码算法的时间。由于写入开销的大部分都与编码无关,这里不将其计入。
- 随着block size的增加,编码时间增加,这是因为dct算法的复杂度是O(nlogn),在更大的block上执行会消耗更多的时间;
- 随着SNR的增大,编码时间先减后增,这是因为SNR同时影响了下面两项:
- 随着SNR增大,在自适应量化步骤中,量化噪声更加容易超过总体噪声阈值,量化等级的搜索空间减少,进而减少该步骤的时间开销;
- 随着SNR增大,需要编码的二进制块增大,对索引和值序列的编码会消耗更多时间;
解码时间:
- 为了突出参数的影响,这里的解码时间是用于执行解码算法的时间。由于查询开销的大部分都与解码无关,这里不将其计入。
- 随着block size的增加,解码时间增加,这是因为idct算法的复杂度是O(nlogn),在更大的block上执行会消耗更多的时间;
- 随着SNR的增加,解码时间增加,这是因为需要解码的二进制块增大,对索引和值序列的解码会消耗更多时间。