Main Content

dpcmopt

Optimize differential pulse code modulation parameters

Description

predictor = dpcmopt(training_set,ord) returns a vector representing a predictive transfer function of order, ord appropriate for the training data in the training_set. predictor is a row vector of length ord+1. For more information, see Represent Predictors.

example

[predictor,codebook,partition] = dpcmopt(training_set,ord,len) returns corresponding optimized codebook and partition vectors.

[predictor,codebook,partition] = dpcmopt(training_set,ord,ini_cb) returns corresponding optimized codebook and partition vectors.

Examples

collapse all

To optimize a DPCM-encoded and -decoded sawtooth signal, use the dpcmopt function with the dpcmenco and dpcmdeco functions. Testing and selecting parameters for large signal sets with a fine quantization scheme can be tedious. One way to produce partition, codebook, and predictor parameters easily is to optimize them according to a set of training data. The training data should be typical of the kinds of signals to be quantized with dpcmenco.

This example uses the predictive order 1 as the desired order of the new optimized predictor. The dpcmopt function creates these optimized parameters, using the sawtooth signal x as training data. The example goes on to quantize the training data itself. In theory, the optimized parameters are suitable for quantizing other data that is similar to x. The mean square distortion for optimized DPCM is much less than the distortion with nonoptimized DPCM parameters.

Define variables for a sawtooth signal and initial DPCM parameters.

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)

Optimize the partition, codebook, and predictor vectors by using the dpcmopt function and the initial codebook and order 1. Then generate DPCM encoded signals by using the initial and the optimized partition and codebook vectors.

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

Recover x from the modulated signal by using DPCM decoding. Compute the mean square error between the original signal and the decoded and optimized decoded signals.

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

Compare mean square distortions for quantization with the initial and optimized input arguments.

[distor, distorOpt]
ans = 1×2

    0.0327    0.0009

Input Arguments

collapse all

Training data, specified as a vector. The training_set input must be similar to the data to quantize.

Data Types: double

Order of the predictive transfer function, specified as a vector.

Data Types: double

Length of the codebook, specified as a scalar or vector.

Data Types: double

Initial guess of the codebook values, specified as a vector.

Data Types: double

Output Arguments

collapse all

Predictive transfer function, returned as a vector. If the transfer function has predictive order M, then the predictor has length M+1 and an initial entry of 0. In general, an Mth order transfer function numerator has the form of [0, n1, n2, ... nM]. If predictor is an order-one transfer function, the modulation is a delta modulation.

Data Types: double

Value for each partition in the quantization, as a vector. The length of the codebook input exceeds the length of the partition input by 1.

Data Types: double

Partition interval endpoints, specified as a vector.

Data Types: double

Initial guess of codebook values, specified as a vector.

Data Types: double

Version History

Introduced before R2006a