2016-05-01 4 views
0

私はハフマン符号化を実装したプログラムを書いて、3種類のファイルでテストした後、Matlabの散布図に周波数をプロットしました。ファイルの異なる3種類が誰も私がこれらのハフマン周波数散布図を分析するのを助けることができますか?

  1. テキストファイル(.txt)です:私は、ほぼ43%の圧縮と同様に、37 KBすなわちに65 KBからファイルサイズを小さくすることができました。

  2. オーディオファイル(.MP3): Iはほぼ1%の圧縮(LOL)のように、99 KBから98 KBすなわちへのファイルサイズを小さくすることができました。

  3. 圧縮ファイル(.rarを):は、私はほとんど-1%圧縮(ビッグLOL)のように、16.2 KBすなわちへ16.1 KBからファイルサイズを小さくすることができました。

ここで、圧縮前に各ファイルで発生した文字の頻度を取り、Matlabで散布図を作成しました。たとえば、この文章ではmimmiの場合、mは3回表示され、iは2回表示されるので、x軸に2と3の数字をプロットし、対応するy値は単純に乱数だけです(懸念事項ではありません)。だから、これらの3つのファイルのプロットがあるので、これらのプロットから、あるプロットが良い圧縮を経験し、特定のプロットが圧縮不良を経験したことをどのように伝えるか?答えは、これらの点がどれほど近いか、どれほど近いかに沿ってどこかにあると思いますので、私はあなたの助けが必要です。

プロットは以下の通りです。 X軸にはファイル内に出現する文字の頻度が含まれていますが、Y軸には関係のない文字が含まれています。私は、各点を別々にプロットするのではなく、それぞれの点を別々にプロットするようにYをマッピングしました(これは分析の目的を無効にします)。

注:私のハフマンプログラムは、テキストファイル以外のファイルでは悲惨に失敗します。私はすでにSOの答えを尋ねています。他のタイプのファイルも既に圧縮されているようです。(3番目のrarファイル私は-1%の圧縮を得た)。

P.S私は私の質問をはっきりと説明することはできませんでしたが、誰かが私に尋ねると再びそれを編集します。

Text File Audio Rar File

答えて

0

あなたは周波数から圧縮を推定しようとしている場合は、単にエントロピーを計算することができます。

バイト値の周波数と周波数の対数の底2(ゼロでない周波数の場合)を合計します。次に、入力の長さから長さの対数の底2を差し引いてその合計を減算します。長さがゼロの場合、エントロピーはゼロです。

それはあなたにビットでエントロピーを与えるでしょう。 8で割って、ハフマン圧縮結果のバイト数を近似することができます。

関連する問題