メインコンテンツ

dpcmopt

差分パルス符号変調パラメーターの最適化

説明

predictor = dpcmopt(training_set,ord) は、training_set の学習データに適切な次数 ord の予測伝達関数を表すベクトルを出力します。predictor は長さ ord+1 の行ベクトルです。詳細については、予測子の表現を参照してください。

[predictor,codebook,partition] = dpcmopt(training_set,ord,len) は、対応する最適化されたコードブック ベクトルと分割ベクトルを返します。

[predictor,codebook,partition] = dpcmopt(training_set,ord,ini_cb) は、対応する最適化されたコードブック ベクトルと分割ベクトルを返します。

すべて折りたたむ

DPCM 符号化され、DPCM 復号化されたノコギリ波信号を最適化するには、dpcmopt関数を、dpcmenco関数およびdpcmdeco関数と共に使用します。大きな信号の集合に対し、微細な量子化方式を使用してパラメーターのテストや選択を行うのは手間のかかる作業です。分割、コードブック、および予測子のパラメーターを簡単に生成する方法の 1 つは、一連の "学習データ" に従ってそれらを最適化することです。学習データは、dpcmenco で量子化する典型的な種類の信号でなければなりません。

この例では、予測次数 1 を新しい最適化予測子の目的の次数として使用します。dpcmopt 関数は、ノコギリ波信号 x を学習データとして使用し、これらの最適化パラメーターを作成します。この例では、学習データ自体を量子化します。理論上、最適化パラメーターは、x と同様のその他のデータの量子化に適しています。最適化された DPCM の平均二乗歪みは、最適化されていない DPCM パラメーターによる歪みよりもはるかに小さくなります。

ノコギリ波信号と初期 DPCM パラメーターの変数を定義します。

t = [0:pi/50:2*pi];
x = sawtooth(3*t);
partition = [-1:.1:.9];
codebook = [-1:.1:1];
predictor = [0 1];      % y(k)=x(k-1)

dpcmopt 関数と初期コードブックおよび次数 1 を使用して、分割、コードブック、および予測子のベクトルを最適化します。次に、初期および最適化後の分割ベクトルとコードブック ベクトルを使用して、DPCM 符号化された信号を生成します。

[predictorOpt,codebookOpt,partitionOpt] = dpcmopt(x,1,codebook);
encodedx = dpcmenco(x,codebook,partition,predictor);
encodedxOpt = dpcmenco(x,codebookOpt,partitionOpt,predictorOpt);

DPCM 復号化を使用して、変調信号から x を復元します。元の信号と復号化され最適化された復号化信号の間の平均二乗誤差を計算します。

decodedx = dpcmdeco(encodedx,codebook,predictor);
decodedxOpt = dpcmdeco(encodedxOpt,codebookOpt,predictorOpt);
distor = sum((x-decodedx).^2)/length(x);
distorOpt = sum((x-decodedxOpt).^2)/length(x);

量子化の平均二乗歪みについて、初期の入力引数と最適化後の入力引数で比較します。

[distor, distorOpt]
ans = 1×2

    0.0327    0.0009

入力引数

すべて折りたたむ

学習データ。ベクトルとして指定します。training_set 入力は、量子化するデータに類似していなければなりません。

データ型: double

予測伝達関数の次数。ベクトルとして指定します。

データ型: double

コードブックの長さ。スカラーまたはベクトルとして指定します。

データ型: double

コードブック値の初期推定。ベクトルとして指定します。

データ型: double

出力引数

すべて折りたたむ

予測伝達関数。ベクトルとして返されます。伝達関数が予測次数 M をもつ場合、予測子の長さは M+1 で、初期エントリは 0 です。一般に、M 次の伝達関数の分子は [0, n1, n2, ... nM] の形式になります。predictor が次数 1 の伝達関数である場合、この変調はデルタ変調です。

データ型: double

量子化における各区画の値。ベクトルとして指定します。codebook 入力の長さは、partition 入力の長さよりも 1 だけ大きくなります。

データ型: double

分割区間の端点。ベクトルとして指定します。

データ型: double

コードブック値の初期推定。ベクトルとして指定します。

データ型: double

バージョン履歴

R2006a より前に導入