Source code mu-law or A-law compressor or expander

`out = compand(in,Mu,v) `

out = compand(in,Mu,v,`'mu/compressor'`

)

out = compand(in,Mu,v,`'mu/expander'`

)

out = compand(in,A,v,`'A/compressor'`

)

out = compand(in,A,v,`'A/expander'`

)

`out = compand(in,Mu,v) `

implements a µ-law compressor
for the input vector `in`

. `Mu`

specifies µ, and
`v`

is the input signal's maximum magnitude. `out`

has the same dimensions and maximum magnitude as `in`

.

`out = compand(in,Mu,v,`

is the same as the syntax above.`'mu/compressor'`

)

`out = compand(in,Mu,v,`

implements a µ-law expander for the input vector `'mu/expander'`

) `in`

.
`Mu`

specifies µ and `v`

is the input signal's
maximum magnitude. `out`

has the same dimensions and maximum magnitude
as `in`

.

`out = compand(in,A,v,`

implements an A-law compressor for the input vector `'A/compressor'`

) `in`

. The scalar
`A`

is the A-law parameter, and `v`

is the input
signal's maximum magnitude. `out`

is a vector of the same length and
maximum magnitude as `in`

.

`out = compand(in,A,v,`

implements an A-law expander for the input vector `'A/expander'`

) `in`

. The scalar
`A`

is the A-law parameter, and `v`

is the input
signal's maximum magnitude. `out`

is a vector of the same length and
maximum magnitude as `in`

.

The prevailing parameters used in practice are µ= 255 and A = 87.6.

For a given signal *x*, the output of the µ-law
compressor is

$$y=\frac{V\mathrm{log}(1+\mu \left|x\right|/V)}{\mathrm{log}(1+\mu )}\mathrm{sgn}(x)$$

where *V* is the maximum value of the signal *x*,
µ is the µ-law parameter of the compander, log is the natural
logarithm, and sgn is the signum function (`sign`

in
MATLAB).

The output of the A-law compressor is

$$y=\{\begin{array}{cc}\begin{array}{c}\frac{A\left|x\right|}{1+\mathrm{log}A}\mathrm{sgn}(x)\\ \frac{V(1+\mathrm{log}(A\left|x\right|/V))}{1+\mathrm{log}A}\mathrm{sgn}(x)\end{array}& \begin{array}{c}\text{for}0\le \left|x\right|\le \frac{V}{A}\\ \text{for}\frac{V}{A}\left|x\right|\le V\end{array}\end{array}$$

where *A* is the A-law parameter of the compander
and the other elements are as in the µ-law case.

[1] Sklar, Bernard, *Digital
Communications: Fundamentals and Applications*, Englewood
Cliffs, NJ, Prentice-Hall, 1988.