最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

huffmandict

既知の確率モデルの対応するハフマン符号ディクショナリを生成

構文

[dict,avglen] = huffmandict(symbols,p)
[dict,avglen] = huffmandict(symbols,p,N)
[dict,avglen] = huffmandict(symbols,p,N,variance)

説明

すべての構文に対して

関数 huffmandict は、既知の確率モデルの対応するハフマン符号ディクショナリを生成します。必要な入力は以下のとおりです。

  • 情報源が作成する識別可能な信号値をリストする symbols。数値ベクトル、数値セル配列、英数字セル配列の形式をもつことができます。セル配列の場合、行または列でなければなりません。

  • k 番目の要素が情報源が symbols の k 番目の要素を作成する確率のある確率ベクトルである pp の長さは symbols の長さに等しくなければなりません。

huffmandict の出力は以下のようになります。

  • 最初の列が symbols からの識別可能な信号値を示し、2 列目が対応するハフマン符号語を表示する、2 列セル配列である dict。2 列目で、各ハフマン符号語は数値行ベクトルとして表されます。

  • ベクトル p の確率にしたがって重み付けされる、ディクショナリのすべての符号語の平均的な長さである avglen

特定の構文に対して

[dict,avglen] = huffmandict(symbols,p) は最大分散アルゴリズムを使用してバイナリ ハフマン符号ディクショナリを生成します。

[dict,avglen] = huffmandict(symbols,p,N) は、最大分散アルゴリズムを使用して N-ary ハフマン符号ディクショナリを生成します。N は、確率がベクトル p にある情報源シンボルの数を超えない 2 ~ 10 の間の整数です。

[dict,avglen] = huffmandict(symbols,p,N,variance) は、variance'min' の場合、最小分散を使用して、variance'max' の場合、最大分散を使用して N-ary ハフマン符号ディクショナリを生成します。N は、ベクトル p の値を超えない 2 ~ 10 の間の整数です。

すべて折りたたむ

バイナリのハフマン符号ディクショナリを生成します。平均符号長を返すために 2 番目の出力を代入します。

シンボル アルファベット ベクトルと確率ベクトルを指定します。

symbols = (1:5); % Alphabet vector
prob = [.3 .3 .2 .1 .1]; % Symbol probability vector

バイナリのハフマン符号を生成します。平均符号長と、符号語ディクショナリを含む cell 配列を表示します。

[dict, avglen] = huffmandict(symbols,prob);
avglen
avglen = 2.2000
dict
dict=5×2 cell
    {[1]}    {1x2 double}
    {[2]}    {1x2 double}
    {[3]}    {1x2 double}
    {[4]}    {1x3 double}
    {[5]}    {1x3 double}

ディクショナリから 5 番目の符号語を表示します。

samplecode = dict{5,2} % Codeword for fifth signal value
samplecode = 1×3

     1     1     0

ハフマン符号化関数の符号ディクショナリ ジェネレーターを使用して、バイナリおよび 3 進数のハフマン符号を生成します。

シンボル アルファベット ベクトルと確率ベクトルを指定します。

symbols = (1:5); % Alphabet vector
prob = [.3 .3 .2 .1 .1]; % Symbol probability vector

バイナリのハフマン符号を生成します。

[dict, avglen] = huffmandict(symbols, prob);
dict(:, 2) = cellfun(@num2str, dict(:, 2), 'UniformOutput', false)
dict=5×2 cell
    {[1]}    {'0  1'   }
    {[2]}    {'0  0'   }
    {[3]}    {'1  0'   }
    {[4]}    {'1  1  1'}
    {[5]}    {'1  1  0'}

3 進数のハフマン符号を生成します。

[dict,avglen] = huffmandict(symbols,prob, 3);
dict(:, 2) = cellfun(@num2str, dict(:, 2), 'UniformOutput', false)
dict=5×2 cell
    {[1]}    {'2'   }
    {[2]}    {'1'   }
    {[3]}    {'0  0'}
    {[4]}    {'0  2'}
    {[5]}    {'0  1'}

参考文献

[1] Sayood, Khalid, Introduction to Data Compression, San Francisco, Morgan Kaufmann, 2000.

R2006a より前に導入