## Name

remez — Remez exchange algorithm for the weighted chebyshev
approximation of a continuous function with a sum of cosines.

## Calling Sequence

an=remez(guess,mag,fgrid,weight)

## Parameters

- guess
real array of size `n+2 the `

initial
guess

- fgrid
real array of size `ng`

: the grid of
normalized frequency points in [0,.5[

- mag
real array of size `ng`

: the desired
magnitude on grid `fg`

- weight
real array of size `ng`

: weighting function
on error on grid `fg`

- an
real array of size `n`

: cosine
coefficients

## Description

Minimax approximation of a frequency domain magnitude response. The
approximation takes the form

h = sum[a(i)*cos(weight)], i=1:n

An FIR, linear-phase filter can be obtained from the the output of
`remez`

by using the following commands:

hn(1:nc-1)=an(nc:-1:2)/2;
hn(nc)=an(1);
hn(nc+1:2*nc-1)=an(2:nc)/2;

This function is mainly intended to be called by the remezb function.

## Bibliography

E.W. Cheney, Introduction to Approximation Theory, McGraw-Hill,
1966

http://en.wikipedia.org/wiki/Remez_algorithm

## References

This function is based on the fortran code ```
remez.f
```

written by:

James H. Mcclellan, department of electrical engineering and
computer science, Massachusetts Institute of Technology, Cambridge,
Massachussets. 02139

Thomas W. Parks, department of electrical engineering, Rice
university, Houston, Texas 77001

Thomas W. Parks, department of electrical engineering, Rice
university, Houston, Texas 77001

## Examples

nc=21;
ngrid=nc*250;
fgrid=.5*(0:(ngrid-1))/(ngrid-1);
mag(1:ngrid/2)=ones(1:ngrid/2);
mag(ngrid/2+1:ngrid)=0*ones(1:ngrid/2);
weight=ones(fgrid);
guess=round(1:ngrid/nc:ngrid);
guess(nc+1)=ngrid;
guess(nc+2)=ngrid;
an=remez(guess,mag,fgrid,weight);