I'm not well versed in the literature so please forgive/inform me if my terminology is wrong:

I have a bounded real-valued, discrete-time signal $x_n \in \mathbb [0, 1]$, and I want to (lossily) transmit this signal via a bitstream $q_n \in \{0, 1\}$, so that it can be reconstructed into $\hat x_n$, and the average reconstruction error $\frac1N \sum_{n=1}^N (x_n - \hat x_n)^2$ is minimised.

$x_n$ will in general be temporally redundant, and I'd like to exploit this redundancy to make the most efficient use of my bits. In my case, I expect $x_n$ to settle towards a fixed point for a long time and then suddenly jump towards a new fixed point (as you may expect from the trace of a single pixel in video).

enter image description here

Example Signal: It goes though "settling" phases where it remains fairly static, and "dynamic" phases where it transitions quickly towards a new settling point.

From what I gather, Predictive Coding is the standard approach here - subtract the predictable component of the signal, encode the rest, and reconstruct the predictable component on the other end. The trouble is that the optimal predictive coding parameters (at least for a Linear Predictive Coder) will change depending on the state of the signal: When $x$ is dynamic, I expect to encode it at a coarse resolution. When $x$ is static, I expect to use my bits to communicate fine increments to the value of $x$. So I need to communicate my predictive coding coefficients along the same bitstream $q_n$.

Is there a standard approach for this kind of problem?

  • $\begingroup$ Would it be possible to mention where the signal is coming from and possibly provide an example trace? $\endgroup$ – A_A Dec 6 '18 at 12:52
  • $\begingroup$ Hi. i added an example there. In my application, the signal is the activation of a neuron in a neural network that settles towards a fixed point. When the input to the network changes, the network is disturbed and must settle to a new fixed point. $\endgroup$ – Peter Dec 6 '18 at 14:25
  • $\begingroup$ Thank you, that is great. Do you have any indication as to how many bits you have and what would be the sort of acceptable error? There are a couple of options available but maybe your margins are too tight (?). $\endgroup$ – A_A Dec 6 '18 at 14:56
  • $\begingroup$ Well I guess for any given signal I'm just looking to minimize the error. As a starting point, what are the names of the available options? $\endgroup$ – Peter Dec 6 '18 at 15:32

This sounds like a variant of Differential Pulse-Code Modulation. In this set of techniques, the correlation of adjacent values and the effect of quantisation are exploited for "compression" (whether this is for transmission or storage). That is, instead of encoding the sample values, you encode the difference between them which, within limits, could be described by a much smaller number than the values themselves.

However, another technique that might be useful to you here is run length encoding. In run length encoding, the encoded word describes either the sample value itself or how many repetitions of the same value are to be decoded.

In either case, you would require higher bandwidth around the signal transients (many messages sent between the encoder and the decoder) and much lower during the longer times of constant values.

Hope this helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.