Description Usage Arguments Details Value Note Author(s) References See Also Examples
This function searches for an information channel (essentially a conditional probability distribution) that achieves a specified limit on its information rate for a given information source, and minimizes expected cost according to a given cost function. The function operates by searching for a point along the rate-distortion curve that minimizes cost while achieving the bound on information rate.
1 2 3 4 |
x |
The input or source alphabet for the channel. Either a vector or a matrix. For a vector, each element corresponds to one symbol in the input alphabet. For a matrix, each row corresponds to one symbol. |
px |
A vector of probabilities over the source alphabet. This vector should sum to 1. The length of the vector should equal the number of rows in x in the case that x is a matrix. |
y |
The output alphabet for the channel. This can either be a vector or a matrix. |
rho.fn |
The cost function for the channel, defining rho.fn(x, y) over the domain of x and y. This function should accept vectorized arguments. |
R |
The maximum information rate (in bits) allowed for the channel and source. |
tol |
The desired accuracy (convergence tolerance) for searching along the
rate-distortion curve. This argument is passed to |
eps |
Convergence parameter for the Blahut algorithm. |
slope.range |
A vector of the form c(lower, upper) containing the range of slope values along the rate-distortion curve to search for the optimal channel. |
max.iters |
Maximum number of iterations for each call to the Blahut algorithm. |
rho.scale |
An optional scaling parameter for the cost function. If set, the cost used in the algorithm is rho.scale * rho.fn(x, y). This can be useful for avoiding numerical overflow or underflow for badly scaled cost functions. |
verbose |
A logical value indicating whether diagnostic information should be displayed to the console during the algorithm. |
search.bracket |
A logical value. If an optimal channel meeting the constraints cannot be found in the initial search bracket, should the bracket be extended to find a bracketing interval? |
max.search.steps |
If |
... |
Optional arguments that are passed to the cost function. |
This function is based on using uniroot() to search for a point along the rate-distortion curve satisfying the specified constraints. It is essentially an outer-loop optimization routine over the function BlahutAlgorithm.
This function returns an object of the class channel. This object contains the elements:
R |
The information rate (in bits) for the channel at the point s along the rate–distortion curve. |
D |
The distortion for the channel at the point s, based on the cost function given by rho.fn. |
The remaining elements of the class summarize and record the input arguments to the function BlahutAlgorithm.
The channel returned by this function can be used to compute a
conditional probability distribution via
ConditionalDistribution
, or to generate random samples
from the distribution for a given channel input via
Sample
.
Chris R. Sims
Blahut, R. E. (1972). Computation of channel capacity and rate-distortion functions. IEEE Transactions on Information Theory, 18(4):460–473.
BlahutAlgorithm
, ConditionalDistribution
, Sample
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # Define a discretized Gaussian information source
x <- seq(from = -10, to = 10, length.out = 100)
Px <- dnorm(x, mean = 0, sd = 3)
Px <- Px / sum(Px) # Ensure that probability sums to 1
y <- x # The destination alphabet is the same as the source
# Define a quadratic cost function
cost.function <- function(x, y) {
(y - x)^2
}
R <- 1.5
Q <- FindOptimalChannel(x, Px, y, cost.function, R, verbose = TRUE)
print(Q)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.