Description Usage Arguments Details Value Note Author(s) References See Also Examples

This function will search for the channel that has the minimum information rate (in bits) necessary to achieve the level of performance (distortion) given by the input argument D.

1 2 3 4 5 6 |

`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. |

`D` |
The distortion level, for which the goal is to find the minimum necessary information rate necessary to achieve this level of distortion. |

`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. |

`max.iters` |
Maximum number of iterations for each call to 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. |

`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 |

`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. |

`...` |
Optional arguments that are passed to the cost function. |

This function is based on using uniroot() to identify 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
}
D <- 1.0
Q <- FindRate(x, Px, y, cost.function, D, verbose = TRUE)
print(Q)
``` |

Embedding an R snippet on your website

Add the following code to your website.

For more information on customizing the embed code, read Embedding Snippets.