sdr.gaussian(time_bandwidth: float, span: int, sps: int, norm: 'power' | 'energy' | 'passband' = 'passband') NDArray[float_]

Returns a Gaussian pulse shape.

Parameters:
time_bandwidth: float

The time-bandwidth product \(B T_{sym}\) of the filter, where \(B\) is the one-sided 3-dB bandwidth in Hz and \(T_{sym}\) is the symbol time in seconds. The time-bandwidth product can also be thought of as the fractional bandwidth \(B / f_{sym}\). Smaller values produce wider pulses.

span: int

The length of the filter in symbols. The length of the filter is span * sps + 1 samples. The filter order span * sps must be even.

sps: int

The number of samples per symbol.

norm: 'power' | 'energy' | 'passband' = 'passband'

Indicates how to normalize the pulse shape.

  • "power": The pulse shape is normalized so that the maximum power is 1.

  • "energy": The pulse shape is normalized so that the total energy is 1.

  • "passband": The pulse shape is normalized so that the passband gain is 1.

Returns:

The Gaussian pulse shape.

Notes

The Gaussian pulse shape has a transfer function of

\[H(f) = \exp(-\alpha^2 f^2) .\]

The parameter \(\alpha\) is related to the 3-dB bandwidth \(B\) by

\[\alpha = \sqrt{\frac{\ln 2}{2}} \frac{T_{sym}}{B T_{sym}} = \sqrt{\frac{\ln 2}{2}} \frac{1}{B}.\]

The impulse response is defined as

\[h(t) = \frac{\sqrt{\pi}}{\alpha} \exp\left[-\left(\frac{\pi}{\alpha} t\right)^2 \right]. \]

References

Examples

In [1]: h_0p1 = sdr.gaussian(0.1, 5, 10); \
   ...: h_0p2 = sdr.gaussian(0.2, 5, 10); \
   ...: h_0p3 = sdr.gaussian(0.3, 5, 10);
   ...: 

In [2]: plt.figure(figsize=(8, 4)); \
   ...: sdr.plot.impulse_response(h_0p1, label=r"$B T_{sym} = 0.1$"); \
   ...: sdr.plot.impulse_response(h_0p2, label=r"$B T_{sym} = 0.2$"); \
   ...: sdr.plot.impulse_response(h_0p3, label=r"$B T_{sym} = 0.3$")
   ...: 
../../_images/sdr_gaussian_1.png

See the Pulse shapes example.