/* filtnyq.s */
/***********************************************************************
filtnyq()
************************************************************************
This star performs Nyquist pulse shaping for a baseband transmitter.
See Carlson, Communications Systems, page 381, equation 17b.
The Nyquist criterion in the frequency domain is to have an amplitude
rolloff which is symmetric about Fb/2 (half baud frequency).
First, a frequency-domain amplitude response is created using a raised
cosine shape. This computation is affected by:
Param: 1 - (int) smplbd: samples per baud interval. default=>8
2 - (int) expfft: 2^expfft = fft length to use. default=>8
3 - (float) beta: filter rolloff factor, 0.5
The amplitude response is changed to impulse response via inverse fft.
The impulse response is made causal by right shifting (filter delay),
and is time limited to "IMPBAUD" baud intervals (set by definition).
(This filter will cause a delay of IMPBAUD/2 baud intervals.)
Finally, the impulse response is transformed back to a frequency
response, which is used in subsequent linear convolution with the input,
which is implemented by the Fast Fourier Transform overlap-save method.
The fft length must be greater than the impulse response length;
for efficiency, a factor of two or more in length is desirable.
This implies that 2^expfft > smplbd * IMPBAUD.
Nyquist shaping has no meaning if smplbd = 1; this implies that
each sample would go through the filter unchanged!
filtnyq
This star performs Nyquist pulse shaping for a baseband transmitter.
See Carlson, Communications Systems, page 381, equation 17b.
The Nyquist criterion in the frequency domain is to have an amplitude
rolloff which is symmetric about Fb/2 (half baud frequency).
First, a frequency-domain amplitude response is created using a raised
cosine shape. This computation is affected by:
Param: 1 - (int) smplbd: samples per baud interval. default=>8
2 - (int) expfft: 2^expfft = fft length to use. default=>8
3 - (float) beta: filter rolloff factor, 0.5
The amplitude response is changed to impulse response via inverse fft.
The impulse response is made causal by right shifting (filter delay),
and is time limited to "IMPBAUD" baud intervals (set by definition).
(This filter will cause a delay of IMPBAUD/2 baud intervals.)
Finally, the impulse response is transformed back to a frequency
response, which is used in subsequent linear convolution with the input,
which is implemented by the Fast Fourier Transform overlap-save method.
The fft length must be greater than the impulse response length;
for efficiency, a factor of two or more in length is desirable.
This implies that 2^expfft > smplbd * IMPBAUD.
Nyquist shaping has no meaning if smplbd = 1; this implies that
each sample would go through the filter unchanged!
Programmer: L.J. Faber
Date: Jan. 14, 1987
Modified: 6/88 ljfaber. expand comments, fix flaws
Modified: 6/89 S. H. Ardalan.
*/