谁能帮我分析一下这些霍夫曼频率散点图?
Can anyone help me analyze these Huffman frequency scatter plots?
我编写了一个实现霍夫曼编码的程序,并在 3 种不同类型的文件上对其进行了测试,然后在 Matlab 中将它们的频率绘制在散点图上。 3 种不同类型的文件是
文本文件(.txt): 我能够将文件大小从 65 KB
减小到 37 KB
即,几乎比如 43% 压缩。
音频文件(.mp3): 我能够将文件大小从 99 KB
减小到 98 KB
即,几乎像 1% 压缩 (LOL).
压缩文件(.rar): 我能够将文件大小从 16.1 KB
减小到 16.2 KB
即,几乎像 -1% 压缩(大笑)。
现在我把压缩前每个文件中出现的字符的频率,并在 Matlab 中绘制了一个散点图。例如在本文中:mimmi
,m 出现了 3 次,i 出现了 2 次,所以我在 x 轴上绘制了数字 2 和 3,它们对应的 y 值只是一些随机数(它们不是我们的关注)。下面是这三个文件的图,那么如何从这些图中分辨出某个图压缩得很好,某个图压缩得不好呢?我希望答案是这些点在一起有多近或多远,所以我需要你的帮助。
情节如下。 X - 轴包括文件中出现的字符的频率,而 Y - 轴是我们不关心的内容。我映射了 Y 以便每个点单独绘制而不是一个在另一个之上(这会破坏我们分析的目的)。
注意:我的 Huffman 程序对于文本文件以外的文件非常失败,我已经在 SO 上问了一个答案,而且其他类型的文件似乎已经被压缩了(就像我用 rar 进行压缩的第三个案例一样我得到 -1% 压缩的文件)。
P.S我不确定我是否能够清楚地解释我的问题,但如果有人要求我会再次编辑它。
如果您尝试根据频率估计压缩,您可以简单地计算熵。
将字节值的频率乘以频率的对数底数 2(对于那些不为零的频率)。然后从输入长度乘以长度的对数底数 2 中减去该总和。如果长度为零,则熵为零。
这将为您提供以位为单位的熵。您可以除以八以获得哈夫曼压缩结果中字节数的近似值。
我编写了一个实现霍夫曼编码的程序,并在 3 种不同类型的文件上对其进行了测试,然后在 Matlab 中将它们的频率绘制在散点图上。 3 种不同类型的文件是
文本文件(.txt): 我能够将文件大小从
65 KB
减小到37 KB
即,几乎比如 43% 压缩。音频文件(.mp3): 我能够将文件大小从
99 KB
减小到98 KB
即,几乎像 1% 压缩 (LOL).压缩文件(.rar): 我能够将文件大小从
16.1 KB
减小到16.2 KB
即,几乎像 -1% 压缩(大笑)。
现在我把压缩前每个文件中出现的字符的频率,并在 Matlab 中绘制了一个散点图。例如在本文中:mimmi
,m 出现了 3 次,i 出现了 2 次,所以我在 x 轴上绘制了数字 2 和 3,它们对应的 y 值只是一些随机数(它们不是我们的关注)。下面是这三个文件的图,那么如何从这些图中分辨出某个图压缩得很好,某个图压缩得不好呢?我希望答案是这些点在一起有多近或多远,所以我需要你的帮助。
情节如下。 X - 轴包括文件中出现的字符的频率,而 Y - 轴是我们不关心的内容。我映射了 Y 以便每个点单独绘制而不是一个在另一个之上(这会破坏我们分析的目的)。
注意:我的 Huffman 程序对于文本文件以外的文件非常失败,我已经在 SO 上问了一个答案,而且其他类型的文件似乎已经被压缩了(就像我用 rar 进行压缩的第三个案例一样我得到 -1% 压缩的文件)。
P.S我不确定我是否能够清楚地解释我的问题,但如果有人要求我会再次编辑它。
如果您尝试根据频率估计压缩,您可以简单地计算熵。
将字节值的频率乘以频率的对数底数 2(对于那些不为零的频率)。然后从输入长度乘以长度的对数底数 2 中减去该总和。如果长度为零,则熵为零。
这将为您提供以位为单位的熵。您可以除以八以获得哈夫曼压缩结果中字节数的近似值。