NOTE: This is a hosting of the works of A.J. Fisher who died on February 29 2000.
Source can be found at

If you would like this to be taken down, please contact me at

Raised Cosine Filters


A raised cosine filter is a low-pass filter which is commonly used for pulse shaping in data transmission systems (e.g. modems). The frequency response |H(f)| of a perfect raised cosine filter is symmetrical about 0 Hz, and is divided into three parts (just like Gallia): it is flat (constant) in the pass-band; it sinks in a graceful cosine curve to zero through the transition region; and it is zero outside the pass-band. The response of a real filter is an approximation to this behaviour.

The equations which defined the filter contain a parameter ``beta'', which is known as the roll-off factor or the excess bandwidth. ``beta'' lies between 0 and 1.

I'd like to show you the equations which define the frequency-domain and time-domain response, but HTML is not up to it. If you can view PostScript, you can see the equations here, or consult Proakis.


The filter is designed as a finite-impulse-response (FIR) filter. You specify the length of the impulse response; that is equal to the number (n, say) of x coefficients in the ``C'' code. The filter will have: Here we go:

We need to know the sample rate (in samples per second).
Sample rate:

Enter corner frequency ``alpha'', in Hz. This is the frequency at which the response is 0.5 = -6 dB (unless you select ``square root'' below, in which case it's -3 dB). In a pulse-shaping application, ``alpha'' is half the baud rate.
Corner frequency:

Enter the value of ``beta'', in the range 0 to 1:

Enter the length of the finite-impulse response, in samples. A suggested starting value is

The larger the value, the more accurate the filter, but the slower its execution.
Impulse length:

Do you want the filter to include x / sin x compensation for the step output of real-life DACs? You may select the raised-cosine response and the compensation individually. Tick (check) the ``Sqrt'' button for a square-root raised-cosine response.

You may apply a Hamming window to the time-domain impulse response. This can improve the frequency-domain response by significantly reducing the amplitude of the sidelobes, but for short filters it can distort the shape of the response in the passband. Tick (check) here to apply windowing:

If you are going to execute the generated filter on a fixed-point processor, you will want to know how the filter behaves when the coefficents are truncated to n bits. To find out, enter the value of n in the box. (If you are not interested in this feature, leave the field blank. For more information, click here.)
Truncate coefficients to bits

By default, the frequency response graph has a linear magnitude scale. If that is what you want, leave the following box blank. If you want a logarithmic magnitude scale in dB, enter the lower limit of the magnitude scale in dB here (e.g. -80).
Lower limit (dB), or blank for linear scale:

Submit form:

Reset form:

Tony Fisher /