Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

huffmandict

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

説明

[dict,avglen] = huffmandict(symbols,prob) は、最大分散アルゴリズムを使用して、情報源シンボル symbols のバイナリ ハフマン符号ディクショナリ dict を生成します。入力 prob は、各入力シンボルの発生確率を指定します。prob の長さは symbols の長さに等しくなければなりません。この関数は、入力 prob の確率に従って重み付けされる、ディクショナリの平均コードワード長 avglen も返します。

[dict,avglen] = huffmandict(symbols,prob,N) は、最大分散アルゴリズムを使用して N-ary ハフマン符号ディクショナリを生成します。N は情報源シンボルの数を超えてはなりません。

[dict,avglen] = huffmandict(symbols,prob,N,variance) は、指定された分散を使用して N-ary ハフマン符号ディクショナリを生成します。

すべて折りたたむ

バイナリのハフマン符号ディクショナリを生成し、さらに平均符号長を返します。

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

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

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

[dict,avglen] = huffmandict(symbols,prob)
dict=5×2 cell array
    {[1]}    {[  0 1]}
    {[2]}    {[  0 0]}
    {[3]}    {[  1 0]}
    {[4]}    {[1 1 1]}
    {[5]}    {[1 1 0]}

avglen = 2.2000

ディクショナリから 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

バイナリのハフマン符号を生成し、コードワード ディクショナリを含む cell 配列を表示します。

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

最小分散を使用して 3 進数のハフマン符号を生成します。

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

入力引数

すべて折りたたむ

情報源シンボル。ベクトル、cell 配列または英数字 cell 配列として指定します。symbols は、情報源が作成する識別可能な信号値をリストします。symbols が cell 配列の場合は、1 行 S 列または S 行 1 列の cell 配列でなければなりません。ここで、S はシンボル数です。

データ型: double | cell

各シンボルの発生確率。範囲 [0, 1] のベクトルとして指定します。このベクトルの要素の合計は 1 にならなければなりません。このベクトルの長さは入力 symbols の長さに等しくなければなりません。

データ型: double

N-ary ハフマン符号ディクショナリ。範囲 [2, 10] のスカラーとして指定します。この値は入力 symbols の長さ以下でなければなりません。

データ型: double

ハフマン符号の分散。次のいずれかの値を指定します。

  • 'min' — この関数は、最小分散を使用して N-ary ハフマン符号ディクショナリを生成します。variance 入力引数を指定しない場合、関数ではこのケースが使用されます。

  • 'max' — この関数は、最大分散を使用して N-ary ハフマン符号ディクショナリを生成します。

データ型: char

出力引数

すべて折りたたむ

ハフマン符号ディクショナリ。2 列の cell 配列として返されます。最初の列は、入力 symbols からの識別可能な信号値をリストします。2 列目はハフマン コードワードに対応し、各ハフマン コードワードは行ベクトルとして表されます。入力引数 N を指定した場合、関数は dict を N-ary ハフマン符号ディクショナリとして返します。

データ型: double | cell

入力 prob の確率に従って重み付けされる平均コードワード長。正のスカラーとして返されます。

データ型: double

参照

[1] Sayood, Khalid. Introduction to Data Compression. 2nd ed. San Francisco: Morgan Kaufmann Publishers, 2000.

バージョン履歴

R2006a より前に導入