ptolemy.math
Class SignalProcessing.SqrtRaisedCosineSampleGenerator

java.lang.Object
  extended by ptolemy.math.SignalProcessing.SqrtRaisedCosineSampleGenerator
All Implemented Interfaces:
DoubleUnaryOperation
Enclosing class:
SignalProcessing

public static class SignalProcessing.SqrtRaisedCosineSampleGenerator
extends java.lang.Object
implements DoubleUnaryOperation

This class generates samples of a square-root raised cosine pulse. The function computed is:

           4 x(cos((1+x)PI t/T) + T sin((1-x)PI t/T)/(4x t/T))
  h(t) =  ---------------------------------------------------
                PI sqrt(T)(1-(4 x t/T)2)
  

where x is the the excess bandwidth. This pulse convolved with itself will, in principle, be equal to a raised cosine pulse. However, because the pulse decays rather slowly for low excess bandwidth, this ideal is not closely approximated by short finite approximations of the pulse.

This implementation was ported from the Ptolemy 0.x implementation by Joe Buck, Brian Evans, and Edward A. Lee. Reference: E. A. Lee and D. G. Messerschmitt, Digital Communication, Second Edition, Kluwer Academic Publishers, Boston, 1994. The implementation was then further optimized to cache computations that are independent of time.


Field Summary
private  double _eightExcessPI
           
private  double _excess
           
private  double _fourExcess
           
private  double _fourExcessOverPISqrtFZC
           
private  double _fzcOverFourExcess
           
private  double _fzcSqrtFZCOverEightExcessPI
           
private  double _oneMinus
           
private  double _oneMinusFZCOverFourExcess
           
private  double _oneOverFZC
           
private  double _onePlus
           
private  double _sampleAtZero
           
private  double _sixteenExcessSquared
           
private  double _sqrtFZC
           
private  double _squareFZC
           
 
Constructor Summary
SignalProcessing.SqrtRaisedCosineSampleGenerator(double firstZeroCrossing, double excess)
          Construct a SqrtRaisedCosineSampleGenerator.
 
Method Summary
 double operate(double time)
          Operate on the operand, returning a value of the same type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_oneOverFZC

private final double _oneOverFZC

_sqrtFZC

private final double _sqrtFZC

_squareFZC

private final double _squareFZC

_onePlus

private final double _onePlus

_oneMinus

private final double _oneMinus

_excess

private final double _excess

_fourExcess

private final double _fourExcess

_eightExcessPI

private final double _eightExcessPI

_sixteenExcessSquared

private final double _sixteenExcessSquared

_sampleAtZero

private final double _sampleAtZero

_fourExcessOverPISqrtFZC

private final double _fourExcessOverPISqrtFZC

_fzcSqrtFZCOverEightExcessPI

private final double _fzcSqrtFZCOverEightExcessPI

_fzcOverFourExcess

private final double _fzcOverFourExcess

_oneMinusFZCOverFourExcess

private final double _oneMinusFZCOverFourExcess
Constructor Detail

SignalProcessing.SqrtRaisedCosineSampleGenerator

public SignalProcessing.SqrtRaisedCosineSampleGenerator(double firstZeroCrossing,
                                                        double excess)
Construct a SqrtRaisedCosineSampleGenerator.

Parameters:
firstZeroCrossing - The time of the first zero crossing of the corresponding raised cosine pulse.
excess - The excess bandwidth of the corresponding raised cosine pulse (also called the rolloff factor).
Method Detail

operate

public final double operate(double time)
Description copied from interface: DoubleUnaryOperation
Operate on the operand, returning a value of the same type.

Specified by:
operate in interface DoubleUnaryOperation
Parameters:
time - The operand.
Returns:
The results of the operation.