**Design by windowing**

The MATLAB function `fir1()`

designs
conventional lowpass, highpass, bandpass, and bandstop
linear-phase FIR filters based on the windowing
method. The command

```
b = fir1(N,Wn)
```

returns in vector `b`

the impulse response of a
lowpass filter of order `N`

. The cut-off
frequency `Wn`

must be between 0 and 1 with 1
corresponding to the half sampling rate.

The command

```
b = fir1(N,Wn,'high')
```

returns the impulse response of a highpass filter of order
`N`

with normalized cutoff frequency
`Wn`

.

Similarly, `b = fir1(N,Wn,'stop')`

with
`Wn`

a two-element vector designating the
stopband designs a bandstop filter.

Without explicit specification, the *Hamming
window* is employed in the design. Other
windowing functions can be used by specifying the
windowing function as an extra argument of the function.
For example, Blackman window can be used instead by the
command `b = fir1(N, Wn, blackman(N))`

.

**Parks-McClellan FIR filter design**

The MATLAB command

```
b = remez(N,F,A)
```

returns the impulse response of the length `N+1`

linear phase FIR filter of order `N`

designed
by Parks-McClellan algorithm. F is a vector of frequency
band edges in ascending order between 0 and 1 with 1
corresponding to the half sampling rate. A is a real
vector of the same size as F which specifies the desired
amplitude of the frequency response of the points
`(F(k),A(k))`

and `(F(k+1),A(k+1))`

for odd `k`

. For odd `k`

, the bands
between `F(k+1)`

and `F(k+2)`

is
considered as transition bands.