Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

quantiz

量子化インデックスと量子化された出力値を作成

説明

index = quantiz(sig,partition) は、入力 partition で指定されたスカラー量子化の分割を使用して、入力信号 sig の量子化レベルを返します。

[index,quants] = quantiz(sig,partition,codebook) は、スカラー量子化における各分割の値を規定する codebook を指定します。codebook は、長さが partition の長さより 1 長くなければならないベクトルです。この関数は quants も返します。これは sig のスカラー量子化を含み、量子化レベルとコードブックで規定された値に依存します。

[index,quants,distor] = quantiz(sig,partition,codebook) は、量子化データの平均二乗歪みを返します。

すべて折りたたむ

サンプル データを生成します。

samp = [-2.4, -1, -0.2, 0, 0.2, 1, 1.2, 2, 2.9, 3, 3.5, 5]
samp = 1×12

   -2.4000   -1.0000   -0.2000         0    0.2000    1.0000    1.2000    2.0000    2.9000    3.0000    3.5000    5.0000

量子化の分割を作成します。分割を指定するには、値の異なる範囲の明確な端点をリストします。

partition = [0, 1, 3];

コードブック値を指定します。

codebook = [-1, 0.5, 2, 3]; % Codebook length must be equal to the number of partition intervals

サンプリング後のデータで量子化を実行します。入力データの量子化インデックスと対応する量子化された出力値を表示します。

[index,quantized] = quantiz(samp,partition,codebook)
index = 1×12

     0     0     0     0     1     1     2     2     2     2     3     3

quantized = 1×12

   -1.0000   -1.0000   -1.0000   -1.0000    0.5000    0.5000    2.0000    2.0000    2.0000    2.0000    3.0000    3.0000

サンプリングされた正弦波を生成します。

t = [0:.1:2*pi];
sig = sin(t);

量子化の分割を作成します。分割を指定するには、値の異なる範囲の明確な端点をリストします。

partition = [-1:.2:1];

コードブック値を指定します。

codebook = [-1.2:.2:1]; % Codebook length must be equal to the number of partition intervals

サンプリング後の正弦波で量子化を実行します。

[index,quants] = quantiz(sig,partition,codebook);

量子化された正弦波とサンプリング後の正弦波をプロットします。

plot(t,sig,'x',t,quants,'.')
title('Quantization of sine wave')
xlabel('Time')
ylabel('Amplitude')
legend('Original sampled sine wave','Quantized sine wave');
axis([-.2 7 -1.2 1.2])

Figure contains an axes. The axes with title Quantization of sine wave contains 2 objects of type line. These objects represent Original sampled sine wave, Quantized sine wave.

入力引数

すべて折りたたむ

入力信号。ベクトルで指定します。この入力で、この関数で量子化を実行するためのサンプリング後の信号を指定します。

データ型: double

異なる範囲の明確な端点。行ベクトルとして指定します。この入力は、実数値の集合において、オーバーラップしないで隣接する値の範囲を定義します。この入力内にある値は厳密に昇順でなければなりません。このベクトルの長さは、分割区間数よりも 1 小さくなければなりません。

例: [0, 1, 3] は、入力行ベクトルを 4 つのセット {X: X ≤ 0}、{X: 0 < X ≤ 1}、{X: 1 < X ≤ 3}、および {X: 3 < X} に分割します。

データ型: double

各分割の量子化値。行ベクトルとして指定します。この入力は、スカラー量子化における各分割の値を規定します。このベクトルの長さは分割間隔の数と等しくなければなりません。つまり、このベクトルの長さは、partition 入力の長さより 1 長くなければなりません。

データ型: double

出力引数

すべて折りたたむ

入力信号の量子化インデックス。非負の行ベクトルとして返されます。この出力によって、各入力値がマッピングされる分割区間が判断されます。index 内の各要素は、範囲 [0, N–1] 内にある N 整数のいずれかです。

partition が長さ N の場合、index は K 番目のエントリが以下のベクトルです。

  • sig(K) ≤ partition(1) の場合は 0

  • partition(M) < sig(K) ≤ partition(M+1) の場合は M

  • partition(N) ≤ sig(K) の場合は N

量子化器の出力。入力信号の量子化値を含み、行ベクトルとして返されます。quants のサイズは、入力引数 sig のサイズと一致します。codebook が入力引数として指定されていない場合は、長さが partition の長さより 1 長くなければならないベクトルとしてコードブック値を定義できます。

quants は、codebook および index の入力に基づいて計算され、quants(i) = codebook(index(i) + 1) で求められます。ここで i は 1 から sig の長さの整数です。

量子化信号の平均二乗歪み。正のスカラーとして返されます。適切な分割値およびコードブック値を選択することによってこの歪みを減少させることができます。分割値とコードブック値の最適化の詳細については、関数 lloyds を参照してください。

R2006a より前に導入