v0.0¶
v0.0.9¶
Released November 12, 2023
Changes¶
Added polyphase rational resampling in
sdr.Resampler
.Added discrete-time FIR differentiating filters in
sdr.Differentiator
.Added discrete-time IIR integrating filters in
sdr.Integrator
.Added
sdr.percent()
,sdr.ppm()
, andsdr.ppb()
.Moved
sdr.DDS
functionality intosdr.NCO
. Removedsdr.DDS
.Added ability to seed the channel models.
Added option to compute measurements along a specified axis.
Added option to return measurements in decibels.
Replaced
pylint
withruff
.Replaced
black
withruff
.Improved type annotations.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.8¶
Released September 4, 2023
Changes¶
Added minimum-shift keying (MSK) in
sdr.MSK
.Added pulse shape customization to linear modulations.
Added theoretic detection performance of a matched filter in
sdr.ReplicaCorrelator
and an energy detector insdr.EnergyDetector
.Added Albersheim’s minimum required SNR approximation in
sdr.albersheim()
.Added plotting of receiver operating characteristic (ROC) curves in
sdr.plot.roc()
.Added plotting of probability of detection curves in
sdr.plot.p_d()
.Added plotting of phase trees of continuous-phase modulation (CPM) in
sdr.plot.phase_tree()
.Added sensible time and frequency units to plots.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.7¶
Released August 27, 2023
Changes¶
Added generic linear modulation schemes in
sdr.LinearModulation
.Added \(\pi/M\) PSK modulation in
sdr.PiMPSK
.Added offset QPSK modulation in
sdr.OQPSK
.Added rectangular pulse shapes in
sdr.rectangular()
.Added half-sine pulse shapes in
sdr.half_sine()
.Added pulse shaping in linear modulations. Now
map_symbols()
anddecide_symbols()
operate on 1 sample per symbol andmodulate()
anddemodulate()
operate on multiple samples per symbol.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.6¶
Released August 20, 2023
Changes¶
Added raster plots in
sdr.plot.raster()
.Added eye diagrams in
sdr.plot.eye()
.Added upsampling (without anti-aliasing filtering) in
sdr.upsample()
.Added downsampling (without anti-aliasing filtering) in
sdr.downsample()
.Added wavelength calculation in
sdr.wavelength()
.Supported real sinusoid mixing.
Supported returning measurements in dB.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.5¶
Released August 13, 2023
Changes¶
Added polyphase FIR decimator in
sdr.Decimator()
.Added multirate FIR filter design in
sdr.multirate_taps()
.Added polyphase decomposition in
sdr.polyphase_matrix()
.Added linear to decibel conversion in
sdr.db()
.Added decibel to linear conversion in
sdr.linear()
.Added linear and zero-order hold polyphase FIR interpolators.
Added a
state
property to FIR filters.Added a
flush()
method to FIR filters.Added support for passing filter objects into filter plotting functions.
Added ability to center or offset a time-domain plot.
Improved the string representation of classes.
Renamed
sdr.plot.frequency_response()
tosdr.plot.magnitude_response()
.Removed superfluous methods like
FIR.filter()
and replaced withFIR.__call__()
.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.4¶
Released August 6, 2023
Changes¶
Added error vector magnitude measurement in
sdr.evm()
.Added complex mixing (frequency translation) in
sdr.mix()
.Added real passband to complex baseband conversion in
sdr.to_complex_bb()
.Added complex baseband to real passband conversion in
sdr.to_real_pb()
.Added binary and bipolar Barker sequences in
sdr.barker()
.Added complex-valued Zadoff-Chu sequences in
sdr.zadoff_chu()
.Added theoretical BER/SER for DE-PSK.
Fixed theoretical BER/SER for PSK.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.3¶
Released July 30, 2023
Changes¶
Added PSK modulation in
sdr.PSK
.Added symbol mapping:
sdr.binary_code()
,sdr.gray_code()
.Added differential codes:
sdr.diff_encode()
,sdr.diff_decode()
.Added a FIR interpolating filter in
sdr.FIRInterpolator
.Added error rate measurement in
sdr.ErrorRate
.Added signal measurement functions:
sdr.energy()
,sdr.peak_power()
,sdr.average_power()
,sdr.papr()
,sdr.peak_voltage()
,sdr.rms_voltage()
,sdr.crest_factor()
.Added channel models:
sdr.bec()
,sdr.bsc()
,sdr.dmc()
.Added signal impairments:
sdr.awgn()
,sdr.frequency_offset()
,sdr.sample_rate_offset()
,sdr.iq_imbalance()
.Added probability functions:
sdr.Q()
,sdr.Qinv()
.Added link budget functions:
sdr.fpsl()
,sdr.parabolic_antenna()
.Added channel capacity functions:
sdr.awgn_capacity()
,sdr.bec_capacity()
,sdr.bsc_capacity()
.Added SNR conversion functions:
sdr.ebn0_to_esn0()
,sdr.ebn0_to_snr()
,sdr.esn0_to_ebn0()
,sdr.esn0_to_snr()
,sdr.snr_to_ebn0()
,sdr.snr_to_esn0()
.Added plotting functions for modulation:
sdr.plot.ber()
,sdr.plot.ser()
,sdr.plot.constellation()
,sdr.plot.symbol_map()
.Added more filter plotting functions:
sdr.plot.phase_response()
,sdr.plot.phase_delay()
.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.2¶
Released July 16, 2023
Changes¶
Added finite impulse response (FIR) filters in
sdr.FIR
.Added pulse shapes:
sdr.raised_cosine()
,sdr.root_raised_cosine()
,sdr.gaussian()
.Added plotting helper functions in
sdr.plot
:sdr.plot.time_domain()
sdr.plot.periodogram()
,sdr.plot.spectrogram()
sdr.plot.filter()
,sdr.plot.frequency_response
,sdr.plot.group_delay()
,sdr.plot.impulse_response()
,sdr.plot.step_response()
,sdr.plot.zeros_poles()
Added measurement functions:
sdr.papr()
,sdr.crest_factor()
.Added bit packing and unpacking functions:
sdr.pack()
,sdr.unpack()
.Added hexdump helper function in
sdr.hexdump()
.Improved type annotations.
Contributors¶
Matt Hostetter (@mhostetter)
v0.0.1¶
Released July 9, 2023
Changes¶
Added Farrow arbitrary resampling in
sdr.FarrowResampler
. (#1)Added infinite impulse response (IIR) filters in
sdr.IIR
. (#3)Added numerically-controlled oscillators (NCO) in
sdr.NCO
. (#4)Added direct digital synthesizers (DDS) in
sdr.DDS
. (#4)Added 2nd order, proportional-plus-integrator loop filters in
sdr.LoopFilter
. (#4)Added closed-loop PLL analysis in
sdr.ClosedLoopPLL
. (#5)
Contributors¶
Matt Hostetter (@mhostetter)