diff --git a/v0.0.x/.doctrees/api/plotting.doctree b/v0.0.x/.doctrees/api/plotting.doctree index a7e67103e..c374b2adb 100644 Binary files a/v0.0.x/.doctrees/api/plotting.doctree and b/v0.0.x/.doctrees/api/plotting.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.bec.doctree b/v0.0.x/.doctrees/api/sdr.bec.doctree index 6d0cbe0c9..265c5205c 100644 Binary files a/v0.0.x/.doctrees/api/sdr.bec.doctree and b/v0.0.x/.doctrees/api/sdr.bec.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.bsc.doctree b/v0.0.x/.doctrees/api/sdr.bsc.doctree index ad54ce471..dd2e2f16e 100644 Binary files a/v0.0.x/.doctrees/api/sdr.bsc.doctree and b/v0.0.x/.doctrees/api/sdr.bsc.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.dmc.doctree b/v0.0.x/.doctrees/api/sdr.dmc.doctree index 890b7f3cf..d5a6808bd 100644 Binary files a/v0.0.x/.doctrees/api/sdr.dmc.doctree and b/v0.0.x/.doctrees/api/sdr.dmc.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.esn0_to_ebn0.doctree b/v0.0.x/.doctrees/api/sdr.esn0_to_ebn0.doctree index 94151a98a..ed212f086 100644 Binary files a/v0.0.x/.doctrees/api/sdr.esn0_to_ebn0.doctree and b/v0.0.x/.doctrees/api/sdr.esn0_to_ebn0.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.evm.doctree b/v0.0.x/.doctrees/api/sdr.evm.doctree index a80abfd18..8f821162a 100644 Binary files a/v0.0.x/.doctrees/api/sdr.evm.doctree and b/v0.0.x/.doctrees/api/sdr.evm.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.plot.eye.doctree b/v0.0.x/.doctrees/api/sdr.plot.eye.doctree index 6313d9b41..a1b7ab894 100644 Binary files a/v0.0.x/.doctrees/api/sdr.plot.eye.doctree and b/v0.0.x/.doctrees/api/sdr.plot.eye.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.plot.raster.doctree b/v0.0.x/.doctrees/api/sdr.plot.raster.doctree index bde67ee09..5cac8b278 100644 Binary files a/v0.0.x/.doctrees/api/sdr.plot.raster.doctree and b/v0.0.x/.doctrees/api/sdr.plot.raster.doctree differ diff --git a/v0.0.x/.doctrees/api/sdr.snr_to_ebn0.doctree b/v0.0.x/.doctrees/api/sdr.snr_to_ebn0.doctree index a2c1b29a7..aac324f4e 100644 Binary files a/v0.0.x/.doctrees/api/sdr.snr_to_ebn0.doctree and b/v0.0.x/.doctrees/api/sdr.snr_to_ebn0.doctree differ diff --git a/v0.0.x/.doctrees/environment.pickle b/v0.0.x/.doctrees/environment.pickle index cf8651472..8172cf018 100644 Binary files a/v0.0.x/.doctrees/environment.pickle and b/v0.0.x/.doctrees/environment.pickle differ diff --git a/v0.0.x/_images/sdr_awgn_1.png b/v0.0.x/_images/sdr_awgn_1.png index d0ecf6e67..164138b0b 100644 Binary files a/v0.0.x/_images/sdr_awgn_1.png and b/v0.0.x/_images/sdr_awgn_1.png differ diff --git a/v0.0.x/_images/sdr_awgn_2.png b/v0.0.x/_images/sdr_awgn_2.png index 67a4b0a04..1c5afb08f 100644 Binary files a/v0.0.x/_images/sdr_awgn_2.png and b/v0.0.x/_images/sdr_awgn_2.png differ diff --git a/v0.0.x/_images/sdr_evm_1.png b/v0.0.x/_images/sdr_evm_1.png index 6ef819f21..0e6a12c7e 100644 Binary files a/v0.0.x/_images/sdr_evm_1.png and b/v0.0.x/_images/sdr_evm_1.png differ diff --git a/v0.0.x/_images/sdr_evm_2.png b/v0.0.x/_images/sdr_evm_2.png index 9fa28abd0..1e8a1f9b4 100644 Binary files a/v0.0.x/_images/sdr_evm_2.png and b/v0.0.x/_images/sdr_evm_2.png differ diff --git a/v0.0.x/_images/sdr_frequency_offset_1.png b/v0.0.x/_images/sdr_frequency_offset_1.png index 644ef3d2a..e196ae2ea 100644 Binary files a/v0.0.x/_images/sdr_frequency_offset_1.png and b/v0.0.x/_images/sdr_frequency_offset_1.png differ diff --git a/v0.0.x/_images/sdr_frequency_offset_2.png b/v0.0.x/_images/sdr_frequency_offset_2.png index 4544aa771..d78ffa254 100644 Binary files a/v0.0.x/_images/sdr_frequency_offset_2.png and b/v0.0.x/_images/sdr_frequency_offset_2.png differ diff --git a/v0.0.x/_images/sdr_plot_constellation_1.png b/v0.0.x/_images/sdr_plot_constellation_1.png index c590eefcf..e061e6c12 100644 Binary files a/v0.0.x/_images/sdr_plot_constellation_1.png and b/v0.0.x/_images/sdr_plot_constellation_1.png differ diff --git a/v0.0.x/_images/sdr_plot_constellation_2.png b/v0.0.x/_images/sdr_plot_constellation_2.png index 340a39dc5..7ef2affa9 100644 Binary files a/v0.0.x/_images/sdr_plot_constellation_2.png and b/v0.0.x/_images/sdr_plot_constellation_2.png differ diff --git a/v0.0.x/_images/sdr_plot_eye_1.png b/v0.0.x/_images/sdr_plot_eye_1.png index 93507ce66..f2e951d81 100644 Binary files a/v0.0.x/_images/sdr_plot_eye_1.png and b/v0.0.x/_images/sdr_plot_eye_1.png differ diff --git a/v0.0.x/_images/sdr_plot_eye_2.png b/v0.0.x/_images/sdr_plot_eye_2.png index ac7a11bef..d0e1c86df 100644 Binary files a/v0.0.x/_images/sdr_plot_eye_2.png and b/v0.0.x/_images/sdr_plot_eye_2.png differ diff --git a/v0.0.x/_images/sdr_plot_filter_1.png b/v0.0.x/_images/sdr_plot_filter_1.png index 8894bf582..ad7397c04 100644 Binary files a/v0.0.x/_images/sdr_plot_filter_1.png and b/v0.0.x/_images/sdr_plot_filter_1.png differ diff --git a/v0.0.x/_images/sdr_plot_magnitude_response_1.png b/v0.0.x/_images/sdr_plot_magnitude_response_1.png index d4a8fd033..9058959eb 100644 Binary files a/v0.0.x/_images/sdr_plot_magnitude_response_1.png and b/v0.0.x/_images/sdr_plot_magnitude_response_1.png differ diff --git a/v0.0.x/_images/sdr_plot_magnitude_response_3.png b/v0.0.x/_images/sdr_plot_magnitude_response_3.png index df3c13538..bc7d09e30 100644 Binary files a/v0.0.x/_images/sdr_plot_magnitude_response_3.png and b/v0.0.x/_images/sdr_plot_magnitude_response_3.png differ diff --git a/v0.0.x/_images/sdr_plot_phase_delay_1.png b/v0.0.x/_images/sdr_plot_phase_delay_1.png index 07e0e8a1e..31c9624b1 100644 Binary files a/v0.0.x/_images/sdr_plot_phase_delay_1.png and b/v0.0.x/_images/sdr_plot_phase_delay_1.png differ diff --git a/v0.0.x/_images/sdr_plot_phase_delay_3.png b/v0.0.x/_images/sdr_plot_phase_delay_3.png index 1f2831d72..16c1b0c7b 100644 Binary files a/v0.0.x/_images/sdr_plot_phase_delay_3.png and b/v0.0.x/_images/sdr_plot_phase_delay_3.png differ diff --git a/v0.0.x/_images/sdr_plot_phase_response_1.png b/v0.0.x/_images/sdr_plot_phase_response_1.png index a609b0d54..a493b1757 100644 Binary files a/v0.0.x/_images/sdr_plot_phase_response_1.png and b/v0.0.x/_images/sdr_plot_phase_response_1.png differ diff --git a/v0.0.x/_images/sdr_plot_time_domain_1.png b/v0.0.x/_images/sdr_plot_time_domain_1.png index cc2d929e9..b2b802518 100644 Binary files a/v0.0.x/_images/sdr_plot_time_domain_1.png and b/v0.0.x/_images/sdr_plot_time_domain_1.png differ diff --git a/v0.0.x/_images/sdr_plot_time_domain_2.png b/v0.0.x/_images/sdr_plot_time_domain_2.png index d91af961b..be79b5286 100644 Binary files a/v0.0.x/_images/sdr_plot_time_domain_2.png and b/v0.0.x/_images/sdr_plot_time_domain_2.png differ diff --git a/v0.0.x/_images/sdr_raised_cosine_2.png b/v0.0.x/_images/sdr_raised_cosine_2.png index 8c181d4d8..e43aa6be4 100644 Binary files a/v0.0.x/_images/sdr_raised_cosine_2.png and b/v0.0.x/_images/sdr_raised_cosine_2.png differ diff --git a/v0.0.x/_images/sdr_raised_cosine_4.png b/v0.0.x/_images/sdr_raised_cosine_4.png index b6fd299fa..69557428c 100644 Binary files a/v0.0.x/_images/sdr_raised_cosine_4.png and b/v0.0.x/_images/sdr_raised_cosine_4.png differ diff --git a/v0.0.x/_images/sdr_root_raised_cosine_2.png b/v0.0.x/_images/sdr_root_raised_cosine_2.png index 652a18044..5f1ac76b8 100644 Binary files a/v0.0.x/_images/sdr_root_raised_cosine_2.png and b/v0.0.x/_images/sdr_root_raised_cosine_2.png differ diff --git a/v0.0.x/_images/sdr_root_raised_cosine_4.png b/v0.0.x/_images/sdr_root_raised_cosine_4.png index 5867e6ed6..495cc66c3 100644 Binary files a/v0.0.x/_images/sdr_root_raised_cosine_4.png and b/v0.0.x/_images/sdr_root_raised_cosine_4.png differ diff --git a/v0.0.x/_images/sdr_sample_rate_offset_1.png b/v0.0.x/_images/sdr_sample_rate_offset_1.png index 1715840e3..f78cc7eb0 100644 Binary files a/v0.0.x/_images/sdr_sample_rate_offset_1.png and b/v0.0.x/_images/sdr_sample_rate_offset_1.png differ diff --git a/v0.0.x/_images/sdr_sample_rate_offset_2.png b/v0.0.x/_images/sdr_sample_rate_offset_2.png index ae06947c0..ce4387c14 100644 Binary files a/v0.0.x/_images/sdr_sample_rate_offset_2.png and b/v0.0.x/_images/sdr_sample_rate_offset_2.png differ diff --git a/v0.0.x/_images/sdr_to_complex_bb_1.png b/v0.0.x/_images/sdr_to_complex_bb_1.png index eb74ae020..c2a74d49e 100644 Binary files a/v0.0.x/_images/sdr_to_complex_bb_1.png and b/v0.0.x/_images/sdr_to_complex_bb_1.png differ diff --git a/v0.0.x/_images/sdr_to_complex_bb_2.png b/v0.0.x/_images/sdr_to_complex_bb_2.png index 37c94368c..456f154b8 100644 Binary files a/v0.0.x/_images/sdr_to_complex_bb_2.png and b/v0.0.x/_images/sdr_to_complex_bb_2.png differ diff --git a/v0.0.x/_images/sdr_to_complex_bb_3.png b/v0.0.x/_images/sdr_to_complex_bb_3.png index 222ae6554..93dd7cb81 100644 Binary files a/v0.0.x/_images/sdr_to_complex_bb_3.png and b/v0.0.x/_images/sdr_to_complex_bb_3.png differ diff --git a/v0.0.x/_images/sdr_to_complex_bb_4.png b/v0.0.x/_images/sdr_to_complex_bb_4.png index 0181f6ecb..225ad268a 100644 Binary files a/v0.0.x/_images/sdr_to_complex_bb_4.png and b/v0.0.x/_images/sdr_to_complex_bb_4.png differ diff --git a/v0.0.x/_images/sdr_to_real_pb_1.png b/v0.0.x/_images/sdr_to_real_pb_1.png index d7e5f288e..e4c206eea 100644 Binary files a/v0.0.x/_images/sdr_to_real_pb_1.png and b/v0.0.x/_images/sdr_to_real_pb_1.png differ diff --git a/v0.0.x/_images/sdr_to_real_pb_2.png b/v0.0.x/_images/sdr_to_real_pb_2.png index 14539cbd4..9c01212cd 100644 Binary files a/v0.0.x/_images/sdr_to_real_pb_2.png and b/v0.0.x/_images/sdr_to_real_pb_2.png differ diff --git a/v0.0.x/_images/sdr_to_real_pb_3.png b/v0.0.x/_images/sdr_to_real_pb_3.png index c1ddb27e2..537bac2c6 100644 Binary files a/v0.0.x/_images/sdr_to_real_pb_3.png and b/v0.0.x/_images/sdr_to_real_pb_3.png differ diff --git a/v0.0.x/_images/sdr_to_real_pb_4.png b/v0.0.x/_images/sdr_to_real_pb_4.png index 2fb22d614..51d2d08ff 100644 Binary files a/v0.0.x/_images/sdr_to_real_pb_4.png and b/v0.0.x/_images/sdr_to_real_pb_4.png differ diff --git a/v0.0.x/api/conversions/index.html b/v0.0.x/api/conversions/index.html index a2a6b0258..49ec1934d 100644 --- a/v0.0.x/api/conversions/index.html +++ b/v0.0.x/api/conversions/index.html @@ -6723,7 +6723,7 @@
Plots a raster of the time-domain signal \(x[n]\).
2
, ...)Plots the eye diagram of the real baseband signal \(x[k]\).
+sdr.plot.eye(x: ArrayLike, sps: int, span: int =2
, ...)
+Plots the eye diagram of the baseband modulated signal \(x[n]\).
When 20 bits are passed through a BEC with erasure probability \(p=0.25\), roughly 5 bits are erased at the output.
In [1]: x = np.random.randint(0, 2, 20); x
-Out[1]: array([1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1])
+Out[1]: array([0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1])
In [2]: y = sdr.bec(x, 0.25); y
Out[2]:
-array([ 1, 0, 1, -1, 1, 1, 1, 0, 1, -1, 0, 1, 0, 0, -1, 0, 0,
- 0, 0, 1])
+array([ 0, 0, 0, 0, 1, 0, 1, 1, 1, -1, 0, 1, -1, -1, -1, 0, 0,
+ 1, -1, -1])
In [3]: x == y
Out[3]:
-array([ True, True, True, False, True, True, True, True, True,
- False, True, True, True, True, False, True, True, True,
- True, True])
+array([ True, True, True, True, True, True, True, True, True,
+ False, True, True, False, False, False, True, True, True,
+ False, False])
When 20 bits are passed through a BSC with transition probability \(p=0.25\), roughly 5 bits are flipped at the output.
In [1]: x = np.random.randint(0, 2, 20); x
-Out[1]: array([0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1])
+Out[1]: array([1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 1])
In [2]: y = sdr.bsc(x, 0.25); y
-Out[2]: array([0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1])
+Out[2]: array([1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1])
In [3]: x == y
Out[3]:
-array([ True, True, True, True, True, True, True, True, True,
- True, False, True, True, False, True, True, False, False,
- True, True])
+array([ True, True, True, True, True, True, True, False, False,
+ False, True, True, True, True, True, True, False, True,
+ False, True])
In [1]: p = 0.25
In [2]: x = np.random.randint(0, 2, 20); x
-Out[2]: array([0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1])
+Out[2]: array([1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0])
In [3]: P = [[1 - p, p], [p, 1 - p]]
In [4]: y = sdr.dmc(x, P); y
-Out[4]: array([0, 0, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1])
+Out[4]: array([1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0])
In [5]: x == y
Out[5]:
-array([ True, False, True, True, False, True, True, True, False,
- True, True, True, True, True, True, True, False, False,
- True, True])
+array([ True, True, True, False, False, False, True, True, True,
+ True, True, True, True, True, True, False, True, True,
+ False, True])
Define the binary erasure channel (BEC) with erasure probability \(p=0.25\).
In [6]: p = 0.25
In [7]: x = np.random.randint(0, 2, 20); x
-Out[7]: array([1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0])
+Out[7]: array([0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0])
In [8]: P = [[1 - p, 0, p], [0, 1 - p, p]]
# Specify the erasure as -1
In [9]: y = sdr.dmc(x, P, Y=[0, 1, -1]); y
Out[9]:
-array([ 1, 0, -1, 0, 0, 0, 0, 0, 0, -1, 0, 1, 0, 1, 0, -1, 0,
- 0, 0, -1])
+array([-1, 0, 0, 1, 1, 0, -1, 0, 1, 1, -1, -1, 1, -1, 1, -1, 1,
+ -1, 1, 0])
In [10]: x == y
Out[10]:
-array([ True, True, False, True, True, True, True, True, True,
- False, True, True, True, True, True, False, True, True,
- True, False])
+array([False, True, True, True, True, True, False, True, True,
+ True, False, False, True, False, True, False, True, False,
+ True, True])
Examples¶
Convert from \(E_s/N_0 = 5\) dB to \(E_b/N_0\) for a 4-QAM signal with \(r = 2/3\).
In [1]: sdr.esn0_to_ebn0(5, 2, rate=2/3)
-Out[1]: 3.750612633917001
+Out[1]: 3.7506126339170005
Convert from \(E_s/N_0 = 10\) dB to \(E_b/N_0\) for a 16-QAM signal with \(r = 1\).
diff --git a/v0.0.x/api/sdr.esn0_to_snr/index.html b/v0.0.x/api/sdr.esn0_to_snr/index.html index 46c33d5bc..c63fa6c14 100644 --- a/v0.0.x/api/sdr.esn0_to_snr/index.html +++ b/v0.0.x/api/sdr.esn0_to_snr/index.html @@ -6653,7 +6653,7 @@Measure the RMS EVM, normalizing with the average power of the reference symbols. Either the symbol map or noiseless transmitted symbols may be passed.
In [3]: sdr.evm(x_hat, psk.symbol_map)
-Out[3]: 10.0006886388253
+Out[3]: 10.04193759537693
In [4]: sdr.evm(x_hat, x)
-Out[4]: 10.0006886388253
+Out[4]: 10.04193759537693
Measure the RMS EVM, normalizing with the average power of the received symbols.
In [5]: sdr.evm(x_hat, psk.symbol_map, norm="average-power")
-Out[5]: 9.977333228600967
+Out[5]: 10.037744226270028
Measure the RMS EVM, normalizing with the peak power of the received symbols.
In [6]: sdr.evm(x_hat, psk.symbol_map, norm="peak-power")
-Out[6]: 8.290563817476425
+Out[6]: 8.110454638467562
Measure the 95th percentile EVM.
In [7]: sdr.evm(x_hat, psk.symbol_map, output=95)
-Out[7]: 17.158719309277938
+Out[7]: 17.260526885667165
Measure the instantaneous EVM for each symbol.
diff --git a/v0.0.x/api/sdr.frequency_offset/index.html b/v0.0.x/api/sdr.frequency_offset/index.html index 6b1b964a7..d2e8a2937 100644 --- a/v0.0.x/api/sdr.frequency_offset/index.html +++ b/v0.0.x/api/sdr.frequency_offset/index.html @@ -6674,7 +6674,7 @@2
, sample_rate: float | None = None
, color: 'index' | str = 'index'
, **kwargs)Plots the eye diagram of the real baseband signal \(x[k]\).
+sdr.plot.eye(x: ArrayLike, sps: int, span: int =2
, sample_rate: float | None = None
, color: 'index' | str = 'index'
, **kwargs)
+Plots the eye diagram of the baseband modulated signal \(x[n]\).
The real baseband signal \(x[k]\).
+The baseband modulated signal \(x[n]\). If x
is complex, the real and imaginary rasters are interleaved.
+Time order is preserved.
The number of samples per symbol.
Note
-To plot an eye diagram for I and Q, call this function twice, passing x.real
and then x.imag
.
Example¶
-Modulate 100 BPSK symbols.
-In [1]: psk = sdr.PSK(2); \
+Modulate 100 QPSK symbols.
+In [1]: psk = sdr.PSK(4, phase_offset=45); \
...: s = np.random.randint(0, psk.order, 100); \
...: a = psk.modulate(s)
...:
-Apply a raised cosine pulse shape and examine the eye diagram of the I channel. Since the raised
-cosine pulse shape is a Nyquist filter, there is no intersymbol interference (ISI) at the symbol decisions.
+Apply a raised cosine pulse shape and examine the eye diagram. Since the raised cosine pulse shape
+is a Nyquist filter, there is no intersymbol interference (ISI) at the symbol decisions.
In [2]: sps = 25; \
...: h = sdr.raised_cosine(0.5, 6, sps); \
...: fir = sdr.Interpolator(sps, h); \
@@ -7149,13 +7146,15 @@
...:
In [3]: plt.figure(figsize=(8, 4)); \
- ...: sdr.plot.eye(x.real, sps)
+ ...: sdr.plot.eye(x, sps)
...:
-Apply a root raised cosine pulse shape and examine the eye diagram of the I channel. The root raised
-cosine filter is not a Nyquist filter, and ISI can be observed.
+Apply a root raised cosine pulse shape and examine the eye diagram. The root raised cosine filter
+is not a Nyquist filter, and ISI can be observed. (It should be noted that two cascaded root raised
+cosine filters, one for transmit and one for receive, is a Nyquist filter. This is why SRRC pulse shaping
+is often used in practice.)
In [4]: sps = 25; \
...: h = sdr.root_raised_cosine(0.5, 6, sps); \
...: fir = sdr.Interpolator(sps, h); \
@@ -7163,7 +7162,7 @@
...:
In [5]: plt.figure(figsize=(8, 4)); \
- ...: sdr.plot.eye(x.real, sps)
+ ...: sdr.plot.eye(x, sps)
...:
diff --git a/v0.0.x/api/sdr.plot.filter/index.html b/v0.0.x/api/sdr.plot.filter/index.html
index f69c8870a..7d6ae8751 100644
--- a/v0.0.x/api/sdr.plot.filter/index.html
+++ b/v0.0.x/api/sdr.plot.filter/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.group_delay/index.html b/v0.0.x/api/sdr.plot.group_delay/index.html
index dbe93a04e..38b890ee5 100644
--- a/v0.0.x/api/sdr.plot.group_delay/index.html
+++ b/v0.0.x/api/sdr.plot.group_delay/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.impulse_response/index.html b/v0.0.x/api/sdr.plot.impulse_response/index.html
index bf9cebd58..7068ec170 100644
--- a/v0.0.x/api/sdr.plot.impulse_response/index.html
+++ b/v0.0.x/api/sdr.plot.impulse_response/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.magnitude_response/index.html b/v0.0.x/api/sdr.plot.magnitude_response/index.html
index 98f2e855b..dbce20597 100644
--- a/v0.0.x/api/sdr.plot.magnitude_response/index.html
+++ b/v0.0.x/api/sdr.plot.magnitude_response/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.periodogram/index.html b/v0.0.x/api/sdr.plot.periodogram/index.html
index eb249436c..518d8a892 100644
--- a/v0.0.x/api/sdr.plot.periodogram/index.html
+++ b/v0.0.x/api/sdr.plot.periodogram/index.html
@@ -6695,7 +6695,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.phase_delay/index.html b/v0.0.x/api/sdr.plot.phase_delay/index.html
index ceb7c4415..ae927f68c 100644
--- a/v0.0.x/api/sdr.plot.phase_delay/index.html
+++ b/v0.0.x/api/sdr.plot.phase_delay/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.phase_response/index.html b/v0.0.x/api/sdr.plot.phase_response/index.html
index 5691eef5a..93a0797fc 100644
--- a/v0.0.x/api/sdr.plot.phase_response/index.html
+++ b/v0.0.x/api/sdr.plot.phase_response/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.raster/index.html b/v0.0.x/api/sdr.plot.raster/index.html
index 24ea6720e..5771757be 100644
--- a/v0.0.x/api/sdr.plot.raster/index.html
+++ b/v0.0.x/api/sdr.plot.raster/index.html
@@ -6469,7 +6469,7 @@
-
- x
+ x
@@ -6674,7 +6674,7 @@
-
- eye
+ eye
@@ -7038,7 +7038,7 @@
-
- x
+ x
@@ -7106,12 +7106,13 @@
-
-sdr.plot.raster(x: ArrayLike, length: int, stride: int | None =
None
, sample_rate: float | None = None
, color: 'index' | str = 'index'
, colorbar: bool = False
, **kwargs)
+sdr.plot.raster(x: ArrayLike, length: int, stride: int | None = None
, sample_rate: float | None = None
, color: 'index' | str = 'index'
, colorbar: bool = False
, **kwargs)
Plots a raster of the time-domain signal \(x[n]\).
- Parameters:¶
-- x: ArrayLike¶
The time-domain signal \(x[n]\).
+- x: ArrayLike¶
The time-domain signal \(x[n]\). If x
is complex, the real and imaginary rasters are interleaved.
+Time order is preserved.
- length: int¶
The length of each raster in samples.
@@ -7128,7 +7129,7 @@
- **kwargs¶
Additional keyword arguments to pass to matplotlib.collections.LineCollection
.
The following keyword arguments are set by default. The defaults may be overwritten.
-"linewidths"
: (0.5, 1, 1.5, 2)
+"linewidths"
: 1
"linestyles"
: "solid"
diff --git a/v0.0.x/api/sdr.plot.ser/index.html b/v0.0.x/api/sdr.plot.ser/index.html
index c56a4321c..cf519373d 100644
--- a/v0.0.x/api/sdr.plot.ser/index.html
+++ b/v0.0.x/api/sdr.plot.ser/index.html
@@ -6581,7 +6581,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.spectrogram/index.html b/v0.0.x/api/sdr.plot.spectrogram/index.html
index e6a4fb508..682e9bfa0 100644
--- a/v0.0.x/api/sdr.plot.spectrogram/index.html
+++ b/v0.0.x/api/sdr.plot.spectrogram/index.html
@@ -6688,7 +6688,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.step_response/index.html b/v0.0.x/api/sdr.plot.step_response/index.html
index caf5aba62..0ec3f2e50 100644
--- a/v0.0.x/api/sdr.plot.step_response/index.html
+++ b/v0.0.x/api/sdr.plot.step_response/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.symbol_map/index.html b/v0.0.x/api/sdr.plot.symbol_map/index.html
index 7580e2d95..2b8522cff 100644
--- a/v0.0.x/api/sdr.plot.symbol_map/index.html
+++ b/v0.0.x/api/sdr.plot.symbol_map/index.html
@@ -6660,7 +6660,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.time_domain/index.html b/v0.0.x/api/sdr.plot.time_domain/index.html
index a8f9df90a..dc740512d 100644
--- a/v0.0.x/api/sdr.plot.time_domain/index.html
+++ b/v0.0.x/api/sdr.plot.time_domain/index.html
@@ -6674,7 +6674,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.use_style/index.html b/v0.0.x/api/sdr.plot.use_style/index.html
index bf293ea88..56e391bc4 100644
--- a/v0.0.x/api/sdr.plot.use_style/index.html
+++ b/v0.0.x/api/sdr.plot.use_style/index.html
@@ -6619,7 +6619,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.plot.zeros_poles/index.html b/v0.0.x/api/sdr.plot.zeros_poles/index.html
index dcca78fec..bbbf32fa0 100644
--- a/v0.0.x/api/sdr.plot.zeros_poles/index.html
+++ b/v0.0.x/api/sdr.plot.zeros_poles/index.html
@@ -6579,7 +6579,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.polyphase_matrix/index.html b/v0.0.x/api/sdr.polyphase_matrix/index.html
index 84aa221a4..75a78f8fb 100644
--- a/v0.0.x/api/sdr.polyphase_matrix/index.html
+++ b/v0.0.x/api/sdr.polyphase_matrix/index.html
@@ -6674,7 +6674,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.raised_cosine/index.html b/v0.0.x/api/sdr.raised_cosine/index.html
index 8b8fa48b1..9e22237be 100644
--- a/v0.0.x/api/sdr.raised_cosine/index.html
+++ b/v0.0.x/api/sdr.raised_cosine/index.html
@@ -6667,7 +6667,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.rms_voltage/index.html b/v0.0.x/api/sdr.rms_voltage/index.html
index 341c89098..dffea02ae 100644
--- a/v0.0.x/api/sdr.rms_voltage/index.html
+++ b/v0.0.x/api/sdr.rms_voltage/index.html
@@ -6639,7 +6639,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.root_raised_cosine/index.html b/v0.0.x/api/sdr.root_raised_cosine/index.html
index 0c050128c..480b29fa0 100644
--- a/v0.0.x/api/sdr.root_raised_cosine/index.html
+++ b/v0.0.x/api/sdr.root_raised_cosine/index.html
@@ -6667,7 +6667,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.sample_rate_offset/index.html b/v0.0.x/api/sdr.sample_rate_offset/index.html
index 3506496bb..5176ca4bf 100644
--- a/v0.0.x/api/sdr.sample_rate_offset/index.html
+++ b/v0.0.x/api/sdr.sample_rate_offset/index.html
@@ -6653,7 +6653,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.snr_to_ebn0/index.html b/v0.0.x/api/sdr.snr_to_ebn0/index.html
index a66672796..44ad756ed 100644
--- a/v0.0.x/api/sdr.snr_to_ebn0/index.html
+++ b/v0.0.x/api/sdr.snr_to_ebn0/index.html
@@ -6667,7 +6667,7 @@
-
- eye
+ eye
@@ -7120,7 +7120,7 @@
Examples¶
Convert from \(S/N = 5\) dB to \(E_b/N_0\) for a 4-QAM signal with \(r = 2/3\) and 1 sample per symbol.
In [1]: sdr.snr_to_ebn0(5, 2, rate=2/3, sps=1)
-Out[1]: 3.750612633917001
+Out[1]: 3.7506126339170005
Convert from \(S/N = 10\) dB to \(E_b/N_0\) for a 16-QAM signal with \(r = 1\) and 4 samples per symbol.
diff --git a/v0.0.x/api/sdr.snr_to_esn0/index.html b/v0.0.x/api/sdr.snr_to_esn0/index.html
index 3ad8444b6..379fe1110 100644
--- a/v0.0.x/api/sdr.snr_to_esn0/index.html
+++ b/v0.0.x/api/sdr.snr_to_esn0/index.html
@@ -6653,7 +6653,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.to_complex_bb/index.html b/v0.0.x/api/sdr.to_complex_bb/index.html
index b6c08902a..8eb619e60 100644
--- a/v0.0.x/api/sdr.to_complex_bb/index.html
+++ b/v0.0.x/api/sdr.to_complex_bb/index.html
@@ -6646,7 +6646,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.to_real_pb/index.html b/v0.0.x/api/sdr.to_real_pb/index.html
index 9aeadc80e..cc2f5e698 100644
--- a/v0.0.x/api/sdr.to_real_pb/index.html
+++ b/v0.0.x/api/sdr.to_real_pb/index.html
@@ -6646,7 +6646,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.unpack/index.html b/v0.0.x/api/sdr.unpack/index.html
index 5cbd52b84..6864bbf7f 100644
--- a/v0.0.x/api/sdr.unpack/index.html
+++ b/v0.0.x/api/sdr.unpack/index.html
@@ -6658,7 +6658,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sdr.zadoff_chu/index.html b/v0.0.x/api/sdr.zadoff_chu/index.html
index 2cc96a457..121575aac 100644
--- a/v0.0.x/api/sdr.zadoff_chu/index.html
+++ b/v0.0.x/api/sdr.zadoff_chu/index.html
@@ -6672,7 +6672,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/sequences/index.html b/v0.0.x/api/sequences/index.html
index 0cb10abae..eb63f41c1 100644
--- a/v0.0.x/api/sequences/index.html
+++ b/v0.0.x/api/sequences/index.html
@@ -6624,7 +6624,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/simulation/index.html b/v0.0.x/api/simulation/index.html
index 8a87fd7e6..2ed6f6a41 100644
--- a/v0.0.x/api/simulation/index.html
+++ b/v0.0.x/api/simulation/index.html
@@ -6690,7 +6690,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/api/synchronization/index.html b/v0.0.x/api/synchronization/index.html
index 11defff2f..30c8e0d8e 100644
--- a/v0.0.x/api/synchronization/index.html
+++ b/v0.0.x/api/synchronization/index.html
@@ -7109,7 +7109,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/development/documentation/index.html b/v0.0.x/development/documentation/index.html
index be65b7b8d..eed5f0ee0 100644
--- a/v0.0.x/development/documentation/index.html
+++ b/v0.0.x/development/documentation/index.html
@@ -6629,7 +6629,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/development/installation/index.html b/v0.0.x/development/installation/index.html
index e9b32aaa5..82c0d5f02 100644
--- a/v0.0.x/development/installation/index.html
+++ b/v0.0.x/development/installation/index.html
@@ -6636,7 +6636,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/development/linter/index.html b/v0.0.x/development/linter/index.html
index 1065ff05f..d1d361fc4 100644
--- a/v0.0.x/development/linter/index.html
+++ b/v0.0.x/development/linter/index.html
@@ -6636,7 +6636,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/development/unit-tests/index.html b/v0.0.x/development/unit-tests/index.html
index 59f01d962..7df1a53f3 100644
--- a/v0.0.x/development/unit-tests/index.html
+++ b/v0.0.x/development/unit-tests/index.html
@@ -6636,7 +6636,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/farrow-resampler/index.html b/v0.0.x/examples/farrow-resampler/index.html
index 270dc22e0..b6f6c9995 100644
--- a/v0.0.x/examples/farrow-resampler/index.html
+++ b/v0.0.x/examples/farrow-resampler/index.html
@@ -6650,7 +6650,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/fir-filters/index.html b/v0.0.x/examples/fir-filters/index.html
index 6526d2705..20196660f 100644
--- a/v0.0.x/examples/fir-filters/index.html
+++ b/v0.0.x/examples/fir-filters/index.html
@@ -6650,7 +6650,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/iir-filters/index.html b/v0.0.x/examples/iir-filters/index.html
index ec68fa433..da9bfa722 100644
--- a/v0.0.x/examples/iir-filters/index.html
+++ b/v0.0.x/examples/iir-filters/index.html
@@ -6664,7 +6664,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/peak-to-average-power/index.html b/v0.0.x/examples/peak-to-average-power/index.html
index 8972fe9d5..95294c17a 100644
--- a/v0.0.x/examples/peak-to-average-power/index.html
+++ b/v0.0.x/examples/peak-to-average-power/index.html
@@ -6636,7 +6636,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/phase-locked-loop/index.html b/v0.0.x/examples/phase-locked-loop/index.html
index efe0f46d5..0dad15aa1 100644
--- a/v0.0.x/examples/phase-locked-loop/index.html
+++ b/v0.0.x/examples/phase-locked-loop/index.html
@@ -6663,7 +6663,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/psk/index.html b/v0.0.x/examples/psk/index.html
index b85edb3db..c16a120b0 100644
--- a/v0.0.x/examples/psk/index.html
+++ b/v0.0.x/examples/psk/index.html
@@ -6683,7 +6683,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/examples/pulse-shapes/index.html b/v0.0.x/examples/pulse-shapes/index.html
index d07fe2af0..74826d6a0 100644
--- a/v0.0.x/examples/pulse-shapes/index.html
+++ b/v0.0.x/examples/pulse-shapes/index.html
@@ -6629,7 +6629,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/genindex/index.html b/v0.0.x/genindex/index.html
index 11e3bfce7..d20186c1d 100644
--- a/v0.0.x/genindex/index.html
+++ b/v0.0.x/genindex/index.html
@@ -6570,7 +6570,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/index.html b/v0.0.x/index.html
index eee0a490a..6e8daabdd 100644
--- a/v0.0.x/index.html
+++ b/v0.0.x/index.html
@@ -6573,7 +6573,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/objects.inv b/v0.0.x/objects.inv
index 91ce3bf3f..e2274bc1a 100644
Binary files a/v0.0.x/objects.inv and b/v0.0.x/objects.inv differ
diff --git a/v0.0.x/py-modindex/index.html b/v0.0.x/py-modindex/index.html
index 041066fd2..8a42daaba 100644
--- a/v0.0.x/py-modindex/index.html
+++ b/v0.0.x/py-modindex/index.html
@@ -6575,7 +6575,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/release-notes/v0.0/index.html b/v0.0.x/release-notes/v0.0/index.html
index c51f8c639..b3fbab499 100644
--- a/v0.0.x/release-notes/v0.0/index.html
+++ b/v0.0.x/release-notes/v0.0/index.html
@@ -6575,7 +6575,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/release-notes/versioning/index.html b/v0.0.x/release-notes/versioning/index.html
index d543f1987..bdda19d5e 100644
--- a/v0.0.x/release-notes/versioning/index.html
+++ b/v0.0.x/release-notes/versioning/index.html
@@ -6575,7 +6575,7 @@
-
- eye
+ eye
diff --git a/v0.0.x/searchindex.js b/v0.0.x/searchindex.js
index 1b90f5022..890004d13 100644
--- a/v0.0.x/searchindex.js
+++ b/v0.0.x/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"titles": ["Conversions", "Data manipulation", "Digital signal processing", "Link budgets", "Measurement", "Modulation", "Plotting", "Probability", "sdr.ClosedLoopPLL", "sdr.ClosedLoopPLL.Bn", "sdr.ClosedLoopPLL.BnT", "sdr.ClosedLoopPLL.K0", "sdr.ClosedLoopPLL.K1", "sdr.ClosedLoopPLL.K2", "sdr.ClosedLoopPLL.Kp", "sdr.ClosedLoopPLL.__init__", "sdr.ClosedLoopPLL.frequency_lock_time", "sdr.ClosedLoopPLL.iir", "sdr.ClosedLoopPLL.lock_time", "sdr.ClosedLoopPLL.omega_3dB", "sdr.ClosedLoopPLL.omega_n", "sdr.ClosedLoopPLL.phase_error_variance", "sdr.ClosedLoopPLL.phase_lock_time", "sdr.ClosedLoopPLL.sample_rate", "sdr.ClosedLoopPLL.zeta", "sdr.DDS", "sdr.DDS.__call__", "sdr.DDS.__init__", "sdr.DDS.nco", "sdr.DDS.reset", "sdr.DDS.step", "sdr.Decimator", "sdr.Decimator.__call__", "sdr.Decimator.__init__", "sdr.Decimator.__repr__", "sdr.Decimator.__str__", "sdr.Decimator.method", "sdr.Decimator.polyphase_taps", "sdr.Decimator.rate", "sdr.Decimator.reset", "sdr.Decimator.taps", "sdr.ErrorRate", "sdr.ErrorRate.__init__", "sdr.ErrorRate.add", "sdr.ErrorRate.counts", "sdr.ErrorRate.error_rate", "sdr.ErrorRate.error_rates", "sdr.ErrorRate.errors", "sdr.FIR", "sdr.FIR.__call__", "sdr.FIR.__init__", "sdr.FIR.__len__", "sdr.FIR.__repr__", "sdr.FIR.__str__", "sdr.FIR.delay", "sdr.FIR.flush", "sdr.FIR.frequency_response", "sdr.FIR.frequency_response_log", "sdr.FIR.impulse_response", "sdr.FIR.order", "sdr.FIR.reset", "sdr.FIR.state", "sdr.FIR.step_response", "sdr.FIR.streaming", "sdr.FIR.taps", "sdr.FarrowResampler", "sdr.FarrowResampler.__call__", "sdr.FarrowResampler.__init__", "sdr.FarrowResampler.order", "sdr.FarrowResampler.reset", "sdr.FarrowResampler.streaming", "sdr.FarrowResampler.taps", "sdr.IIR", "sdr.IIR.ZerosPoles", "sdr.IIR.__call__", "sdr.IIR.__init__", "sdr.IIR.__repr__", "sdr.IIR.__str__", "sdr.IIR.a_taps", "sdr.IIR.b_taps", "sdr.IIR.frequency_response", "sdr.IIR.frequency_response_log", "sdr.IIR.gain", "sdr.IIR.impulse_response", "sdr.IIR.order", "sdr.IIR.poles", "sdr.IIR.reset", "sdr.IIR.state", "sdr.IIR.step_response", "sdr.IIR.streaming", "sdr.IIR.zeros", "sdr.Interpolator", "sdr.Interpolator.__call__", "sdr.Interpolator.__init__", "sdr.Interpolator.__repr__", "sdr.Interpolator.__str__", "sdr.Interpolator.method", "sdr.Interpolator.polyphase_taps", "sdr.Interpolator.rate", "sdr.Interpolator.reset", "sdr.Interpolator.taps", "sdr.LoopFilter", "sdr.LoopFilter.K1", "sdr.LoopFilter.K2", "sdr.LoopFilter.__call__", "sdr.LoopFilter.__init__", "sdr.LoopFilter.damping_factor", "sdr.LoopFilter.iir", "sdr.LoopFilter.noise_bandwidth", "sdr.LoopFilter.reset", "sdr.NCO", "sdr.NCO.K0", "sdr.NCO.__call__", "sdr.NCO.__init__", "sdr.NCO.increment", "sdr.NCO.offset", "sdr.NCO.reset", "sdr.NCO.step", "sdr.PSK", "sdr.PSK.__init__", "sdr.PSK.ber", "sdr.PSK.bps", "sdr.PSK.demodulate", "sdr.PSK.modulate", "sdr.PSK.order", "sdr.PSK.phase_offset", "sdr.PSK.ser", "sdr.PSK.symbol_map", "sdr.Q", "sdr.Qinv", "sdr.average_power", "sdr.awgn", "sdr.awgn_capacity", "sdr.barker", "sdr.bec", "sdr.bec_capacity", "sdr.binary_code", "sdr.bsc", "sdr.bsc_capacity", "sdr.crest_factor", "sdr.db", "sdr.diff_decode", "sdr.diff_encode", "sdr.dmc", "sdr.ebn0_to_esn0", "sdr.ebn0_to_snr", "sdr.energy", "sdr.esn0_to_ebn0", "sdr.esn0_to_snr", "sdr.evm", "sdr.frequency_offset", "sdr.fspl", "sdr.gaussian", "sdr.gray_code", "sdr.hexdump", "sdr.iq_imbalance", "sdr.linear", "sdr.mix", "sdr.multirate_taps", "sdr.pack", "sdr.papr", "sdr.parabolic_antenna", "sdr.peak_power", "sdr.peak_voltage", "sdr.plot.ber", "sdr.plot.constellation", "sdr.plot.eye", "sdr.plot.filter", "sdr.plot.group_delay", "sdr.plot.impulse_response", "sdr.plot.magnitude_response", "sdr.plot.periodogram", "sdr.plot.phase_delay", "sdr.plot.phase_response", "sdr.plot.raster", "sdr.plot.ser", "sdr.plot.spectrogram", "sdr.plot.step_response", "sdr.plot.symbol_map", "sdr.plot.time_domain", "sdr.plot.use_style", "sdr.plot.zeros_poles", "sdr.polyphase_matrix", "sdr.raised_cosine", "sdr.rms_voltage", "sdr.root_raised_cosine", "sdr.sample_rate_offset", "sdr.snr_to_ebn0", "sdr.snr_to_esn0", "sdr.to_complex_bb", "sdr.to_real_pb", "sdr.unpack", "sdr.zadoff_chu", "Sequences", "Simulation", "Synchronization", "Documentation", "Installation", "Linter", "Unit Tests", "Farrow arbitrary resampler", "FIR filters", "IIR filters", "Peak-to-average power", "Phase-locked loops", "Phase-shift keying", "Pulse shapes", "sdr", "v0.0", "Versioning"], "terms": {"sdr": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209], "db": [0, 3, 8, 19, 21, 41, 43, 44, 45, 47, 120, 126, 131, 132, 140, 144, 145, 147, 148, 149, 151, 152, 155, 156, 158, 160, 161, 164, 165, 175, 187, 188, 203, 205, 206, 208], "x": [0, 1, 2, 4, 5, 6, 7, 8, 25, 26, 31, 32, 41, 43, 48, 49, 65, 66, 72, 74, 91, 92, 101, 104, 110, 112, 118, 122, 123, 128, 129, 130, 131, 134, 137, 139, 140, 141, 142, 143, 146, 149, 150, 155, 156, 157, 159, 160, 162, 163, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 184, 186, 191, 194, 197, 203, 204, 205, 209], "arraylik": [0, 1, 2, 3, 4, 5, 6, 7, 25, 26, 31, 32, 33, 41, 43, 48, 49, 50, 65, 66, 69, 72, 73, 74, 75, 91, 92, 93, 101, 104, 110, 112, 118, 119, 120, 122, 123, 126, 128, 129, 130, 131, 132, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 186, 187, 188, 189, 190, 191, 194], "ndarrai": [0, 1, 2, 3, 5, 7, 25, 26, 30, 31, 32, 37, 40, 41, 46, 48, 49, 55, 56, 57, 58, 61, 62, 64, 65, 66, 71, 72, 74, 78, 79, 80, 81, 83, 85, 87, 88, 90, 91, 92, 97, 100, 101, 104, 110, 112, 117, 118, 120, 122, 123, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 147, 148, 150, 151, 152, 153, 155, 156, 157, 158, 159, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194], "convert": [0, 2, 140, 144, 145, 147, 148, 154, 156, 182, 187, 188, 189, 190], "linear": [0, 91, 93, 96, 118, 131, 140, 156, 171, 176, 207, 208], "unit": [0, 25, 31, 48, 62, 72, 88, 91, 101, 110, 113, 114, 115, 119, 130, 131, 132, 140, 141, 142, 146, 156, 162, 163, 177, 179, 183, 184, 185, 197, 201, 202, 204, 207], "ebn0_to_esn0": [0, 126, 144, 205, 208], "ebn0": [0, 6, 118, 120, 132, 144, 145, 164, 205], "bp": [0, 118, 121, 144, 145, 147, 187, 205], "int": [0, 1, 2, 5, 6, 25, 30, 31, 33, 38, 41, 43, 44, 47, 48, 51, 54, 56, 57, 58, 59, 62, 65, 68, 72, 80, 81, 83, 84, 88, 91, 93, 98, 110, 117, 118, 119, 121, 124, 131, 133, 136, 141, 142, 144, 145, 147, 148, 152, 153, 154, 158, 159, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 182, 183, 185, 187, 188, 191, 192, 193, 205], "ebn0_to_snr": [0, 145, 208], "esn0_to_ebn0": [0, 120, 147, 208], "esn0": [0, 6, 118, 126, 147, 148, 175, 205], "esn0_to_snr": [0, 148, 205, 208], "sp": [0, 5, 6, 145, 148, 152, 166, 183, 185, 187, 188, 189, 190, 203, 205, 206], "1": [0, 2, 6, 7, 8, 15, 18, 22, 24, 25, 27, 31, 33, 34, 35, 37, 40, 41, 48, 51, 52, 53, 54, 56, 57, 72, 73, 76, 77, 80, 81, 91, 92, 93, 94, 95, 97, 100, 101, 105, 106, 110, 113, 118, 119, 120, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 200, 201, 202, 203, 204, 205, 206, 209], "snr_to_ebn0": [0, 120, 132, 187, 208], "snr": [0, 3, 41, 43, 44, 45, 46, 47, 131, 132, 187, 188, 189, 190, 194, 205, 208], "snr_to_esn0": [0, 126, 188, 208], "pack": [1, 41, 43, 154, 159, 207, 208], "bpe": [1, 159, 191], "binari": [1, 3, 5, 119, 127, 133, 134, 135, 136, 137, 138, 143, 159, 178, 191, 194, 205, 207, 208], "arrai": [1, 37, 40, 41, 93, 97, 100, 119, 127, 133, 134, 136, 137, 141, 142, 143, 153, 159, 179, 182, 191, 202], "an": [1, 2, 3, 31, 48, 58, 72, 73, 75, 83, 91, 92, 119, 120, 126, 132, 159, 164, 166, 169, 175, 191, 197, 198, 207], "multipl": [1, 159, 191, 205], "bit": [1, 4, 6, 41, 43, 46, 118, 119, 120, 121, 127, 132, 134, 135, 137, 138, 144, 145, 147, 154, 159, 164, 187, 191, 207, 208], "per": [1, 26, 32, 49, 92, 112, 118, 119, 121, 131, 132, 144, 145, 147, 148, 150, 152, 154, 159, 165, 166, 183, 185, 186, 187, 188, 191, 203, 206], "element": [1, 154, 159, 191], "unpack": [1, 41, 43, 154, 191, 205, 207, 208], "hexdump": [1, 41, 154, 207, 208], "byte": [1, 154], "width": [1, 154], "16": [1, 120, 126, 127, 144, 145, 147, 154, 164, 175, 182, 183, 185, 187, 188, 203, 208], "str": [1, 31, 34, 35, 48, 52, 53, 72, 76, 77, 91, 94, 95, 154, 166, 171, 174, 176], "return": [1, 5, 8, 16, 18, 21, 22, 26, 30, 31, 32, 34, 35, 41, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 57, 58, 62, 66, 72, 74, 76, 77, 80, 81, 83, 88, 91, 92, 94, 95, 104, 112, 117, 120, 122, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 201, 202, 203, 205], "specifi": [1, 41, 44, 45, 47, 131, 132, 143, 154, 201, 202], "class": [2, 4, 8, 25, 31, 41, 43, 44, 45, 46, 47, 48, 65, 72, 91, 101, 110, 118, 195, 201, 202, 205, 207, 208], "fir": [2, 31, 32, 33, 34, 35, 37, 39, 40, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 97, 99, 100, 158, 166, 167, 168, 169, 170, 172, 173, 177, 181, 182, 203, 207, 208], "implement": [2, 5, 25, 31, 48, 65, 72, 91, 101, 107, 110, 118, 195, 200], "finit": [2, 31, 48, 91, 207, 208], "impuls": [2, 6, 31, 48, 58, 72, 83, 91, 152, 167, 169, 179, 206, 207, 208], "respons": [2, 6, 31, 48, 56, 57, 58, 62, 72, 80, 81, 83, 88, 91, 152, 167, 168, 169, 170, 173, 177, 206, 207, 208], "iir": [2, 6, 8, 17, 57, 58, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 101, 107, 167, 168, 169, 170, 172, 173, 177, 181, 201, 204, 207, 208], "infinit": [2, 72, 207, 208], "interpol": [2, 31, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 158, 166, 182, 203, 205, 207, 208], "polyphas": [2, 31, 32, 33, 37, 40, 91, 92, 93, 97, 100, 158, 182, 207, 208], "decim": [2, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 118, 119, 122, 123, 127, 158, 182, 205, 207, 208], "multirate_tap": [2, 33, 93, 158, 208], "p": [2, 3, 7, 128, 129, 134, 135, 137, 138, 143, 158, 182, 194], "q": [2, 7, 128, 129, 158, 166, 182, 192, 208], "comput": [2, 7, 31, 118, 120, 126, 128, 129, 131, 151, 158, 201, 202, 204, 206], "achiev": [2, 158, 182, 205, 206], "ration": [2, 158, 182], "polyphase_matrix": [2, 182, 208], "tap": [2, 31, 33, 37, 40, 48, 53, 64, 65, 71, 72, 78, 79, 91, 93, 97, 100, 182, 201, 202], "h_i": [2, 31, 33, 37, 40, 48, 50, 64, 91, 93, 97, 100, 182, 201], "matrix": [2, 143, 182, 194], "h_": [2, 8, 31, 37, 40, 91, 97, 100, 182, 204], "i": [2, 8, 15, 24, 31, 32, 33, 37, 40, 41, 46, 48, 49, 50, 58, 62, 63, 64, 65, 70, 72, 75, 79, 83, 88, 89, 91, 92, 93, 97, 100, 101, 105, 106, 108, 118, 119, 128, 129, 131, 132, 135, 138, 140, 143, 144, 145, 147, 148, 150, 151, 152, 154, 155, 156, 159, 161, 165, 166, 167, 169, 170, 171, 174, 176, 177, 179, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209], "j": [2, 8, 25, 31, 37, 40, 72, 75, 78, 91, 97, 100, 118, 131, 143, 155, 157, 182, 192, 201, 202, 204], "farrowresampl": [2, 65, 66, 67, 68, 69, 70, 71, 200, 208], "cubic": [2, 65], "farrow": [2, 65, 66, 67, 68, 69, 70, 71, 207, 208], "arbitrari": [2, 65, 66, 67, 68, 69, 70, 71, 207, 208], "mix": [2, 157, 207, 208], "freq": [2, 3, 150, 157, 161, 194, 200, 204], "float": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 27, 41, 43, 44, 45, 47, 56, 57, 65, 66, 72, 73, 80, 81, 82, 101, 102, 103, 105, 106, 108, 110, 111, 113, 114, 115, 118, 119, 125, 130, 131, 132, 134, 137, 139, 146, 149, 150, 152, 155, 157, 158, 160, 161, 162, 163, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 183, 184, 185, 186, 194], "0": [2, 5, 6, 7, 15, 25, 27, 31, 32, 37, 40, 41, 48, 49, 50, 52, 53, 56, 57, 64, 72, 73, 75, 76, 77, 78, 79, 80, 81, 91, 92, 93, 97, 100, 105, 110, 113, 118, 119, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 145, 146, 148, 149, 150, 152, 153, 155, 156, 157, 159, 161, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 200, 201, 202, 203, 204, 205, 206, 209], "time": [2, 4, 8, 15, 16, 18, 19, 20, 21, 22, 48, 72, 101, 105, 118, 130, 131, 139, 143, 146, 148, 150, 152, 155, 157, 160, 162, 163, 167, 171, 174, 176, 179, 183, 184, 185, 186, 188, 189, 190, 194, 200, 201, 202, 206, 207, 208], "domain": [2, 4, 130, 131, 139, 146, 150, 155, 157, 160, 162, 163, 167, 171, 174, 176, 179, 184, 186, 189, 190, 194, 207, 208], "n": [2, 4, 5, 6, 7, 8, 25, 26, 30, 31, 32, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 72, 74, 75, 78, 80, 81, 83, 84, 88, 91, 92, 101, 104, 110, 112, 117, 128, 129, 130, 131, 132, 133, 136, 139, 143, 144, 145, 146, 147, 148, 149, 150, 153, 155, 157, 158, 160, 162, 163, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 179, 184, 186, 187, 188, 189, 190, 192, 193, 194, 204, 206, 207], "complex": [2, 4, 6, 25, 26, 30, 118, 119, 122, 123, 127, 131, 132, 149, 155, 157, 165, 178, 179, 189, 190, 194, 200, 201, 202, 205, 207, 208], "exponenti": [2, 25, 26, 30, 157, 189, 190, 200, 201, 202], "to_complex_bb": [2, 189, 208], "x_r": [2, 189, 190], "real": [2, 6, 128, 129, 131, 166, 179, 189, 190, 200, 201, 202, 204, 207, 208], "passband": [2, 152, 189, 190, 203, 208], "center": [2, 179, 189, 190, 208], "f_": [2, 8, 15, 23, 32, 56, 57, 80, 81, 92, 145, 148, 150, 152, 157, 166, 167, 168, 170, 171, 172, 173, 174, 176, 179, 186, 187, 188, 189, 190, 200, 201, 202, 204, 206], "": [2, 6, 8, 16, 18, 19, 20, 22, 23, 31, 43, 44, 45, 46, 47, 48, 56, 57, 62, 72, 80, 81, 88, 91, 118, 122, 123, 131, 132, 145, 148, 149, 150, 155, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 177, 179, 180, 186, 187, 188, 189, 190, 199, 200, 203, 205, 207], "r": [2, 31, 32, 33, 37, 38, 40, 65, 66, 91, 92, 93, 97, 98, 100, 132, 144, 145, 147, 149, 152, 157, 183, 185, 187, 189, 190, 196, 197, 198, 199, 202, 203, 204, 206], "4": [2, 16, 18, 31, 37, 40, 41, 57, 76, 77, 81, 91, 92, 97, 100, 120, 125, 126, 127, 131, 132, 133, 135, 136, 138, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 196, 197, 200, 202, 203, 205], "sampl": [2, 8, 15, 23, 25, 26, 27, 30, 31, 32, 48, 49, 54, 56, 57, 58, 62, 65, 69, 80, 81, 83, 88, 91, 92, 93, 101, 105, 108, 110, 112, 113, 114, 117, 131, 145, 148, 150, 152, 157, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 179, 183, 185, 186, 187, 188, 189, 190, 194, 200, 203, 204, 206, 207], "rate": [2, 4, 6, 8, 15, 23, 31, 32, 33, 35, 38, 41, 42, 43, 45, 46, 56, 57, 65, 66, 80, 81, 91, 92, 93, 95, 98, 118, 120, 126, 144, 145, 147, 150, 157, 158, 164, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 179, 182, 186, 187, 189, 190, 194, 207, 208], "baseband": [2, 6, 8, 157, 166, 189, 190, 203, 204, 208], "x_c": [2, 189, 190], "c": [2, 8, 16, 18, 19, 20, 21, 22, 43, 44, 45, 46, 47, 101, 118, 127, 132, 135, 138, 151, 161, 189, 190, 204], "2": [2, 5, 6, 8, 16, 18, 21, 31, 34, 35, 37, 40, 41, 48, 52, 53, 54, 56, 57, 76, 77, 80, 81, 91, 92, 94, 95, 97, 100, 118, 119, 120, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 162, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 197, 199, 200, 201, 202, 203, 204, 205, 206], "to_real_pb": [2, 190, 203, 208], "2f_": [2, 190], "bsc_capac": [3, 138, 208], "calcul": [3, 4, 132, 135, 138, 149, 151, 161], "symmetr": [3, 137, 138, 143, 189, 190, 194, 207], "bsc": [3, 137, 138, 143, 194, 207, 208], "bec_capac": [3, 135, 208], "erasur": [3, 134, 135, 143, 194, 207], "bec": [3, 134, 135, 143, 194, 207, 208], "awgn_capac": [3, 132, 208], "addit": [3, 131, 132, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 194, 207], "white": [3, 131, 132, 194, 207], "gaussian": [3, 5, 131, 132, 152, 194, 207, 208], "nois": [3, 8, 9, 10, 15, 21, 41, 43, 44, 45, 46, 47, 101, 105, 108, 120, 126, 131, 132, 144, 145, 147, 148, 164, 175, 187, 188, 194, 204, 207], "awgn": [3, 120, 126, 131, 132, 149, 164, 165, 175, 189, 190, 194, 205, 207, 208], "fspl": [3, 151], "d": [3, 31, 48, 54, 91, 151, 161, 196, 197, 207], "f": [3, 16, 18, 31, 56, 57, 80, 81, 91, 131, 150, 151, 152, 157, 161, 186, 192, 200, 201, 202, 203, 204, 205, 206], "free": [3, 151, 207], "space": [3, 57, 81, 151, 207], "parabolic_antenna": [3, 161, 208], "tupl": [3, 31, 41, 43, 46, 48, 56, 57, 72, 80, 81, 91, 161, 165, 167, 168, 169, 170, 172, 173, 177, 178, 181], "gain": [3, 8, 11, 12, 13, 14, 15, 25, 27, 72, 73, 82, 101, 102, 103, 105, 110, 111, 113, 152, 161, 204, 207], "g": [3, 46, 161, 197], "beamwidth": [3, 161], "theta": [3, 27, 110, 113, 115, 161], "parabol": [3, 161], "reflector": [3, 161], "signal": [4, 6, 8, 16, 18, 21, 22, 25, 26, 31, 32, 41, 43, 44, 45, 46, 47, 48, 49, 55, 65, 66, 72, 74, 91, 92, 101, 104, 110, 112, 117, 130, 131, 132, 139, 140, 144, 145, 146, 147, 148, 150, 151, 152, 155, 156, 157, 158, 160, 161, 162, 163, 166, 171, 174, 176, 179, 182, 184, 186, 187, 188, 189, 190, 201, 202, 204, 206, 207, 208], "peak_pow": [4, 160, 162, 208], "peak": [4, 139, 149, 160, 162, 163], "average_pow": [4, 130, 160, 208], "averag": [4, 41, 130, 131, 132, 149, 160, 171], "papr": [4, 160, 203, 208], "ratio": [4, 21, 41, 43, 44, 45, 46, 47, 120, 126, 131, 132, 144, 145, 147, 148, 160, 164, 175, 187, 188], "peak_voltag": [4, 139, 163, 208], "rms_voltag": [4, 139, 184, 208], "root": [4, 5, 149, 166, 179, 184, 185, 192, 193, 201, 207], "mean": [4, 149, 171, 176, 184, 206], "squar": [4, 5, 149, 151, 161, 179, 184, 185, 201], "rm": [4, 139, 149, 184], "crest_factor": [4, 139, 160, 208], "crest": [4, 139], "factor": [4, 8, 15, 24, 101, 105, 106, 139, 204], "errorr": [4, 41, 42, 43, 44, 45, 46, 47, 205, 208], "A": [4, 8, 16, 18, 19, 20, 21, 22, 24, 32, 41, 48, 49, 92, 101, 136, 153, 154, 155, 161, 183, 185, 195, 204], "error": [4, 6, 8, 14, 15, 21, 41, 42, 43, 45, 46, 47, 101, 105, 118, 120, 126, 138, 149, 164, 175, 204, 207, 208], "ber": [4, 6, 41, 118, 120, 164, 205, 207, 208], "symbol": [4, 6, 41, 43, 46, 91, 118, 119, 120, 121, 122, 123, 126, 127, 131, 144, 145, 147, 148, 149, 150, 152, 165, 166, 175, 178, 183, 185, 187, 188, 203, 206, 207, 208], "ser": [4, 6, 41, 118, 126, 175, 205, 207, 208], "evm": [4, 149, 207, 208], "x_hat": [4, 6, 41, 43, 118, 122, 149, 165, 205], "ref": [4, 149, 152, 158], "vector": [4, 41, 69, 149, 171, 176, 207, 208], "magnitud": [4, 6, 133, 149, 167, 170, 192, 207, 208], "hat": [4, 6, 43, 118, 122, 149, 165, 178], "k": [4, 5, 6, 43, 118, 119, 121, 122, 123, 124, 141, 142, 144, 145, 147, 149, 165, 166, 178, 187, 203, 206], "psk": [5, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 131, 149, 150, 155, 164, 165, 166, 175, 178, 186, 203, 207, 208], "phase": [5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 125, 126, 127, 150, 155, 157, 172, 173, 194, 207], "shift": [5, 118, 120, 125, 126, 127, 192, 193, 201, 202, 207], "kei": [5, 118, 120, 125, 126, 127, 207], "demodul": [5, 118, 122, 205], "raised_cosin": [5, 166, 183, 206, 208], "alpha": [5, 152, 180, 183, 185, 203, 206], "span": [5, 6, 152, 166, 183, 185, 203, 206], "rais": [5, 166, 179, 183, 185, 201, 207], "cosin": [5, 166, 179, 183, 185, 201, 207], "rc": [5, 183], "root_raised_cosin": [5, 52, 53, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 185, 201, 203, 205, 206, 208], "srrc": [5, 179, 185, 203], "time_bandwidth": [5, 152], "binary_cod": [5, 136, 208], "gener": [5, 131, 136, 153, 196, 205], "code": [5, 31, 34, 48, 52, 72, 76, 91, 94, 119, 127, 133, 136, 144, 145, 147, 153, 165, 178, 187, 193, 197, 205, 208], "length": [5, 6, 31, 32, 48, 49, 51, 58, 62, 74, 91, 92, 93, 119, 133, 136, 152, 153, 158, 167, 169, 171, 174, 176, 177, 183, 185, 189, 192, 193, 198, 200, 203, 206], "gray_cod": [5, 153, 208], "grai": [5, 119, 127, 153, 165, 178, 205, 207], "diff_encod": [5, 120, 126, 141, 142, 208], "y_prev": [5, 141, 142], "differenti": [5, 120, 126, 141, 142, 179, 207, 208], "input": [5, 8, 16, 18, 21, 22, 25, 26, 31, 32, 33, 48, 49, 50, 58, 61, 62, 65, 66, 67, 69, 72, 73, 74, 75, 83, 88, 91, 92, 93, 101, 104, 110, 112, 118, 120, 126, 128, 131, 132, 134, 135, 137, 138, 140, 141, 142, 143, 156, 159, 169, 177, 191, 194, 201, 202, 204], "data": [5, 141, 142, 154, 159, 191, 207], "diff_decod": [5, 141, 142, 208], "y": [5, 25, 26, 30, 31, 32, 48, 49, 55, 66, 72, 74, 91, 92, 101, 104, 110, 112, 117, 131, 134, 137, 141, 142, 143, 150, 155, 157, 165, 170, 171, 176, 178, 179, 186, 204, 205], "decod": [5, 141], "use_styl": [6, 180], "appli": [6, 31, 91, 150, 155, 165, 166, 171, 176, 178, 179, 180, 186, 194], "default": [6, 58, 62, 119, 127, 165, 170, 171, 174, 176, 178, 180, 205], "matplotlib": [6, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 200, 201, 202, 203, 204, 205, 206, 207], "rcparam": [6, 180], "time_domain": [6, 31, 91, 92, 131, 157, 179, 189, 190, 203, 205, 206, 208], "raster": [6, 166, 174, 207], "periodogram": [6, 171, 189, 190, 203, 207, 208], "sample_r": [6, 8, 15, 23, 31, 56, 57, 80, 81, 91, 92, 150, 157, 166, 167, 168, 170, 171, 172, 173, 174, 176, 179, 189, 190, 200, 204, 206], "power": [6, 118, 130, 131, 132, 140, 149, 156, 160, 161, 162, 171, 206, 207], "densiti": [6, 21, 171, 203, 206], "p_": [6, 120, 126, 130, 131, 140, 143, 149, 156, 160, 162, 164, 171, 175], "xx": [6, 171], "us": [6, 25, 28, 31, 33, 36, 39, 48, 50, 55, 60, 65, 67, 72, 73, 75, 86, 91, 92, 93, 96, 99, 101, 107, 118, 122, 132, 135, 138, 149, 154, 158, 159, 165, 167, 169, 171, 176, 177, 191, 196, 197, 198, 199, 201, 202, 205, 206, 207, 209], "welch": [6, 171, 176], "method": [6, 35, 36, 95, 96, 171, 176, 198, 201, 202, 208], "spectrogram": [6, 176, 207, 208], "constel": [6, 125, 131, 149, 150, 155, 165, 186, 192, 207, 208], "heatmap": [6, 165, 205], "bool": [6, 31, 33, 48, 50, 63, 65, 67, 70, 72, 73, 75, 89, 91, 93, 120, 126, 165, 173, 174, 178, 179], "fals": [6, 31, 33, 34, 35, 48, 50, 52, 53, 65, 67, 72, 73, 75, 76, 77, 91, 92, 93, 94, 95, 120, 126, 134, 137, 143, 165, 171, 174, 176, 179, 202, 206], "symbol_map": [6, 118, 125, 127, 149, 178, 179, 205, 208], "map": [6, 118, 127, 149, 178, 207, 208], "ey": [6, 166, 207], "diagram": [6, 8, 25, 31, 91, 101, 110, 141, 142, 166, 207], "kwarg": [6, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181], "function": [6, 7, 8, 17, 48, 72, 73, 101, 128, 129, 132, 152, 164, 166, 171, 175, 176, 198, 201, 202, 204, 206, 207, 208], "e_b": [6, 43, 44, 45, 46, 47, 118, 120, 132, 144, 145, 147, 164, 187, 207], "n_0": [6, 21, 43, 44, 45, 46, 47, 118, 120, 126, 131, 132, 144, 145, 147, 148, 149, 164, 165, 175, 187, 188, 205, 207], "e_": [6, 43, 44, 45, 46, 47, 118, 126, 131, 132, 144, 147, 148, 149, 165, 175, 188, 205, 207], "impulse_respons": [6, 31, 48, 58, 72, 83, 91, 152, 158, 169, 183, 185, 201, 202, 206, 208], "h": [6, 31, 48, 50, 52, 53, 56, 57, 58, 72, 80, 81, 83, 91, 101, 152, 158, 166, 167, 169, 170, 173, 182, 203, 204, 206], "step_respons": [6, 31, 48, 62, 72, 88, 91, 177, 201, 202, 204, 208], "step": [6, 25, 26, 30, 31, 48, 62, 72, 88, 91, 110, 112, 117, 167, 177, 207], "zeros_pol": [6, 181, 202, 208], "zero": [6, 31, 32, 48, 55, 69, 72, 73, 76, 77, 90, 91, 92, 93, 101, 159, 167, 168, 169, 170, 172, 173, 177, 179, 181, 189, 201, 203, 204, 206, 207, 208], "pole": [6, 72, 73, 76, 77, 85, 167, 168, 169, 170, 172, 173, 177, 181, 201, 207], "magnitude_respons": [6, 56, 57, 80, 81, 158, 170, 183, 185, 201, 202, 204, 206, 208], "omega": [6, 27, 31, 48, 56, 57, 72, 80, 81, 91, 110, 113, 114, 167, 168, 170, 172, 173, 204], "phase_respons": [6, 56, 57, 80, 81, 173, 208], "angl": [6, 173, 204], "phase_delai": [6, 172, 208], "delai": [6, 25, 31, 32, 35, 48, 49, 53, 54, 65, 91, 92, 95, 101, 110, 141, 142, 168, 172, 204, 207], "tau_": [6, 172], "phi": [6, 118, 119, 125, 150, 155, 157, 172], "group_delai": [6, 168, 201, 202, 208], "group": [6, 168, 207], "tau_g": [6, 168], "complementari": [7, 128, 129], "cumul": [7, 128, 129], "distribut": [7, 128, 129], "standard": [7, 128, 129], "normal": [7, 8, 10, 15, 101, 105, 108, 128, 129, 149, 152, 176, 204, 206], "mathcal": [7, 128, 129, 131, 143], "qinv": [7, 128, 129, 208], "invers": [7, 129], "closedlooppl": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 195, 204, 208], "defin": [8, 48, 72, 131, 143, 152, 192, 195, 202, 207], "perform": [8, 32, 49, 92, 120, 126, 192, 195, 201, 202, 205, 207], "close": [8, 15, 17, 195, 207, 208], "loop": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 195, 207, 208], "pll": [8, 9, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 195, 207, 208], "thi": [8, 26, 31, 43, 44, 45, 47, 48, 72, 91, 112, 118, 127, 131, 132, 149, 158, 166, 170, 171, 176, 179, 196, 197, 198, 199, 200, 202, 204, 205, 206], "meant": 8, "analysi": [8, 15, 198, 204, 207, 208], "onli": [8, 32, 39, 49, 55, 60, 65, 69, 86, 92, 99, 119, 127, 131, 199, 204, 205], "block": [8, 25, 31, 91, 101, 110, 141, 142], "bb": [8, 203, 204], "ped": [8, 14, 15, 105, 204], "lf": [8, 204], "lo": [8, 204], "e": [8, 25, 46, 130, 134, 135, 146, 192, 197, 201, 202, 204, 205], "nco": [8, 11, 15, 25, 27, 28, 105, 110, 111, 112, 113, 114, 115, 116, 117, 195, 204, 207, 208], "local": [8, 196, 198, 204], "oscil": [8, 25, 28, 110, 113, 195, 204, 207, 208], "detector": [8, 14, 15, 105, 204], "filter": [8, 12, 13, 15, 17, 31, 32, 33, 36, 37, 39, 40, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 152, 158, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 182, 183, 185, 195, 206, 207, 208], "numer": [8, 25, 28, 110, 113, 195, 202, 204, 207, 208], "control": [8, 25, 28, 110, 113, 183, 185, 195, 204, 207, 208], "The": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 68, 69, 71, 72, 73, 74, 75, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 196, 197, 198, 199, 201, 202, 204, 205, 206, 207, 209], "transfer": [8, 17, 48, 72, 73, 101, 152, 201, 202, 204], "2nd": [8, 101, 105, 195, 204, 208], "order": [8, 31, 32, 35, 41, 46, 48, 49, 53, 59, 65, 68, 72, 77, 84, 91, 92, 93, 95, 101, 105, 118, 119, 124, 131, 144, 145, 147, 149, 150, 152, 165, 166, 183, 185, 186, 187, 195, 202, 203, 204, 205, 208], "proport": [8, 12, 32, 92, 101, 102, 105, 151, 161, 195, 208], "plu": [8, 101, 105, 195, 208], "integr": [8, 13, 101, 103, 105, 195, 199, 202, 208], "z": [8, 25, 48, 72, 101, 110, 141, 142, 192, 201, 202, 204], "k_1": [8, 12, 101, 102, 204], "k_2": [8, 13, 101, 103, 204], "frac": [8, 16, 18, 21, 22, 31, 48, 54, 72, 91, 93, 101, 118, 130, 131, 132, 139, 144, 145, 147, 148, 149, 151, 152, 155, 156, 157, 160, 161, 184, 187, 188, 192, 204], "k_0": [8, 11, 15, 27, 105, 110, 111, 113, 204], "k_p": [8, 14, 15, 105, 204], "refer": [8, 16, 18, 19, 20, 21, 22, 41, 65, 101, 120, 126, 131, 139, 149, 150, 152, 158, 160, 182, 183, 185, 186, 192, 202, 206, 207], "michael": [8, 16, 18, 19, 20, 21, 22, 101, 183, 185], "rice": [8, 16, 18, 19, 20, 21, 22, 101, 183, 185], "digit": [8, 16, 18, 19, 20, 21, 22, 25, 27, 101, 120, 126, 183, 185, 195, 204, 207, 208], "commun": [8, 16, 18, 19, 20, 21, 22, 101, 120, 126, 158, 182, 183, 185, 204, 207], "discret": [8, 16, 18, 19, 20, 21, 22, 101, 131, 143, 148, 183, 185, 188, 194, 200, 204, 207], "approach": [8, 16, 18, 19, 20, 21, 22, 101, 132, 135, 138, 183, 185, 204], "appendix": [8, 101, 183, 185], "lock": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117], "exampl": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 204], "see": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 39, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 82, 84, 85, 86, 87, 89, 90, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 125, 127, 152, 167, 168, 169, 170, 172, 173, 177, 181, 183, 185, 207], "noise_bandwidth": [8, 15, 101, 105, 108], "damping_factor": [8, 15, 101, 105, 106], "creat": [8, 15, 25, 27, 31, 33, 41, 42, 48, 50, 65, 67, 72, 73, 75, 91, 92, 93, 101, 105, 110, 113, 118, 119, 125, 131, 133, 149, 150, 157, 179, 186, 189, 190, 192, 200, 204, 206], "object": [8, 15, 31, 34, 35, 41, 42, 48, 52, 53, 72, 76, 77, 91, 94, 95, 118, 119, 167, 168, 169, 170, 172, 173, 177, 181, 204, 208], "phase_lock_tim": [8, 22], "frequency_lock_tim": [8, 16], "freq_offset": [8, 16, 18], "frequenc": [8, 16, 18, 20, 31, 48, 56, 57, 72, 80, 81, 91, 101, 150, 151, 157, 161, 167, 168, 170, 171, 172, 173, 176, 189, 190, 194, 206, 207, 208], "lock_tim": [8, 18, 204], "phase_error_vari": [8, 21], "cn0": [8, 21], "varianc": [8, 21, 131], "steadi": [8, 21], "state": [8, 21, 31, 32, 39, 48, 49, 55, 60, 61, 63, 65, 69, 70, 72, 86, 87, 89, 91, 92, 99, 208], "bnt": [8, 10, 204], "bandwidth": [8, 9, 10, 15, 19, 101, 105, 108, 132, 152, 183, 185, 204, 206], "b_n": [8, 9, 10, 15, 16, 18, 21, 22, 101, 105, 108], "t": [8, 10, 15, 101, 105, 108, 152, 154, 198, 200], "bn": [8, 9], "hz": [8, 9, 15, 16, 18, 21, 56, 57, 80, 81, 101, 105, 108, 132, 140, 150, 151, 152, 156, 157, 161, 189, 190, 200], "zeta": [8, 15, 24, 101, 105, 106], "damp": [8, 15, 24, 101, 105, 106, 204], "k0": [8, 11, 15, 25, 27, 105, 110, 111, 113], "kp": [8, 14, 15, 105], "k1": [8, 12, 101, 102, 204], "k2": [8, 13, 101, 103, 204], "repres": [8, 17, 134, 135], "omega_n": [8, 20, 204], "natur": [8, 20], "radian": [8, 19, 20, 21, 25, 27, 204], "omega_3db": [8, 19], "3": [8, 16, 18, 19, 22, 31, 37, 40, 41, 52, 53, 76, 77, 91, 92, 97, 100, 120, 125, 126, 127, 131, 132, 133, 134, 136, 137, 140, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 165, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 182, 183, 185, 186, 187, 189, 190, 191, 192, 202, 204, 206, 207], "omega_": [8, 19], "textrm": [8, 19], "properti": [9, 10, 11, 12, 13, 14, 17, 19, 20, 23, 24, 28, 36, 37, 38, 40, 54, 59, 61, 63, 64, 68, 70, 71, 78, 79, 82, 84, 85, 87, 89, 90, 96, 97, 98, 100, 102, 103, 106, 107, 108, 111, 114, 115, 121, 124, 125, 127, 198, 208], "paramet": [15, 16, 18, 21, 26, 27, 30, 32, 33, 43, 44, 45, 47, 49, 50, 56, 57, 58, 62, 66, 67, 69, 73, 74, 75, 80, 81, 83, 88, 92, 93, 104, 105, 112, 113, 117, 119, 120, 122, 123, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192], "where": [15, 32, 49, 92, 101, 105, 108, 119, 131, 132, 143, 144, 145, 147, 152, 187, 192, 201, 202, 207], "period": [15, 101, 105, 108, 192], "second": [15, 16, 18, 22, 41, 101, 105, 108, 152], "critic": [15, 24, 101, 105, 106, 204], "underdamp": [15, 24, 101, 105, 106], "overdamp": [15, 24, 101, 105, 106], "ted": [15, 105], "t_": [16, 18, 22, 66, 152, 206], "fl": [16, 18], "delta": [16, 18, 31, 48, 58, 72, 83, 91, 169, 201, 202], "offset": [16, 18, 25, 27, 31, 91, 92, 110, 113, 115, 118, 119, 125, 150, 157, 179, 186, 194, 204, 207, 208], "take": [16, 18, 22], "onto": [16, 18, 22], "equat": [16, 18, 19, 20, 21, 22, 72, 118], "39": 16, "pl": [18, 22], "38": 18, "34": 19, "33": 20, "sigma_": 21, "theta_": 21, "carrier": [21, 118], "43": 21, "40": [22, 91], "less": 24, "than": [24, 119, 127, 155, 165, 178], "greater": [24, 183, 185], "dd": [25, 26, 27, 28, 29, 30, 110, 195, 204, 207, 208], "direct": [25, 27, 195, 204, 207, 208], "synthes": [25, 27, 195, 204, 207, 208], "note": [25, 31, 37, 40, 48, 72, 91, 97, 100, 101, 110, 118, 131, 132, 135, 138, 141, 142, 152, 155, 161, 182, 192], "increment": [25, 26, 27, 110, 112, 113, 114, 204], "v": [25, 110, 140, 156, 196], "output": [25, 26, 30, 31, 32, 48, 49, 58, 62, 72, 73, 75, 83, 88, 91, 92, 101, 104, 110, 112, 117, 131, 132, 133, 134, 135, 137, 138, 142, 143, 149, 156, 159, 169, 177, 191, 196, 200, 201, 202, 204], "constant": [25, 27, 101, 110, 113, 114, 171, 176, 202, 204], "accumul": [25, 27, 41, 110, 113, 114, 204], "absolut": [25, 27, 110, 113, 115, 132], "adder": [25, 31, 101, 110, 141, 142, 204], "__call__": [25, 26, 31, 32, 33, 48, 49, 50, 63, 65, 66, 67, 70, 72, 73, 74, 75, 89, 91, 92, 93, 101, 104, 110, 112, 208], "variabl": [25, 26, 110, 112, 154, 204], "reset": [25, 29, 31, 39, 48, 60, 65, 69, 72, 86, 91, 99, 101, 109, 110, 116], "forward": [25, 30, 110, 117], "vari": [26, 112], "number": [30, 41, 43, 44, 47, 56, 57, 58, 62, 80, 81, 83, 88, 117, 118, 121, 131, 144, 145, 147, 152, 154, 159, 165, 166, 167, 168, 169, 170, 171, 172, 173, 176, 177, 183, 185, 187, 191], "equival": [31, 91, 131, 132, 148, 188, 197, 200], "first": [31, 41, 91, 159, 179, 191, 198, 199], "prototyp": [31, 37, 40, 91, 97, 100], "feedforward": [31, 33, 37, 40, 48, 50, 64, 72, 75, 79, 91, 93, 97, 100, 167, 168, 169, 170, 172, 173, 177, 181, 201, 202], "coeffici": [31, 33, 48, 50, 72, 75, 91, 93, 167, 168, 169, 170, 172, 173, 177, 181, 201, 202], "discard": 31, "between": [31, 33, 50, 63, 67, 70, 73, 75, 89, 91, 93, 151, 171, 174, 176, 204, 207], "each": [31, 32, 49, 91, 92, 149, 154, 171, 174, 176], "instead": [31, 91, 165], "decompos": [31, 91], "ar": [31, 32, 33, 37, 40, 41, 43, 44, 45, 47, 49, 50, 57, 67, 73, 75, 81, 91, 92, 93, 97, 100, 118, 119, 132, 134, 135, 137, 138, 159, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 180, 182, 189, 190, 196, 197, 198, 200, 202, 204, 206, 207, 209], "commut": [31, 91], "parallel": [31, 91], "sum": [31, 48, 72, 206], "prevent": [31, 91], "need": [31, 91, 198, 199], "done": [31, 196], "case": [31, 91], "2x": [31, 91], "6": [31, 37, 40, 41, 52, 53, 76, 77, 91, 92, 97, 100, 127, 136, 140, 143, 144, 145, 149, 151, 153, 154, 156, 161, 165, 166, 167, 168, 169, 170, 172, 173, 177, 178, 179, 181, 182, 183, 185, 189, 190, 192, 199, 201, 202, 204, 205, 208], "5": [31, 37, 40, 41, 52, 53, 91, 92, 97, 100, 131, 134, 136, 137, 138, 143, 144, 145, 147, 148, 149, 150, 152, 153, 154, 155, 161, 166, 167, 168, 169, 170, 172, 173, 174, 177, 179, 181, 182, 183, 185, 186, 187, 188, 189, 190, 192, 196, 200, 201, 202, 203, 204, 205, 206], "summat": 31, "bottom": [31, 91], "top": [31, 91], "relat": [31, 37, 40, 91, 97, 100, 132, 152], "In": [31, 32, 33, 34, 35, 37, 40, 41, 49, 50, 52, 53, 63, 67, 70, 73, 75, 76, 77, 89, 91, 92, 93, 94, 95, 97, 100, 120, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 200, 205], "np": [31, 37, 40, 76, 77, 91, 92, 97, 100, 120, 126, 131, 132, 133, 134, 135, 137, 138, 143, 149, 150, 155, 157, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 179, 181, 182, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "co": [31, 91, 92], "pi": [31, 76, 77, 91, 92, 118, 131, 151, 152, 155, 157, 161, 167, 168, 169, 170, 172, 173, 177, 179, 181, 189, 190, 192, 200, 201, 202, 204], "64": [31, 154, 202], "arang": [31, 37, 40, 91, 92, 97, 100, 131, 133, 157, 182, 189, 190, 192, 200, 204], "280": 31, "7": [31, 34, 35, 37, 40, 91, 92, 94, 95, 97, 100, 127, 136, 143, 149, 153, 154, 158, 179, 182, 192, 202], "kaiser": [31, 33, 34, 35, 36, 91, 92, 93, 94, 95, 96], "window": [31, 91, 171, 176], "out": [31, 34, 37, 40, 41, 52, 76, 91, 92, 94, 97, 100, 125, 127, 128, 129, 133, 134, 136, 137, 140, 141, 142, 143, 144, 145, 147, 148, 149, 151, 153, 156, 159, 161, 168, 180, 182, 187, 188, 191], "plt": [31, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "figur": [31, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "figsiz": [31, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "8": [31, 37, 40, 76, 77, 91, 92, 97, 100, 120, 125, 126, 127, 131, 132, 133, 135, 136, 138, 143, 149, 152, 153, 154, 157, 158, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 189, 190, 192, 197, 201, 202, 203, 204, 206], "plot": [31, 56, 57, 58, 62, 80, 81, 83, 88, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 204, 205, 206, 207, 208], "marker": [31, 91, 92, 165, 178, 200, 201, 202, 205], "o": [31, 91, 92, 200], "label": [31, 91, 92, 119, 120, 126, 131, 149, 150, 152, 155, 164, 166, 174, 175, 176, 179, 183, 185, 186, 200, 203, 204, 205, 206], "titl": [31, 91, 120, 126, 131, 132, 133, 135, 138, 149, 150, 155, 157, 164, 175, 179, 186, 189, 190, 192, 200, 203, 204, 205, 206], "tight_layout": [31, 91, 120, 126, 131, 132, 133, 135, 138, 149, 150, 157, 164, 175, 179, 186, 189, 190, 192, 203, 204, 205, 206], "preserv": [31, 33, 50, 63, 67, 70, 73, 75, 89, 91, 93], "call": [31, 32, 33, 49, 50, 63, 67, 70, 73, 75, 89, 91, 92, 93, 166], "true": [31, 91, 92, 120, 126, 132, 134, 135, 137, 138, 143, 165, 173, 178, 180, 203, 205], "y1": [31, 91, 92, 155], "70": [31, 154, 206], "y2": [31, 91, 92, 155], "140": 31, "y3": [31, 91, 92], "210": 31, "y4": [31, 91], "y5": [31, 91], "flush": [31, 32, 48, 49, 55, 91, 92, 208], "y_1": [31, 91, 155], "y_2": [31, 91, 155], "y_3": [31, 91], "y_4": [31, 91], "y_5": [31, 91], "full": [31, 32, 49, 91, 92, 133], "__len__": [31, 48, 51, 91], "__repr__": [31, 34, 48, 52, 72, 76, 91, 94], "style": [31, 34, 48, 52, 72, 76, 91, 94, 180], "__str__": [31, 35, 48, 53, 72, 77, 91, 95], "human": [31, 35, 48, 53, 72, 77, 91, 95], "readabl": [31, 35, 48, 53, 72, 77, 91, 95], "when": [31, 39, 48, 55, 58, 60, 62, 72, 83, 86, 88, 91, 99, 131, 132, 134, 135, 137, 138, 148, 167, 168, 169, 170, 172, 173, 177, 188, 192, 200, 201, 202], "pass": [31, 48, 55, 91, 131, 134, 137, 143, 149, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 194, 196, 197, 201, 202, 208], "through": [31, 48, 55, 91, 134, 137, 143, 194, 201, 202, 204], "indic": [31, 33, 48, 50, 63, 65, 67, 70, 72, 73, 75, 89, 91, 93, 118, 119, 120, 126, 155, 166, 173, 174, 179], "whether": [31, 33, 48, 50, 63, 65, 67, 70, 72, 73, 75, 89, 91, 93, 120, 126, 173, 174, 179], "consist": [31, 43, 44, 45, 46, 47, 48, 61, 91], "previou": [31, 33, 48, 50, 61, 67, 69, 73, 75, 91, 93, 141, 142], "none": [31, 41, 45, 48, 58, 62, 65, 69, 91, 101, 109, 118, 120, 126, 131, 132, 143, 159, 165, 166, 167, 169, 171, 174, 176, 177, 178, 179, 191, 194, 200, 203, 205], "u": [31, 48, 62, 72, 88, 91, 177, 192, 193, 201, 202], "frequency_respons": [31, 48, 56, 72, 80, 91, 208], "numpi": [31, 41, 46, 48, 56, 57, 72, 80, 81, 91, 131, 191, 200, 201, 202, 203, 204, 205, 206, 207], "frequency_response_log": [31, 48, 57, 72, 81, 91], "logarithm": [31, 48, 57, 72, 81, 91, 167, 168, 170, 171, 172, 173, 201, 202], "axi": [31, 48, 57, 72, 81, 91, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 200], "custom": [31, 36, 91, 96], "design": [31, 33, 36, 91, 93, 96, 158, 196, 207, 208], "multir": [31, 32, 33, 36, 91, 92, 93, 96, 158, 182, 208], "polyphase_tap": [31, 35, 37, 40, 91, 92, 95, 97, 100], "lfloor": [31, 48, 54, 91], "rfloor": [31, 48, 54, 91], "mode": [32, 33, 39, 49, 50, 55, 60, 63, 65, 67, 69, 70, 73, 75, 86, 89, 92, 93, 99, 133, 192], "l": [32, 49, 74, 92], "non": [32, 49, 92], "stream": [32, 33, 34, 35, 39, 49, 50, 52, 53, 55, 60, 63, 65, 67, 69, 70, 73, 75, 76, 77, 86, 89, 92, 93, 94, 95, 99, 118, 202], "convolut": [32, 49, 91, 92], "ha": [32, 49, 91, 92, 131, 152, 161, 192, 204, 205, 206], "align": [32, 49, 92, 200], "howev": [32, 43, 44, 45, 47, 49, 92, 101, 135, 138, 200], "produc": [32, 49, 91, 92, 152, 206], "final": [32, 49, 92], "requir": [32, 49, 92, 196, 197, 198, 199], "dictat": [32, 49, 92], "argument": [32, 33, 49, 92, 93, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 198, 201, 202], "specif": [33, 46, 93, 199, 206], "npt": [33, 93, 119, 167, 168, 169, 170, 172, 173, 177, 181], "string": [34, 35, 52, 53, 76, 77, 94, 95, 154, 171, 176, 208], "represent": [34, 35, 52, 53, 76, 77, 94, 95, 178, 208], "print": [35, 53, 77, 95, 154, 200, 201, 202, 204], "167": [35, 95], "24": [35, 95], "shape": [35, 53, 77, 92, 95, 152, 166, 179, 183, 185, 202, 207, 208], "84": [35, 95], "befor": [37, 40, 97, 100, 209], "decomposit": [37, 40, 97, 100, 208], "after": [37, 40, 97, 100], "10": [37, 40, 41, 91, 92, 97, 100, 120, 126, 131, 136, 140, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 160, 161, 164, 165, 167, 168, 169, 170, 172, 173, 175, 177, 179, 181, 182, 183, 185, 186, 187, 188, 200, 201, 202, 203, 204, 205, 206], "9": [37, 40, 91, 92, 97, 100, 136, 143, 149, 153, 154, 182, 183, 185, 202, 203, 205, 206, 208], "measur": [41, 43, 130, 131, 139, 140, 146, 149, 156, 160, 162, 163, 184, 204, 207, 208], "new": [41, 42, 65, 67, 118, 119, 186], "from": [41, 56, 57, 72, 73, 80, 81, 118, 127, 140, 144, 145, 147, 148, 156, 171, 176, 187, 188, 196, 201, 202, 204, 207], "receiv": [41, 43, 120, 126, 149, 151], "contain": [41, 131, 154], "add": [41, 43, 46, 131, 150, 174, 186, 194, 205, 209], "total": [41, 206], "count": [41, 44, 149], "error_r": [41, 45, 46, 205], "everi": [41, 200], "can": [41, 43, 44, 45, 47, 101, 131, 149, 152, 158, 159, 166, 171, 176, 197, 201, 202, 205, 207, 209], "obtain": 41, "follow": [41, 155, 165, 174, 176, 178, 180, 182, 204], "tabul": [41, 42], "given": [41, 43, 44, 45, 47, 65, 66, 149, 201, 202], "all": [41, 46, 149, 166, 174, 199, 207], "ascend": [41, 46], "correspond": [41, 46], "other": [43, 44, 45, 47, 200, 209], "quantiti": [43, 44, 45, 46, 47], "user": [43, 44, 45, 47, 201, 202], "caution": [43, 44, 45, 47], "instanc": [43, 44, 45, 47, 198], "transmit": [43, 149], "section": [43, 44, 45, 46, 47, 202, 204], "whatev": 46, "wa": [46, 132], "provid": [46, 118, 120, 126, 207], "wrapper": [48, 72], "scipi": [48, 72, 171, 176, 206, 207], "convolv": [48, 179], "It": [48, 72, 91, 101, 131], "support": [48, 72, 208], "one": [48, 72, 119, 127, 152, 154, 167, 168, 170, 171, 172, 173, 176, 189, 201, 202, 203, 206], "its": [48, 72, 73, 131, 201, 202, 206], "sum_": [48, 72, 130, 131, 132, 146, 149, 184], "limits_": [48, 72], "valid": [49, 166, 174, 192], "same": [49, 92, 179, 201], "0013559842482209206": [52, 53], "005995136685669422": [52, 53], "00869881734251976": [52, 53], "002410376677289605": [52, 53], "010205586440861225": [52, 53], "018983779475092888": [52, 53], "011950905434787273": [52, 53], "015183938667178154": [52, 53], "051622189581394196": [52, 53], "07210389524698257": [52, 53], "047459449619054794": [52, 53], "039173517376184464": [52, 53], "1791868358850479": [52, 53], "3367363214492798": [52, 53], "4611457586288452": [52, 53], "5084040760993958": [52, 53], "30": [53, 91, 167, 169, 177, 189, 190, 202, 208], "31": 53, "15": [53, 136, 153, 182], "remain": [55, 159], "1024": [56, 57, 80, 81, 167, 168, 170, 172, 173, 203, 206], "decad": [57, 81, 167, 168, 170, 172, 173, 201, 204], "resampl": [65, 66, 67, 68, 69, 70, 71, 158, 182, 207, 208], "http": [65, 139, 152, 158, 160, 192, 196, 197], "wirelesspi": 65, "com": [65, 152, 158, 197], "fraction": [65, 69, 152, 200], "structur": 65, "index": [65, 69, 166, 174, 178, 196], "should": [69, 197], "equal": 69, "three": [69, 200, 206], "If": [69, 131, 132, 143, 159, 165, 166, 167, 169, 171, 174, 176, 177, 178, 179, 189, 191, 207], "lfilter": 72, "b_i": [72, 75, 79, 167, 168, 169, 170, 172, 173, 177, 181, 202], "feedback": [72, 75, 78, 167, 168, 169, 170, 172, 173, 177, 181, 202], "a_j": [72, 75, 78, 167, 168, 169, 170, 172, 173, 177, 181, 202], "These": [72, 118, 180, 197, 204], "differ": [72, 119, 127, 179, 192, 206], "a_0": 72, "left": [72, 118, 130, 131, 132, 146, 149, 151, 152, 155, 157, 161, 162, 163, 184, 192], "m": [72, 75, 79, 118, 119, 121, 122, 123, 124, 127, 143, 144, 145, 147, 187, 196, 197, 198, 199, 207], "right": [72, 118, 130, 131, 132, 146, 149, 151, 152, 155, 157, 161, 162, 163, 184, 192], "b": [72, 75, 132, 152, 154, 167, 169, 177, 196, 206], "classmethod": [72, 73], "zerospol": [72, 73, 76, 77, 167, 168, 169, 170, 172, 173, 177, 181, 202], "self": [72, 73], "100": [72, 83, 88, 120, 126, 131, 132, 135, 138, 140, 149, 156, 157, 164, 166, 167, 169, 175, 177, 179, 186, 189, 190, 198, 200, 204], "b_tap": [72, 77, 79, 202], "a_tap": [72, 77, 78, 202], "exp": [76, 77, 118, 152, 155, 157, 167, 168, 169, 170, 172, 173, 177, 179, 181, 190, 192, 200, 202, 204], "1j": [76, 77, 157, 167, 168, 169, 170, 172, 173, 177, 179, 181, 190, 200, 202, 204], "conj": [76, 77, 167, 168, 169, 170, 172, 173, 177, 181, 202, 204], "478207252018059": [76, 77, 202], "6400000000000001": [76, 77, 202], "7391036260090295": [77, 202], "3061467458920719j": [77, 202], "upsampl": 91, "insert": 91, "multipli": 91, "hold": [91, 93, 159, 208], "20": [91, 92, 132, 134, 137, 140, 143, 149, 150, 154, 155, 156, 182, 203, 205, 206], "recommend": 91, "wai": [91, 197], "11": [91, 136, 153, 158, 182, 196], "zoh": [91, 93, 96], "12": [91, 136, 153, 158, 182, 201, 205], "13": [91, 133, 136, 153, 182, 208], "iter": 92, "concaten": [92, 202], "linearli": 93, "2r": 93, "ramp": [93, 101], "ones": [93, 204], "loopfilt": [101, 102, 103, 104, 105, 106, 107, 108, 109, 195, 204, 208], "ppi": [101, 105, 195], "track": 101, "cannot": 101, "chirp": 101, "underli": [101, 107], "modul": [118, 119, 120, 123, 124, 126, 131, 144, 145, 147, 149, 150, 155, 164, 165, 166, 175, 186, 187, 196, 199, 203, 205, 207, 208], "scheme": 118, "encod": [118, 120, 126, 141, 142, 207], "inform": [118, 144, 145, 147, 187], "sinusoid": [118, 131, 189, 190, 202], "taken": 118, "dot": [118, 127], "mathbb": [118, 127, 132, 192], "phase_offset": [118, 119, 125, 131, 149, 150, 155, 165, 178, 186, 203, 205], "valu": [118, 119, 120, 126, 128, 129, 133, 140, 141, 142, 152, 155, 156, 165, 178, 202, 208], "maximum": [118, 122, 165, 178], "likelihood": [118, 122], "estim": [118, 122, 171, 176, 204], "degre": [118, 119, 125, 150, 155, 157, 161], "mapsto": [118, 127], "log_2": [118, 121, 132, 144, 145, 147, 187], "symbol_label": [119, 127, 205], "bin": [119, 127, 149, 165, 178, 205], "ge": 119, "consecut": 119, "adjac": [119, 127, 205, 206], "mai": [119, 127, 149, 165, 174, 176, 178, 180, 202], "more": [119, 127, 208], "whose": 119, "start": [119, 196], "0j": 119, "go": 119, "counter": 119, "clockwis": 119, "around": 119, "circl": [119, 202], "energi": [120, 126, 132, 144, 145, 146, 147, 148, 164, 175, 183, 185, 187, 188, 207, 208], "psd": [120, 126, 132, 144, 145, 147, 148, 164, 175, 187, 188], "were": [120, 126], "simon": [120, 126], "alouini": [120, 126], "over": [120, 126, 154], "fade": [120, 126], "channel": [120, 126, 132, 134, 135, 137, 138, 143, 164, 166, 175, 207, 208], "chapter": [120, 126, 158, 182], "singl": [120, 126], "john": [120, 126], "proaki": [120, 126], "optimum": [120, 126], "theoret": [120, 126, 164, 175, 205, 208], "curv": [120, 126, 164, 175], "bpsk": [120, 126, 164, 166, 175, 179, 203], "qpsk": [120, 125, 126, 131, 149, 150, 164, 165, 175, 178, 179, 186], "psk8": [120, 126, 164, 175, 205], "psk16": [120, 126, 164, 175, 205], "linspac": [120, 126, 132, 135, 138, 164, 175, 202, 203, 204, 205], "compar": [120, 126, 206], "de": [120, 126, 208], "45": [125, 131, 149, 150, 155, 157, 165, 178, 186, 203, 205], "se": [126, 175], "00000000e": [127, 202], "00": [127, 202], "00j": 127, "07106781e": 127, "01": [127, 154, 202, 204], "01j": 127, "12323400e": 127, "17": [127, 149, 161, 182], "83697020e": 127, "22464680e": 127, "16j": 127, "annot": [127, 178, 208], "probabl": [128, 129, 134, 135, 137, 138, 143, 194, 208], "exceed": [128, 129], "15865525393145707": [128, 129], "158655": [128, 129], "0000010494310452": [128, 129], "text": [130, 131, 132, 135, 138, 139, 140, 149, 150, 151, 156, 158, 160, 162, 163, 184, 186], "avg": [130, 131, 160], "seed": 131, "which": [131, 132, 150, 155, 161, 165, 178, 186, 200, 204, 206], "ad": [131, 198, 207, 208], "desir": [131, 205], "explicitli": 131, "assum": [131, 143, 159, 191], "known": 131, "must": [131, 152, 157, 183, 185, 192], "random": [131, 134, 137, 143, 149, 150, 155, 165, 166, 179, 186, 203, 205], "default_rng": 131, "noisi": 131, "w": [131, 200, 201, 202, 203, 204, 205, 206], "sigma": [131, 132], "For": [131, 201], "sim": 131, "cn": 131, "set": [131, 165, 170, 171, 174, 176, 178, 180, 198, 199, 202], "sin": [131, 189], "randint": [131, 134, 137, 143, 149, 150, 155, 165, 166, 179, 186, 203, 205], "1_000": [131, 150, 155, 186, 203], "zorder": [131, 150, 186], "infti": [131, 132], "nand": 131, "capac": [132, 135, 138, 207, 208], "2d": 132, "x_i": [132, 134, 135, 137, 138, 143, 155], "y_i": [132, 134, 135, 137, 138, 143], "monoton": 132, "decreas": 132, "limit": [132, 165, 170, 171, 178, 205], "xlabel": [132, 133, 135, 138, 149, 192, 200, 203, 204, 206], "ylabel": [132, 133, 135, 138, 149, 192, 200, 203, 204, 206], "grid": [132, 135, 138, 180, 200, 203, 204, 206], "At": 132, "occur": 132, "view": [132, 198, 207], "59": 132, "shannon": 132, "semilogi": [132, 164, 175], "both": [132, 165, 178, 179, 200, 204], "barker": [133, 193, 207, 208], "bipolar": [133, 208], "sequenc": [133, 134, 137, 143, 192, 194, 207, 208], "format": [133, 198], "seq": 133, "have": [133, 159, 179, 191], "ideal": [133, 205], "minim": 133, "autocorrel": [133, 192], "sidelob": [133, 183, 185, 192], "corr": [133, 192], "correl": [133, 192], "lag": [133, 192], "size": [133, 143, 200, 204, 205, 206], "ab": [133, 192, 206], "25": [134, 137, 143, 166, 200, 203, 204, 206], "roughli": [134, 137, 200], "eras": 134, "14": [136, 153, 182, 197], "transit": [137, 138, 143, 194], "flip": 137, "h_b": 138, "cf": 139, "v_": [139, 140, 156, 163, 184], "en": [139, 160, 192], "wikipedia": [139, 160, 192], "org": [139, 160, 192], "wiki": [139, 160, 192], "type": [140, 149, 156, 159, 171, 176, 191, 208], "voltag": [140, 156, 163, 184, 207], "decibel": [140, 156, 207, 208], "ani": [140, 156, 170, 171, 199], "x_": [140, 156], "log_": [140, 151, 160], "50": [140, 156, 178, 189, 190, 200, 203], "mhz": [140, 156], "77": [140, 154, 156], "50e6": 140, "76": [140, 154], "98970004336019": 140, "mw": [140, 156], "dbm": [140, 156], "dbv": [140, 156], "020599913279624": 140, "uncod": 142, "dmc": [143, 194, 207, 208], "memoryless": [143, 194, 207], "pr": 143, "y_j": 143, "alphabet": 143, "ldot": 143, "qam": [144, 145, 147, 187], "249387366082999": [144, 145], "020599913279625": [144, 188], "sym": [145, 148, 152, 187, 188, 206], "750612633917001": [147, 187], "979400086720376": [147, 148], "system": [148, 158, 182, 188, 198, 199, 204, 207], "norm": 149, "noiseless": 149, "sourc": 149, "max": [149, 162, 163, 198], "_": 149, "sqrt": [149, 152, 184, 192, 203, 204, 206], "instantan": 149, "percentil": [149, 170, 171, 176], "1000": [149, 179, 189, 190, 205], "either": 149, "0006886388253": 149, "977333228600967": 149, "290563817476425": 149, "95th": 149, "95": 149, "158719309277938": 149, "inst_evm": 149, "hist": 149, "histogram": 149, "frequency_offset": [150, 194, 208], "freq_rat": 150, "cycl": [150, 179], "000": 150, "1e": [150, 205], "5e": 150, "deg": [150, 155], "path": [151, 198, 207], "loss": [151, 207], "distanc": 151, "meter": [151, 161], "transmitt": 151, "km": 151, "link": [151, 207, 208], "ghz": [151, 161], "1e3": [151, 157, 189], "1e9": [151, 161], "92": 151, "44778322188337": 151, "so": [151, 152, 207], "doubl": [151, 161], "result": [151, 161, 183, 185, 205], "increas": [151, 161, 202], "2e3": 151, "98": 151, "468383135163": 151, "also": [151, 152, 207], "2e9": 151, "puls": [152, 166, 179, 183, 185, 207, 208], "product": [152, 206], "side": [152, 167, 168, 170, 171, 172, 173, 176, 201, 202, 203, 206], "thought": [152, 209], "smaller": [152, 183, 185, 206], "wider": 152, "even": [152, 183, 185], "amplitud": [152, 155, 194, 200, 204], "nomin": 152, "ln": 152, "www": [152, 158], "mathwork": [152, 158], "help": [152, 158], "gaussdesign": 152, "html": [152, 158, 196], "onlinelibrari": 152, "wilei": 152, "doi": 152, "pdf": 152, "1002": 152, "9780470041956": 152, "app2": 152, "h_0p1": [152, 183, 185], "h_0p2": 152, "h_0p3": 152, "displai": [154, 165, 167, 168, 170, 171, 172, 173, 176, 178], "consid": 154, "line": [154, 179, 203], "quick": 154, "brown": 154, "fox": 154, "jump": 154, "lazi": 154, "dog": 154, "00000000": 154, "54": 154, "68": 154, "65": 154, "71": 154, "75": [154, 165, 204, 205], "69": 154, "63": 154, "6b": 154, "62": 154, "72": 154, "6f": 154, "6e": 154, "00000010": 154, "66": 154, "78": 154, "6a": 154, "6d": 154, "73": 154, "74": 154, "00000020": 154, "6c": 154, "61": 154, "7a": 154, "79": 154, "67": 154, "he": 154, "02": [154, 202, 204], "03": [154, 202], "04": [154, 202], "00000004": 154, "05": [154, 200, 202, 204], "06": 154, "07": 154, "08": 154, "00000008": 154, "09": 154, "0a": 154, "iq_imbal": [155, 194, 208], "iq": [155, 194, 207], "imbal": [155, 194, 207], "posit": 155, "compon": [155, 189, 190], "larger": [155, 165, 178], "quadratur": 155, "lead": [155, 205], "g_i": 155, "180": 155, "g_q": 155, "x_q": 155, "horizont": 155, "stretch": 155, "while": [155, 206], "neg": 155, "vertic": 155, "subplot": [155, 204, 205], "legend": [155, 200, 203, 204, 206], "northwest": 155, "northeast": 155, "50118723": 156, "36272725": 156, "9952623149688795": 156, "cdot": 157, "satisfi": 157, "le": [157, 161, 183, 185], "remov": [157, 171, 176, 208], "rotat": 157, "half_length": 158, "a_stop": 158, "80": [158, 192], "half": [158, 161], "stopband": [158, 183, 185], "attenu": [158, 183, 185], "a_": 158, "stop": 158, "fred": [158, 182], "harri": [158, 182], "process": [158, 182, 202, 204, 207], "dsp": [158, 207], "designmultiratefir": 158, "dtype": [159, 179, 191, 204], "dtypelik": [159, 191], "most": [159, 191], "signific": [159, 191], "enough": 159, "fill": 159, "last": [159, 196], "smallest": 159, "unsign": 159, "integ": 159, "uint8": [159, 191], "diamet": 161, "effici": 161, "55": 161, "eta": 161, "dbi": 161, "arcsin": 161, "83": 161, "dish": 161, "21": 161, "810210290266568": 161, "437435887991374": 161, "23": 161, "sinc": [161, 166, 196, 205], "antenna": [161, 207], "we": [161, 207], "observ": [161, 166], "830810203546193": 161, "529544741425365": 161, "keyword": [164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 201, 202], "pyplot": [164, 165, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180, 181, 200, 201, 202, 203, 204, 205, 206], "scatter": 165, "overwritten": [165, 174, 176, 178], "rang": [165, 204, 205], "hist2d": 165, "linestyl": [165, 174, 178, 180, 192, 200, 204, 205, 206], "10_000": 165, "color": [166, 174, 179, 203, 206], "how": [166, 174, 179, 198, 199], "base": [166, 174, 179], "To": [166, 197], "twice": 166, "imag": [166, 200], "examin": 166, "nyquist": [166, 206], "intersymbol": 166, "interfer": 166, "isi": 166, "decis": 166, "n_time": [167, 202], "n_freq": 167, "x_axi": [167, 168, 170, 171, 172, 173, 176, 201, 202, 203, 204], "two": [167, 168, 170, 171, 172, 173, 176, 192, 200, 201, 202], "log": [167, 168, 170, 171, 172, 173, 201, 202, 204], "definit": [167, 168, 169, 170, 172, 173, 177, 181], "n_t": 167, "n_f": 167, "scale": [167, 168, 170, 171, 172, 173, 176, 201, 202], "option": [167, 168, 170, 171, 172, 173, 176], "spectrum": [167, 168, 170, 171, 172, 173, 176, 189, 190], "h_srrc": [167, 168, 169, 170, 172, 173, 177, 179, 181, 205], "ylim": [168, 192, 201, 204, 205, 206], "48": 168, "52": 168, "lower": [170, 171, 183, 185], "10th": [170, 171, 176], "crop": [170, 171], "deep": [170, 171], "null": [170, 171, 206], "hann": [171, 176], "overlap": [171, 176, 203], "fft": [171, 176, 189, 190], "detrend": [171, 176], "median": 171, "spectral": [171, 203, 206], "segment": [171, 176], "256": [171, 176, 203], "point": [171, 176], "trend": [171, 176], "unwrap": [173, 204], "stride": 174, "colorbar": 174, "collect": 174, "linecollect": 174, "linewidth": [174, 192], "solid": [174, 179], "pcolormesh": 176, "vmin": 176, "vmax": 176, "100th": 176, "shade": 176, "gouraud": 176, "markers": 178, "diff": [179, 203], "about": [179, 198, 199], "mutual": 179, "exclus": 179, "imaginari": 179, "part": [179, 186, 204], "current": [179, 197], "dash": 179, "share": 179, "10e3": 179, "complex64": [179, 204], "revert": 180, "rcdefault": 180, "_rc_param": 180, "rc_param": 180, "ax": 180, "autolayout": 180, "max_open_warn": 180, "titleweight": 180, "bold": 180, "arrang": 182, "down": 182, "column": 182, "notion": 182, "demonstr": 182, "18": [182, 205], "19": 182, "excess": [183, 185, 206], "narrow": [183, 185], "expens": [183, 185], "higher": [183, 185, 206], "h_0p5": [183, 185], "h_0p9": [183, 185], "affect": [183, 185], "longer": [183, 185, 189], "h_4": [183, 185], "h_8": [183, 185], "h_16": [183, 185], "sample_rate_offset": [186, 194, 208], "ppm": [186, 194], "million": 186, "odd": 189, "append": [189, 203], "end": 189, "250": [189, 190], "300": [189, 190], "ksp": [189, 190], "notic": [189, 190, 200, 206], "conjug": [189, 190, 202], "2048": [189, 190, 203], "500": [189, 190, 204], "now": [189, 190, 200], "150": [189, 190], "asymmetr": 190, "zadoff_chu": [192, 193, 208], "zadoff": [192, 193, 207, 208], "chu": [192, 193, 207, 208], "rel": [192, 206], "prime": 192, "gcd": 192, "ne": 192, "cyclic": 192, "x_u": 192, "c_": 192, "2q": 192, "mod": 192, "e2": 192, "93chu_sequ": 192, "x_3": 192, "139": 192, "x3": 192, "roll": [192, 206], "tile": 192, "x_5": 192, "x5": 192, "cross": 192, "xcorr": 192, "sphinx": 196, "immateri": 196, "theme": 196, "depend": [196, 198, 199], "store": [196, 197, 199], "txt": [196, 197, 198, 199], "myst": 196, "parser": 196, "updat": 196, "git": [196, 197], "math": 196, "dollar": 196, "ipykernel": 196, "nb": 196, "switch": 196, "pip": [196, 197, 198, 199, 207], "python3": [196, 197, 198, 199, 207], "built": 196, "run": 196, "command": 196, "dirhtml": 196, "locat": [196, 199], "home": 196, "page": 196, "site": 196, "directori": [196, 197], "get": 196, "necessari": 196, "webpag": 196, "webserv": 196, "easili": [196, 198, 199, 201, 202], "python": [196, 207], "server": 196, "8080": 196, "access": [196, 198], "web": 196, "browser": 196, "localhost": 196, "latest": [197, 207], "releas": [197, 208], "version": [197, 207], "main": [197, 206], "branch": [197, 198], "mhostett": [197, 208], "Or": [197, 199], "pre": 197, "activ": 197, "develop": [197, 198, 199], "librari": [197, 198, 199, 200, 205, 207, 209], "benefici": 197, "fashion": 197, "allow": [197, 199], "chang": [197, 209], "immedi": 197, "seen": 197, "upon": 197, "next": 197, "import": [197, 200, 201, 202, 203, 204, 205, 206, 207], "clone": 197, "repo": 197, "wherev": 197, "you": [197, 198, 199, 207], "like": [197, 207, 208], "flag": 197, "includ": [197, 198, 199, 207], "packag": [197, 207], "lint": 197, "test": [197, 207], "pylint": [197, 198], "black": 197, "jupyt": 197, "22": 197, "pytest": [197, 199], "cov": 197, "toml": [197, 198, 199], "xdist": 197, "benchmark": 197, "static": 198, "your": [198, 199], "dev": [198, 199], "variou": [198, 206], "nuisanc": 198, "warn": 198, "ignor": 198, "list": 198, "pyproject": [198, 199], "tool": [198, 199, 207], "src": 198, "_version": 198, "py": [198, 199], "disabl": 198, "comparison": 198, "callabl": 198, "doesn": 198, "understand": [198, 202], "metaclass": 198, "fixm": 198, "global": 198, "statement": 198, "invalid": 198, "name": 198, "miss": 198, "docstr": 198, "protect": 198, "too": 198, "mani": 198, "ancestor": 198, "attribut": 198, "public": 198, "unneed": 198, "min": 198, "similar": [198, 206], "120": 198, "manual": [198, 199], "file": [198, 199], "vscode": [198, 199], "json": [198, 199], "instruct": [198, 199], "invok": [198, 199], "edit": [198, 202], "ini_opt": 199, "minvers": 199, "addopt": 199, "showloc": 199, "testpath": 199, "execut": 199, "test_psk": 199, "infrastructur": 199, "debug": 199, "config": [200, 201, 202, 203, 204, 205, 206], "inlinebackend": [200, 201, 202, 203, 204, 205, 206], "print_figure_kwarg": [200, 201, 202, 203, 204, 205, 206], "facecolor": [200, 201, 202, 203, 204, 205, 206], "widget": [200, 201, 202, 203, 204, 205, 206], "continu": 200, "tx": 200, "decai": [200, 202], "fillstyl": 200, "origin": 200, "show": [200, 201, 202, 203, 204, 205, 206], "accomplish": [200, 205], "def": [200, 203, 205], "resample_sign": 200, "new_sample_r": 200, "ty": 200, "gca": [200, 205], "set_prop_cycl": [200, 205], "200": [200, 205], "four": 200, "400": 200, "appear": 200, "fourth": 200, "often": 200, "do": 200, "315": 200, "32": 200, "below": [201, 202], "00095883": 201, "00175012": 201, "00423921": 201, "0058825": 201, "006151": 201, "00474595": 201, "0017044": 201, "00254816": 201, "00721645": 201, "0112324": 201, "01342358": 201, "01273202": 201, "00845058": 201, "0004368": 201, "01073669": 201, "02372977": 201, "03650247": 201, "04650654": 201, "05098525": 201, "04734644": 201, "03355896": 201, "00851486": 201, "02769991": 201, "07367348": 201, "12670447": 201, "1830132": 201, "23810898": 201, "28727058": 201, "3260799": 201, "3509384": 201, "35949665": 201, "conveni": [201, 202], "evalu": [201, 202], "envelop": [201, 202], "here": [201, 202], "altern": 202, "47820725": 202, "78207252e": 202, "58172329e": 202, "10862468e": 202, "86109590e": 202, "21565653e": 202, "01140214e": 202, "57286400e": 202, "67772160e": 202, "47338728e": 202, "10422993e": 202, "89312837e": 202, "12240078e": 202, "03953322e": 202, "69685122e": 202, "63882791e": 202, "81474977e": 202, "47193366e": 202, "85259041e": 202, "15647504e": 202, "23851924e": 202, "42176895e": 202, "84684395e": 202, "42721858e": 202, "72236648e": 202, "14721649e": 202, "10813095e": 202, "94024315e": 202, "78877688e": 202, "74077567e": 202, "87820725": 202, "53637958": 202, "94724205": 202, "13335164": 202, "1455082": 202, "04436799": 202, "88708159": 202, "71930943": 202, "5719707": 202, "46154771": 202, "39261642": 202, "36139242": 202, "35935288": 202, "3763214": 202, "40270968": 202, "43085717": 202, "45557651": 202, "47410241": 202, "48566716": 202, "49090568": 202, "49124786": 202, "48840102": 202, "4839738": 202, "47925143": 202, "47510421": 202, "47199608": 202, "47005584": 202, "46917696": 202, "46911955": 202, "denomin": 202, "73910363": 202, "30614675j": 202, "plane": 202, "endpoint": 202, "092337035029908": 202, "71104892744724": 202, "684365018955985": 202, "37868538208862": 202, "1263714068241546": 202, "9993519409971622": 202, "1909320767063554": 202, "016796159999999997": 202, "46380627201679264": 202, "3806359704987118j": 202, "4988817673846036": 202, "333342139809402j": 202, "5543277195082319": 202, "22961005941718524j": 202, "5291527586053246": 202, "2828380420991956j": 202, "lyon": 202, "3rd": 202, "insid": 202, "outsid": 202, "unstabl": 202, "n_symbol": 203, "pulse_shap": 203, "els": 203, "pb": 203, "x_bb_rect": 203, "papr_bb_rect": 203, "x_pb_rect": 203, "papr_pb_rect": 203, "x_bb_0p1": 203, "papr_bb_0p1": 203, "x_pb_0p1": 203, "papr_pb_0p1": 203, "x_bb_0p5": 203, "papr_bb_0p5": 203, "x_pb_0p5": 203, "papr_pb_0p5": 203, "x_bb_0p9": 203, "papr_bb_0p9": 203, "x_pb_0p9": 203, "papr_pb_0p9": 203, "rectangular": [203, 206], "2f": 203, "rf": [203, 204], "xlim": [203, 204, 206], "512": 203, "sweep_alpha": 203, "bb_papr": 203, "pb_papr": 203, "bpsk_bb_papr": 203, "bpsk_pb_papr": 203, "qpsk_bb_papr": 203, "qpsk_pb_papr": 203, "psk8_bb_papr": 203, "psk8_pb_papr": 203, "psk16_bb_papr": 203, "psk16_pb_papr": 203, "configur": 204, "loop_filt": 204, "0x000002276d2bcc08": 204, "theta_0": 204, "phase_error": 204, "freq_estim": 204, "suptitl": [204, 205], "avail": [204, 205, 207], "001": 204, "005": 204, "b_nt": 204, "0005": 204, "0125": 204, "015": 204, "0175": 204, "t_lock": 204, "analyze_psk": 205, "100_000": 205, "n0": 205, "tx_mf": 205, "1e6": 205, "s_hat": 205, "bpsk_ber": 205, "bpsk_ser": 205, "qpsk_ber": 205, "qpsk_ser": 205, "psk8_ber": 205, "psk8_ser": 205, "psk16_ber": 205, "psk16_ser": 205, "simul": [205, 207], "1e0": 205, "psk8_bin": 205, "psk8_grai": 205, "wors": 205, "rect": 206, "rc_0p1": 206, "rc_0p5": 206, "rc_0p9": 206, "pm": 206, "60": 206, "nearli": 206, "small": 206, "lobe": 206, "much": 206, "h_rect": 206, "freqz": 206, "worn": 206, "whole": 206, "h_rc_0p1": 206, "h_rc_0p5": 206, "h_rc_0p9": 206, "p_rect": 206, "log10": 206, "cumsum": 206, "p_rc_0p1": 206, "p_rc_0p5": 206, "p_rc_0p9": 206, "One": 206, "within": 206, "srrc_0p1": 206, "srrc_0p5": 206, "srrc_0p9": 206, "therefor": 206, "significantli": 206, "due": 206, "being": 206, "h_srrc_0p1": 206, "h_srrc_0p5": 206, "h_srrc_0p9": 206, "p_srrc_0p1": 206, "p_srrc_0p5": 206, "p_srrc_0p9": 206, "gauss_0p1": 206, "gauss_0p2": 206, "gauss_0p3": 206, "softwar": 207, "radio": 207, "goal": 207, "analyz": 207, "build": 207, "reli": 207, "interoper": 207, "veri": 207, "possibl": 207, "numba": 207, "acceler": 207, "computation": 207, "intens": 207, "addition": 207, "aim": 207, "replic": 207, "relev": 207, "matlab": 207, "toolbox": 207, "progress": 207, "someth": 207, "pleas": 207, "open": 207, "issu": 207, "github": 207, "pypi": 207, "api": [207, 209], "convers": [207, 208], "synchron": 207, "budget": [207, 208], "manipul": 207, "august": 208, "2023": 208, "abil": 208, "improv": 208, "renam": 208, "superflu": 208, "replac": 208, "matt": 208, "hostett": 208, "translat": 208, "fix": [208, 209], "juli": 208, "firinterpol": 208, "model": 208, "impair": 208, "fpsl": 208, "helper": 208, "semant": 209, "major": 209, "minor": 209, "patch": 209, "introduc": 209, "featur": 209, "backward": 209, "compat": 209, "make": 209, "bug": 209, "There": 209, "guarante": 209, "them": 209, "thei": 209}, "objects": {"": [[2, 0, 0, 1, "sdr", ""]], "sdr": [[8, 1, 1, "", "ClosedLoopPLL", "A class that defines the performance of a closed-loop PLL."], [25, 1, 1, "", "DDS", "Implements a direct digital synthesizer (DDS)."], [31, 1, 1, "", "Decimator", "Implements a polyphase finite impulse response (FIR) decimating filter."], [41, 1, 1, "", "ErrorRate", "A class for measuring bit error rates (BER) or symbol error rates (SER)."], [48, 1, 1, "", "FIR", "Implements a finite impulse response (FIR) filter."], [65, 1, 1, "", "FarrowResampler", "Implements a cubic Farrow arbitrary resampler."], [72, 1, 1, "", "IIR", "Implements an infinite impulse response (IIR) filter."], [91, 1, 1, "", "Interpolator", "Implements a polyphase finite impulse response (FIR) interpolating filter."], [101, 1, 1, "", "LoopFilter", "Implements a 2nd order, proportional-plus-integrator (PPI) loop filter."], [110, 1, 1, "", "NCO", "Implements a numerically-controlled oscillator (NCO)."], [118, 1, 1, "", "PSK", "Implements phase-shift keying (PSK) modulation and demodulation."], [128, 5, 1, "", "Q", "Computes the complementary cumulative distribution function $Q(x)$ of the standard normal distribution $mathcal{N}(0, 1)$."], [129, 5, 1, "", "Qinv", "Computes the inverse complementary cumulative distribution function $Q^{-1}(p)$ of the standard normal distribution $mathcal{N}(0, 1)$."], [130, 5, 1, "", "average_power", "Measures the average power of a time-domain signal $x[n]$."], [131, 5, 1, "", "awgn", "Adds additive white Gaussian noise (AWGN) to the time-domain signal $x[n]$."], [132, 5, 1, "", "awgn_capacity", "Calculates the capacity of an additive white Gaussian noise (AWGN) channel."], [133, 5, 1, "", "barker", "Returns the Barker code/sequence of length $N$."], [134, 5, 1, "", "bec", "Passes the binary input sequence $x$ through a binary erasure channel (BEC) with erasure probability $p$."], [135, 5, 1, "", "bec_capacity", "Calculates the capacity of a binary erasure channel (BEC)."], [136, 5, 1, "", "binary_code", "Generates a binary code of length $2^n$."], [137, 5, 1, "", "bsc", "Passes the binary input sequence $x$ through a binary symmetric channel (BSC) with transition probability $p$."], [138, 5, 1, "", "bsc_capacity", "Calculates the capacity of a binary symmetric channel (BSC)."], [139, 5, 1, "", "crest_factor", "Measures the crest factor of a time-domain signal $x[n]$."], [140, 5, 1, "", "db", "Converts from linear units to decibels."], [141, 5, 1, "", "diff_decode", "Differentially decodes the input data $y[k]$."], [142, 5, 1, "", "diff_encode", "Differentially encodes the input data $x[k]$."], [143, 5, 1, "", "dmc", "Passes the input sequence $x$ through a discrete memoryless channel (DMC) with transition probability matrix $P$."], [144, 5, 1, "", "ebn0_to_esn0", "Converts from $E_b/N_0$ to $E_s/N_0$."], [145, 5, 1, "", "ebn0_to_snr", "Converts from $E_b/N_0$ to $S/N$."], [146, 5, 1, "", "energy", "Measures the energy of a time-domain signal $x[n]$."], [147, 5, 1, "", "esn0_to_ebn0", "Converts from $E_s/N_0$ to $E_b/N_0$."], [148, 5, 1, "", "esn0_to_snr", "Converts from $E_s/N_0$ to $S/N$."], [149, 5, 1, "", "evm", "Calculates the error-vector magnitude (EVM) of the complex symbols $hat{x}[k]$."], [150, 5, 1, "", "frequency_offset", "Applies a frequency and phase offset to the time-domain signal $x[n]$."], [151, 5, 1, "", "fspl", "Calculates the free-space path loss (FSPL) in dB."], [152, 5, 1, "", "gaussian", "Returns a Gaussian pulse shape."], [153, 5, 1, "", "gray_code", "Generates a Gray code of length $2^n$."], [154, 5, 1, "", "hexdump", "Returns a hexdump of the specified data."], [155, 5, 1, "", "iq_imbalance", "Applies IQ imbalance to the complex time-domain signal $x[n]$."], [156, 5, 1, "", "linear", "Converts from decibels to linear units."], [157, 5, 1, "", "mix", "Mixes the time-domain signal $x[n]$ with a complex exponential."], [158, 5, 1, "", "multirate_taps", "Computes the multirate FIR filter that achieves rational resampling by $P/Q$."], [159, 5, 1, "", "pack", "Packs a binary array into an array with multiple bits per element."], [160, 5, 1, "", "papr", "Measures the peak-to-average power ratio (PAPR) of a time-domain signal $x[n]$."], [161, 5, 1, "", "parabolic_antenna", "Calculates the gain $G$ and beamwidth $theta$ of a parabolic reflector."], [162, 5, 1, "", "peak_power", "Measures the peak power of a time-domain signal $x[n]$."], [163, 5, 1, "", "peak_voltage", "Measures the peak voltage of a time-domain signal $x[n]$."], [182, 5, 1, "", "polyphase_matrix", "Converts the multirate FIR filter taps $h_i$ into the polyphase matrix $H_{i, j}$ that achieves rational resampling by $P/Q$."], [183, 5, 1, "", "raised_cosine", "Returns a raised cosine (RC) pulse shape."], [184, 5, 1, "", "rms_voltage", "Measures the root-mean-square (RMS) voltage of a time-domain signal $x[n]$."], [185, 5, 1, "", "root_raised_cosine", "Returns a square root raised cosine (SRRC) pulse shape."], [186, 5, 1, "", "sample_rate_offset", "Applies a sample rate offset to the time-domain signal $x[n]$."], [187, 5, 1, "", "snr_to_ebn0", "Converts from $S/N$ to $E_b/N_0$."], [188, 5, 1, "", "snr_to_esn0", "Converts from $S/N$ to $E_s/N_0$."], [189, 5, 1, "", "to_complex_bb", "Converts the real passband signal $x_r[n]$ centered at $f_{s,r}/4$ with sample rate $f_{s,r}$ to a complex baseband signal $x_c[n]$ centered at $0$ with sample rate $f_{s,c} = f_{s,r}/2$."], [190, 5, 1, "", "to_real_pb", "Converts the complex baseband signal $x_c[n]$ centered at $0$ with sample rate $f_{s,c}$ to a real passband signal $x_r[n]$ centered at $f_{s,r}/4$ with sample rate $f_{s,r} = 2f_{s,c}$."], [191, 5, 1, "", "unpack", "Unpacks an array with multiple bits per element into a binary array."], [192, 5, 1, "", "zadoff_chu", "Returns the root-$u$ Zadoff-Chu sequence of length $N$."]], "sdr.ClosedLoopPLL": [[9, 2, 1, "", "Bn", "The noise bandwidth $B_n$ of the PLL in Hz."], [10, 2, 1, "", "BnT", "The normalized noise bandwidth $B_n T$ of the PLL."], [11, 2, 1, "", "K0", "The NCO gain $K_0$."], [12, 2, 1, "", "K1", "The proportional gain $K_1$ of the loop filter."], [13, 2, 1, "", "K2", "The integral gain $K_2$ of the loop filter."], [14, 2, 1, "", "Kp", "The phase error detector (PED) gain $K_p$."], [15, 3, 1, "", "__init__", "Creates a closed-loop PLL analysis object."], [16, 3, 1, "", "frequency_lock_time", "Returns the frequency lock time of the PLL."], [17, 2, 1, "", "iir", "The IIR filter that represents the closed-loop transfer function of the PLL."], [18, 3, 1, "", "lock_time", "Returns the lock time of the PLL."], [19, 2, 1, "", "omega_3dB", "The 3-dB bandwidth $omega_{3textrm{dB}}$ of the PLL in radians/s."], [20, 2, 1, "", "omega_n", "The natural frequency $omega_n$ of the PLL in radians/s."], [21, 3, 1, "", "phase_error_variance", "Returns the variance of the phase error of the PLL in steady state."], [22, 3, 1, "", "phase_lock_time", "Returns the phase lock time of the PLL."], [23, 2, 1, "", "sample_rate", "The sample rate $f_s$ of the PLL in samples/s."], [24, 2, 1, "", "zeta", "The damping factor $zeta$ of the PLL."]], "sdr.ClosedLoopPLL.__init__": [[15, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [15, 4, 2, "p-Kp", "Kp", "The gain $K_p$ of the phase error detector (PED) or time error detector (TED)."], [15, 4, 2, "p-damping_factor", "damping_factor", "The damping factor $zeta$ of the loop filter. $zeta = 1$ is critically damped, $zeta < 1$ is underdamped, and $zeta > 1$ is overdamped."], [15, 4, 2, "p-noise_bandwidth", "noise_bandwidth", "The normalized noise bandwidth $B_n T$ of the loop filter, where $B_n$ is the noise bandwidth in Hz and $T$ is the sampling period in seconds."], [15, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the PLL in Hz."]], "sdr.ClosedLoopPLL.frequency_lock_time": [[16, 4, 2, "p-freq_offset", "freq_offset", "The frequency offset $Delta f$ of the input signal in Hz."]], "sdr.ClosedLoopPLL.lock_time": [[18, 4, 2, "p-freq_offset", "freq_offset", "The frequency offset $Delta f$ of the input signal in Hz."]], "sdr.ClosedLoopPLL.phase_error_variance": [[21, 4, 2, "p-cn0", "cn0", "The carrier-to-noise density ratio $C/N_0$ of the input signal in dB-Hz."]], "sdr.DDS": [[26, 3, 1, "", "__call__", "Steps the DDS with the variable phase increment signal $x[n]$."], [27, 3, 1, "", "__init__", "Creates a direct digital synthesizer (DDS)."], [28, 2, 1, "", "nco", "The numerically-controlled oscillator (NCO) used by the DDS."], [29, 3, 1, "", "reset", "Resets the DDS."], [30, 3, 1, "", "step", "Steps the DDS forward by $N$ samples."]], "sdr.DDS.__call__": [[26, 4, 2, "p-x", "x", "The variable-increment signal $x[n]$. This input signal varies the per-sample increment of the DDS."]], "sdr.DDS.__init__": [[27, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [27, 4, 2, "p-increment", "increment", "The constant accumulation $omega$ of the NCO in radians/sample."], [27, 4, 2, "p-offset", "offset", "The absolute offset $theta$ of the NCO in radians."]], "sdr.DDS.step": [[30, 4, 2, "p-N", "N", "The number of samples $N$ to step the DDS forward."]], "sdr.Decimator": [[32, 3, 1, "", "__call__", "Filters and decimates the input signal $x[n]$ with the polyphase FIR filter."], [33, 3, 1, "", "__init__", "Creates a polyphase FIR decimating filter."], [34, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [35, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [36, 2, 1, "", "method", "The method used to design the multirate filter."], [37, 2, 1, "", "polyphase_taps", "The polyphase feedforward taps $h_{i, j}$."], [38, 2, 1, "", "rate", "The decimation rate $r$."], [39, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [40, 2, 1, "", "taps", "The prototype feedforward taps $h_i$."]], "sdr.Decimator.__call__": [[32, 4, 2, "p-mode", "mode", "The non-streaming convolution mode."], [32, 4, 2, "p-x", "x", "The input signal $x[n]$ with sample rate $f_s$ and length $L$."]], "sdr.Decimator.__init__": [[33, 4, 2, "p-rate", "rate", "The decimation rate $r$."], [33, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."], [33, 4, 2, "p-taps", "taps", "The multirate filter design specification."]], "sdr.ErrorRate": [[42, 3, 1, "", "__init__", "Creates a new error rate tabulation object."], [43, 3, 1, "", "add", "Measures the number of bit or symbol errors at the given signal-to-noise ratio (SNR)."], [44, 3, 1, "", "counts", "Returns the number of counts at the specified signal-to-noise ratio (SNR)."], [45, 3, 1, "", "error_rate", "Returns the error rate at the specified signal-to-noise ratio (SNR)."], [46, 3, 1, "", "error_rates", "Returns all signal-to-noise ratios (SNRs) in ascending order and their corresponding error rates."], [47, 3, 1, "", "errors", "Returns the number of errors at the specified signal-to-noise ratio (SNR)."]], "sdr.ErrorRate.add": [[43, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."], [43, 4, 2, "p-x", "x", "The transmitted bits or symbols $x[k]$."], [43, 4, 2, "p-x_hat", "x_hat", "The received bits or symbols $hat{x}[k]$."]], "sdr.ErrorRate.counts": [[44, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."]], "sdr.ErrorRate.error_rate": [[45, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."]], "sdr.ErrorRate.errors": [[47, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."]], "sdr.FIR": [[49, 3, 1, "", "__call__", "Filters the input signal $x[n]$ with the FIR filter."], [50, 3, 1, "", "__init__", "Creates a FIR filter with feedforward coefficients $h_i$."], [51, 3, 1, "", "__len__", "Returns the filter length $N + 1$."], [52, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [53, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [54, 2, 1, "", "delay", "The delay of the FIR filter $d = lfloor frac{N + 1}{2} rfloor$ in samples."], [55, 3, 1, "", "flush", "Flushes the filter state by passing zeros through the filter. Only useful when using streaming mode."], [56, 3, 1, "", "frequency_response", "Returns the frequency response $H(omega)$ of the FIR filter."], [57, 3, 1, "", "frequency_response_log", "Returns the frequency response $H(omega)$ of the FIR filter on a logarithmic frequency axis."], [58, 3, 1, "", "impulse_response", "Returns the impulse response $h[n]$ of the FIR filter. The impulse response $h[n]$ is the filter output when the input is an impulse $delta[n]$."], [59, 2, 1, "", "order", "The order of the FIR filter $N$."], [60, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [61, 2, 1, "", "state", "The filter state consisting of the previous $N$ inputs."], [62, 3, 1, "", "step_response", "Returns the step response $s[n]$ of the FIR filter. The step response $s[n]$ is the filter output when the input is a unit step $u[n]$."], [63, 2, 1, "", "streaming", "Indicates whether the filter is in streaming mode."], [64, 2, 1, "", "taps", "The feedforward taps $h_i$ for $i = 0,...,N$."]], "sdr.FIR.__call__": [[49, 4, 2, "p-mode", "mode", "The non-streaming convolution mode."], [49, 4, 2, "p-x", "x", "The input signal $x[n]$ with length $L$."]], "sdr.FIR.__init__": [[50, 4, 2, "p-h", "h", "The feedforward coefficients $h_i$ for $i = 0,...N$."], [50, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."]], "sdr.FIR.frequency_response": [[56, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [56, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.FIR.frequency_response_log": [[57, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [57, 4, 2, "p-decades", "decades", "The number of frequency decades to plot."], [57, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.FIR.impulse_response": [[58, 4, 2, "p-N", "N", "The number of samples to return. The default is the filter length."]], "sdr.FIR.step_response": [[62, 4, 2, "p-N", "N", "The number of samples to return. The default is the filter length."]], "sdr.FarrowResampler": [[66, 3, 1, "", "__call__", "Resamples the input signal $x[n]$ by the given arbitrary rate $r$."], [67, 3, 1, "", "__init__", "Creates a new Farrow arbitrary resampler."], [68, 2, 1, "", "order", "The order of the filter."], [69, 3, 1, "", "reset", "Streaming-mode only: Resets the filter state and fractional sample index."], [70, 2, 1, "", "streaming", "Indicates whether the filter is in streaming mode."], [71, 2, 1, "", "taps", "The Farrow filter taps."]], "sdr.FarrowResampler.__call__": [[66, 4, 2, "p-rate", "rate", "The resampling rate $r$."], [66, 4, 2, "p-x", "x", "The input signal $x[n] = x(n T_s)$."]], "sdr.FarrowResampler.__init__": [[67, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."]], "sdr.FarrowResampler.reset": [[69, 4, 2, "p-state", "state", "The filter state to reset to. The state vector should equal the previous three inputs. If None, the filter state will be reset to zero."]], "sdr.IIR": [[73, 3, 1, "", "ZerosPoles", "Creates an IIR filter from its zeros, poles, and gain."], [74, 3, 1, "", "__call__", "Filters the input signal $x[n]$ with the IIR filter."], [75, 3, 1, "", "__init__", "Creates an IIR filter with feedforward coefficients $b_i$ and feedback coefficients $a_j$."], [76, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [77, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [78, 2, 1, "", "a_taps", "The feedback taps $a_j$ for $j = 0,...,N$."], [79, 2, 1, "", "b_taps", "The feedforward taps $b_i$ for $i = 0,...,M$."], [80, 3, 1, "", "frequency_response", "Returns the frequency response $H(omega)$ of the IIR filter."], [81, 3, 1, "", "frequency_response_log", "Returns the frequency response $H(omega)$ of the IIR filter on a logarithmic frequency axis."], [82, 2, 1, "", "gain", "The gain of the IIR filter."], [83, 3, 1, "", "impulse_response", "Returns the impulse response $h[n]$ of the IIR filter. The impulse response $h[n]$ is the filter output when the input is an impulse $delta[n]$."], [84, 2, 1, "", "order", "The order of the IIR filter $N$."], [85, 2, 1, "", "poles", "The poles of the IIR filter."], [86, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [87, 2, 1, "", "state", "The filter state."], [88, 3, 1, "", "step_response", "Returns the step response $s[n]$ of the IIR filter. The step response $s[n]$ is the filter output when the input is a unit step $u[n]$."], [89, 2, 1, "", "streaming", "Indicates whether the filter is in streaming mode."], [90, 2, 1, "", "zeros", "The zeros of the IIR filter."]], "sdr.IIR.ZerosPoles": [[73, 4, 2, "p-gain", "gain", "The gain of the transfer function."], [73, 4, 2, "p-poles", "poles", "The poles of the transfer function."], [73, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs and outputs are preserved between calls to __call__()."], [73, 4, 2, "p-zeros", "zeros", "The zeros of the transfer function."]], "sdr.IIR.__call__": [[74, 4, 2, "p-x", "x", "The input signal $x[n]$ with length $L$."]], "sdr.IIR.__init__": [[75, 4, 2, "p-a", "a", "The feedback coefficients $a_j$ for $j = 0,...,N$."], [75, 4, 2, "p-b", "b", "The feedforward coefficients $b_i$ for $i = 0,...,M$."], [75, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs and outputs are preserved between calls to __call__()."]], "sdr.IIR.frequency_response": [[80, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [80, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.IIR.frequency_response_log": [[81, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [81, 4, 2, "p-decades", "decades", "The number of frequency decades to plot."], [81, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.IIR.impulse_response": [[83, 4, 2, "p-N", "N", "The number of samples to return."]], "sdr.IIR.step_response": [[88, 4, 2, "p-N", "N", "The number of samples to return."]], "sdr.Interpolator": [[92, 3, 1, "", "__call__", "Interpolates and filters the input signal $x[n]$ with the polyphase FIR filter."], [93, 3, 1, "", "__init__", "Creates a polyphase FIR interpolating filter."], [94, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [95, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [96, 2, 1, "", "method", "The method used to design the multirate filter."], [97, 2, 1, "", "polyphase_taps", "The polyphase feedforward taps $h_{i, j}$."], [98, 2, 1, "", "rate", "The interpolation rate $r$."], [99, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [100, 2, 1, "", "taps", "The prototype feedforward taps $h_i$."]], "sdr.Interpolator.__call__": [[92, 4, 2, "p-mode", "mode", "The non-streaming convolution mode."], [92, 4, 2, "p-x", "x", "The input signal $x[n]$ with sample rate $f_s$ and length $L$."]], "sdr.Interpolator.__init__": [[93, 4, 2, "p-rate", "rate", "The interpolation rate $r$."], [93, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."], [93, 4, 2, "p-taps", "taps", "The multirate filter design specification."]], "sdr.LoopFilter": [[102, 2, 1, "", "K1", "The proportional gain $K_1$ of the loop filter."], [103, 2, 1, "", "K2", "The integral gain $K_2$ of the loop filter."], [104, 3, 1, "", "__call__", "Filters the input signal $x[n]$."], [105, 3, 1, "", "__init__", "Creates a 2nd order, proportional-plus-integrator (PPI) loop filter."], [106, 2, 1, "", "damping_factor", "The damping factor $zeta$ of the loop filter. $zeta = 1$ is critically damped, $zeta < 1$ is underdamped, and $zeta > 1$ is overdamped."], [107, 2, 1, "", "iir", "The underlying IIR filter used to implement the loop filter."], [108, 2, 1, "", "noise_bandwidth", "The normalized noise bandwidth $B_n T$ of the loop filter, where $B_n$ is the noise bandwidth in Hz and $T$ is the sampling period in seconds."], [109, 3, 1, "", "reset", "Resets the loop filter."]], "sdr.LoopFilter.__call__": [[104, 4, 2, "p-x", "x", "The input signal $x[n]$."]], "sdr.LoopFilter.__init__": [[105, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [105, 4, 2, "p-Kp", "Kp", "The gain $K_p$ of the phase error detector (PED) or time error detector (TED)."], [105, 4, 2, "p-damping_factor", "damping_factor", "The damping factor $zeta$ of the loop filter. $zeta = 1$ is critically damped, $zeta < 1$ is underdamped, and $zeta > 1$ is overdamped."], [105, 4, 2, "p-noise_bandwidth", "noise_bandwidth", "The normalized noise bandwidth $B_n T$ of the loop filter, where $B_n$ is the noise bandwidth in Hz and $T$ is the sampling period in seconds."]], "sdr.NCO": [[111, 2, 1, "", "K0", "The NCO gain $K_0$."], [112, 3, 1, "", "__call__", "Steps the NCO with the variable-increment signal $x[n]$."], [113, 3, 1, "", "__init__", "Creates a numerically-controlled oscillator (NCO)."], [114, 2, 1, "", "increment", "The constant accumulation $omega$ of the NCO in units/sample."], [115, 2, 1, "", "offset", "The absolute offset $theta$ of the NCO in units."], [116, 3, 1, "", "reset", "Resets the NCO."], [117, 3, 1, "", "step", "Steps the NCO forward by $N$ samples."]], "sdr.NCO.__call__": [[112, 4, 2, "p-x", "x", "The variable-increment signal $x[n]$. This input signal varies the per-sample increment of the NCO."]], "sdr.NCO.__init__": [[113, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [113, 4, 2, "p-increment", "increment", "The constant accumulation $omega$ of the NCO in units/sample."], [113, 4, 2, "p-offset", "offset", "The absolute offset $theta$ of the NCO in units."]], "sdr.NCO.step": [[117, 4, 2, "p-N", "N", "The number of samples $N$ to step the NCO forward."]], "sdr.PSK": [[119, 3, 1, "", "__init__", "Creates a new PSK object."], [120, 3, 1, "", "ber", "Computes the bit error rate (BER) at the provided $E_b/N_0$ values."], [121, 2, 1, "", "bps", "The number of bits per symbol $k = log_2 M$."], [122, 3, 1, "", "demodulate", "Demodulates the complex symbols $hat{x}[k]$ to decimal symbols $hat{s}[k]$ using maximum-likelihood estimation."], [123, 3, 1, "", "modulate", "Modulates to decimal symbols $s[k]$ to complex symbols $x[k]$."], [124, 2, 1, "", "order", "The modulation order $M = 2^k$."], [125, 2, 1, "", "phase_offset", "The phase offset $phi$ in degrees."], [126, 3, 1, "", "ser", "Computes the symbol error rate (SER) at the provided $E_s/N_0$ values."], [127, 2, 1, "", "symbol_map", "The symbol map ${0, dots, M-1} mapsto mathbb{C}$. This maps decimal symbols from $0$ to $M-1$ to complex symbols."]], "sdr.PSK.__init__": [[119, 4, 2, "p-order", "order", "The modulation order $M = 2^k$, where $k ge 1$ is the bits per symbol."], [119, 4, 2, "p-phase_offset", "phase_offset", "The phase offset $phi$ in degrees."], [119, 4, 2, "p-symbol_labels", "symbol_labels", "The decimal symbol labels of consecutive complex symbols."]], "sdr.PSK.ber": [[120, 4, 2, "p-diff_encoded", "diff_encoded", "Indicates whether the input symbols were differentially encoded."], [120, 4, 2, "p-ebn0", "ebn0", "Bit energy $E_b$ to noise PSD $N_0$ ratio in dB."]], "sdr.PSK.demodulate": [[122, 4, 2, "p-x_hat", "x_hat", "The complex symbols $hat{x}[k]$ to demodulate."]], "sdr.PSK.modulate": [[123, 4, 2, "p-symbols", "symbols", "The decimal symbols $s[k]$ to modulate, $0$ to $M-1$."]], "sdr.PSK.ser": [[126, 4, 2, "p-diff_encoded", "diff_encoded", "Indicates whether the input symbols were differentially encoded."], [126, 4, 2, "p-esn0", "esn0", "Symbol energy $E_s$ to noise PSD $N_0$ ratio in dB."]], "sdr.Q": [[128, 4, 2, "p-x", "x", "The real-valued input $x$."]], "sdr.Qinv": [[129, 4, 2, "p-p", "p", "The probability $p$ of exceeding the returned value $x$."]], "sdr.average_power": [[130, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.awgn": [[131, 4, 2, "p-noise", "noise", "The noise power (variance) in linear units. If noise is None, snr must be specified."], [131, 4, 2, "p-seed", "seed", "The seed for the random number generator. This is passed to numpy.random.default_rng()."], [131, 4, 2, "p-snr", "snr", "The desired signal-to-noise ratio (SNR) in dB. If specified, the average signal power is measured explicitly. It is assumed that $x[n]$ contains signal only. If the signal power is known, the desired noise variance can be computed and passed in noise. If snr is None, noise must be specified."], [131, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to which AWGN is added."]], "sdr.awgn_capacity": [[132, 4, 2, "p-bandwidth", "bandwidth", "The bandwidth $B$ of the channel in Hz. If specified, the capacity is calculated in bits/s. If None, the capacity is calculated in bits/2D."], [132, 4, 2, "p-snr", "snr", "The signal-to-noise ratio $S / N$ in dB of the channel."]], "sdr.barker": [[133, 4, 2, "p-length", "length", "The length $N$ of the Barker code/sequence."], [133, 4, 2, "p-output", "output", "The output format of the Barker code/sequence."]], "sdr.bec": [[134, 4, 2, "p-p", "p", "The probability $p$ of a bit erasure."], [134, 4, 2, "p-x", "x", "The input sequence $x$ with $x_i in {0, 1}$."]], "sdr.bec_capacity": [[135, 4, 2, "p-p", "p", "The erasure probability $p$ of the BEC channel."]], "sdr.binary_code": [[136, 4, 2, "p-n", "n", "The length of the binary code."]], "sdr.bsc": [[137, 4, 2, "p-p", "p", "The probability $p$ of a bit flip."], [137, 4, 2, "p-x", "x", "The input sequence $x$ with $x_i in {0, 1}$."]], "sdr.bsc_capacity": [[138, 4, 2, "p-p", "p", "The transition probability $p$ of the BSC channel."]], "sdr.crest_factor": [[139, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.db": [[140, 4, 2, "p-type", "type", "The type of input value or signal."], [140, 4, 2, "p-x", "x", "The input value or signal."]], "sdr.diff_decode": [[141, 4, 2, "p-y", "y", "The input encoded data $y[k]$."], [141, 4, 2, "p-y_prev", "y_prev", "The previous value of the encoded data $y[k-1]$."]], "sdr.diff_encode": [[142, 4, 2, "p-x", "x", "The input uncoded data $x[k]$."], [142, 4, 2, "p-y_prev", "y_prev", "The previous value of the output encoded data $y[k-1]$."]], "sdr.dmc": [[143, 4, 2, "p-P", "P", "The $m times n$ transition probability matrix $P$, where $P_{i,j} = Pr(Y = y_j | X = x_i)$."], [143, 4, 2, "p-X", "X", "The input alphabet $mathcal{X}$ of size $m$. If None, it is assumed that $mathcal{X} = {0, 1, ldots, m-1}$."], [143, 4, 2, "p-Y", "Y", "The output alphabet $mathcal{Y}$ of size $n$. If None, it is assumed that $mathcal{Y} = {0, 1, ldots, n-1}$."], [143, 4, 2, "p-x", "x", "The input sequence $x$ with $x_i in mathcal{X}$."]], "sdr.ebn0_to_esn0": [[144, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [144, 4, 2, "p-ebn0", "ebn0", "Bit energy $E_b$ to noise PSD $N_0$ ratio in dB."], [144, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."]], "sdr.ebn0_to_snr": [[145, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [145, 4, 2, "p-ebn0", "ebn0", "Bit energy $E_b$ to noise PSD $N_0$ ratio in dB."], [145, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."], [145, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.energy": [[146, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.esn0_to_ebn0": [[147, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [147, 4, 2, "p-esn0", "esn0", "Symbol energy $E_s$ to noise PSD $N_0$ ratio in dB."], [147, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."]], "sdr.esn0_to_snr": [[148, 4, 2, "p-esn0", "esn0", "Symbol energy $E_s$ to noise PSD $N_0$ ratio in dB."], [148, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.evm": [[149, 4, 2, "p-norm", "norm", "The normalization source used in the EVM calculation."], [149, 4, 2, "p-output", "output", "The output type of the EVM calculation."], [149, 4, 2, "p-ref", "ref", "The complex reference symbols $x[k]$. This can be the noiseless transmitted symbols or the modulation's symbol map."], [149, 4, 2, "p-x_hat", "x_hat", "The complex symbols $hat{x}[k]$ to be measured."]], "sdr.frequency_offset": [[150, 4, 2, "p-freq", "freq", "The frequency offset $f$ in Hz (or in cycles/sample if sample_rate=1)."], [150, 4, 2, "p-freq_rate", "freq_rate", "The frequency offset rate $f_{text{rate}}$ in Hz/s (or in cycles/sample^2 if sample_rate=1)."], [150, 4, 2, "p-phase", "phase", "The phase offset $phi$ in degrees."], [150, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ in samples/s."], [150, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to which the frequency offset is applied."]], "sdr.fspl": [[151, 4, 2, "p-d", "d", "The distance $d$ in meters between the transmitter and receiver."], [151, 4, 2, "p-f", "f", "The frequency $f$ in Hz of the signal."]], "sdr.gaussian": [[152, 4, 2, "p-span", "span", "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."], [152, 4, 2, "p-sps", "sps", "The number of samples per symbol."], [152, 4, 2, "p-time_bandwidth", "time_bandwidth", "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."]], "sdr.gray_code": [[153, 4, 2, "p-n", "n", "The length of the Gray code."]], "sdr.hexdump": [[154, 4, 2, "p-data", "data", "The data to display. Each element is considered one byte. Use sdr.pack() or sdr.unpack() to convert data with variable bits per element."], [154, 4, 2, "p-width", "width", "The number of bytes per line."]], "sdr.iq_imbalance": [[155, 4, 2, "p-amplitude", "amplitude", "The amplitude imbalance $A$ in dB. A positive value indicates that the in-phase component is larger than the quadrature component."], [155, 4, 2, "p-phase", "phase", "The phase imbalance $phi$ in degrees. A positive value indicates that the quadrature component leads the in-phase component."], [155, 4, 2, "p-x", "x", "The complex time-domain signal $x[n]$ to which IQ imbalance is applied."]], "sdr.linear": [[156, 4, 2, "p-type", "type", "The type of output value or signal."], [156, 4, 2, "p-x", "x", "The input value or signal in dB."]], "sdr.mix": [[157, 4, 2, "p-freq", "freq", "The frequency $f$ of the complex exponential in Hz (or 1/samples if sample_rate=1). The frequency must satisfy $-f_s/2 le f le f_s/2$."], [157, 4, 2, "p-phase", "phase", "The phase $phi$ of the complex exponential in degrees."], [157, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal."], [157, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."]], "sdr.multirate_taps": [[158, 4, 2, "p-A_stop", "A_stop", "The stopband attenuation $A_{text{stop}}$ in dB."], [158, 4, 2, "p-P", "P", "The interpolation rate $P$."], [158, 4, 2, "p-Q", "Q", "The decimation rate $Q$."], [158, 4, 2, "p-half_length", "half_length", "The half-length of the polyphase filters."]], "sdr.pack": [[159, 4, 2, "p-bpe", "bpe", "The number of bits per element in the output array."], [159, 4, 2, "p-dtype", "dtype", "The data type of the output array. If None, the smallest unsigned integer dtype that can hold bpe bits is used."], [159, 4, 2, "p-x", "x", "The input binary array with 1 bit per element."]], "sdr.papr": [[160, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.parabolic_antenna": [[161, 4, 2, "p-diameter", "diameter", "The diameter $d$ in meters of the parabolic reflector."], [161, 4, 2, "p-efficiency", "efficiency", "The efficiency $0 le eta le 1$ of the parabolic reflector."], [161, 4, 2, "p-freq", "freq", "The frequency $f$ in Hz of the signal."]], "sdr.peak_power": [[162, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.peak_voltage": [[163, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.plot": [[164, 5, 1, "", "ber", "Plots the bit error rate (BER) as a function of $E_b/N_0$."], [165, 5, 1, "", "constellation", "Plots the constellation of the complex symbols $hat{x}[k]$."], [166, 5, 1, "", "eye", "Plots the eye diagram of the real baseband signal $x[k]$."], [167, 5, 1, "", "filter", "Plots the magnitude response $|H(omega)|^2$, impulse response $h[n]$, step response $s[n]$, and zeros and poles of the filter."], [168, 5, 1, "", "group_delay", "Plots the group delay $tau_g(omega)$ of the IIR filter."], [169, 5, 1, "", "impulse_response", "Plots the impulse response $h[n]$ of a filter."], [170, 5, 1, "", "magnitude_response", "Plots the magnitude response $|H(omega)|^2$ of the filter."], [171, 5, 1, "", "periodogram", "Plots the estimated power spectral density $P_{xx}$ of a time-domain signal $x[n]$ using Welch's method."], [172, 5, 1, "", "phase_delay", "Plots the phase delay $tau_{phi}(omega)$ of the filter."], [173, 5, 1, "", "phase_response", "Plots the phase response $angle H(omega)$ of the filter."], [174, 5, 1, "", "raster", "Plots a raster of the time-domain signal $x[n]$."], [175, 5, 1, "", "ser", "Plots the symbol error rate (SER) as a function of $E_s/N_0$."], [176, 5, 1, "", "spectrogram", "Plots the spectrogram of a time-domain signal $x[n]$ using Welch's method."], [177, 5, 1, "", "step_response", "Plots the step response $s[n]$ of a filter."], [178, 5, 1, "", "symbol_map", "Plots the symbol map of the complex symbols $hat{x}[k]$."], [179, 5, 1, "", "time_domain", "Plots a time-domain signal $x[n]$."], [180, 5, 1, "", "use_style", "Applies sdr's default matplotlib rcParams."], [181, 5, 1, "", "zeros_poles", "Plots the zeros and poles of the filter."]], "sdr.plot.ber": [[164, 4, 2, "p-ber", "ber", "The bit error rate $P_{be}$."], [164, 4, 2, "p-ebn0", "ebn0", "The bit energy $E_b$ to noise PSD $N_0$ ratio (dB)."], [164, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.semilogy()."]], "sdr.plot.constellation": [[165, 4, 2, "p-heatmap", "heatmap", "If True, a heatmap is plotted instead of a scatter plot."], [165, 4, 2, "p-kwargs", "kwargs", "If heatmap=False, additional keyword arguments to pass to matplotlib.pyplot.scatter(). The following keyword arguments are set by default. The defaults may be overwritten."], [165, 4, 2, "p-limits", "limits", "The axis limits, which apply to both the x- and y-axis. If None, the axis limits are set to 10% larger than the maximum value."], [165, 4, 2, "p-x_hat", "x_hat", "The complex symbols $hat{x}[k]$."]], "sdr.plot.eye": [[166, 4, 2, "p-color", "color", "Indicates how to color the rasters. If \"index\", the rasters are colored based on their index. If a valid Matplotlib color, the rasters are all colored with that color."], [166, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to sdr.plot.raster()."], [166, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If None, the x-axis will be labeled as \"Samples\"."], [166, 4, 2, "p-span", "span", "The number of symbols per raster."], [166, 4, 2, "p-sps", "sps", "The number of samples per symbol."], [166, 4, 2, "p-x", "x", "The real baseband signal $x[k]$."]], "sdr.plot.filter": [[167, 4, 2, "p-N_freq", "N_freq", "The number of samples $N_f$ in the frequency response."], [167, 4, 2, "p-N_time", "N_time", "The number of samples $N_t$ in the time domain. If None, the length of b is used for FIR filters and 100 for IIR filters."], [167, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [167, 4, 2, "p-filter", "filter", "The filter definition."], [167, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [167, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.group_delay": [[168, 4, 2, "p-N", "N", "The number of samples $N$ in the frequency response."], [168, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [168, 4, 2, "p-filter", "filter", "The filter definition."], [168, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [168, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [168, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.impulse_response": [[169, 4, 2, "p-N", "N", "The number of samples $N$ to plot. If None, the length of b is used for FIR filters and 100 for IIR filters."], [169, 4, 2, "p-filter", "filter", "The filter definition."], [169, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."]], "sdr.plot.magnitude_response": [[170, 4, 2, "p-N", "N", "The number of samples $N$ in the frequency response."], [170, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [170, 4, 2, "p-filter", "filter", "The filter definition."], [170, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [170, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [170, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.periodogram": [[171, 4, 2, "p-average", "average", "The type of averaging to use. Options are to average the periodograms using the mean or median."], [171, 4, 2, "p-detrend", "detrend", "The type of detrending to apply. Options are to remove the mean or a linear trend from each segment."], [171, 4, 2, "p-fft", "fft", "The number of points to use in the FFT. If None, the FFT length is set to length."], [171, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [171, 4, 2, "p-length", "length", "The length of each segment in samples. If None, the length is set to 256."], [171, 4, 2, "p-overlap", "overlap", "The number of samples to overlap between segments. If None, the overlap is set to length // 2."], [171, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s."], [171, 4, 2, "p-window", "window", "The windowing function to use. This can be a string or a vector of length length."], [171, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."], [171, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.phase_delay": [[172, 4, 2, "p-N", "N", "The number of samples $N$ in the phase delay."], [172, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [172, 4, 2, "p-filter", "filter", "The filter definition."], [172, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [172, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [172, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.phase_response": [[173, 4, 2, "p-N", "N", "The number of samples $N$ in the phase response."], [173, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [173, 4, 2, "p-filter", "filter", "The filter definition."], [173, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [173, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [173, 4, 2, "p-unwrap", "unwrap", "Indicates whether to unwrap the phase response."], [173, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.raster": [[174, 4, 2, "p-color", "color", "Indicates how to color the rasters. If \"index\", the rasters are colored based on their index. If a valid Matplotlib color, the rasters are all colored with that color."], [174, 4, 2, "p-colorbar", "colorbar", "Indicates whether to add a colorbar to the plot."], [174, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.collections.LineCollection. The following keyword arguments are set by default. The defaults may be overwritten."], [174, 4, 2, "p-length", "length", "The length of each raster in samples."], [174, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If None, the x-axis will be labeled as \"Samples\"."], [174, 4, 2, "p-stride", "stride", "The stride between each raster in samples. If None, the stride is set to length."], [174, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."]], "sdr.plot.ser": [[175, 4, 2, "p-esn0", "esn0", "The symbol energy $E_s$ to noise PSD $N_0$ ratio (dB)."], [175, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.semilogy()."], [175, 4, 2, "p-ser", "ser", "The symbol error rate $P_{se}$."]], "sdr.plot.spectrogram": [[176, 4, 2, "p-detrend", "detrend", "The type of detrending to apply. Options are to remove the mean or a linear trend from each segment."], [176, 4, 2, "p-fft", "fft", "The number of points to use in the FFT. If None, the FFT length is set to length."], [176, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.pcolormesh(). The following keyword arguments are set by default. The defaults may be overwritten."], [176, 4, 2, "p-length", "length", "The length of each segment in samples. If None, the length is set to 256."], [176, 4, 2, "p-overlap", "overlap", "The number of samples to overlap between segments. If None, the overlap is set to length // 2."], [176, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If the sample rate is 1, the x-axis will be label as \"Samples\" and the y-axis as \"Normalized Frequency\"."], [176, 4, 2, "p-window", "window", "The windowing function to use. This can be a string or a vector of length length."], [176, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."], [176, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum or two-sided spectrum."]], "sdr.plot.step_response": [[177, 4, 2, "p-N", "N", "The number of samples $N$ to plot. If None, the length of b is used for FIR filters and 100 for IIR filters."], [177, 4, 2, "p-filter", "filter", "The filter definition."], [177, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."]], "sdr.plot.symbol_map": [[178, 4, 2, "p-annotate", "annotate", "If True, the symbols are annotated with their index. If \"bin\", the symbols are annotated with their binary representation."], [178, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot(). The following keyword arguments are set by default. The defaults may be overwritten."], [178, 4, 2, "p-limits", "limits", "The axis limits, which apply to both the x- and y-axis. If None, the axis limits are set to 50% larger than the maximum value."], [178, 4, 2, "p-symbol_map", "symbol_map", "The complex symbols $hat{x}[k]$."]], "sdr.plot.time_domain": [[179, 4, 2, "p-centered", "centered", "Indicates whether to center the x-axis about 0. This argument is mutually exclusive with offset."], [179, 4, 2, "p-diff", "diff", "Indicates how to differentiate the real and imaginary parts of a complex signal. If \"color\", the real and imaginary parts will have different colors based on the current Matplotlib color cycle. If \"line\", the real part will have a solid line and the imaginary part will have a dashed line, and both lines will share the same color."], [179, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [179, 4, 2, "p-offset", "offset", "The x-axis offset to apply to the first sample. The units of the offset are $1/f_s$. This argument is mutually exclusive with centered."], [179, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If None, the x-axis will be labeled as \"Samples\"."], [179, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."]], "sdr.plot.zeros_poles": [[181, 4, 2, "p-filter", "filter", "The filter definition."], [181, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."]], "sdr.polyphase_matrix": [[182, 4, 2, "p-P", "P", "The interpolation rate $P$."], [182, 4, 2, "p-Q", "Q", "The decimation rate $Q$."], [182, 4, 2, "p-taps", "taps", "The multirate FIR filter taps $h_i$."]], "sdr.raised_cosine": [[183, 4, 2, "p-alpha", "alpha", "The excess bandwidth $0 le alpha le 1$ of the filter."], [183, 4, 2, "p-span", "span", "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."], [183, 4, 2, "p-sps", "sps", "The number of samples per symbol."]], "sdr.rms_voltage": [[184, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.root_raised_cosine": [[185, 4, 2, "p-alpha", "alpha", "The excess bandwidth $0 le alpha le 1$ of the filter."], [185, 4, 2, "p-span", "span", "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."], [185, 4, 2, "p-sps", "sps", "The number of samples per symbol."]], "sdr.sample_rate_offset": [[186, 4, 2, "p-ppm", "ppm", "The sample rate offset $f_{s,text{new}} / f_s$ in parts per million (ppm)."], [186, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to which the sample rate offset is applied."]], "sdr.snr_to_ebn0": [[187, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [187, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."], [187, 4, 2, "p-snr", "snr", "Signal-to-noise ratio $S/N$ in dB."], [187, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.snr_to_esn0": [[188, 4, 2, "p-snr", "snr", "Signal-to-noise ratio $S/N$ in dB."], [188, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.to_complex_bb": [[189, 4, 2, "p-x_r", "x_r", "The real passband signal $x_r[n]$ centered at $f_{s,r}/4$ with sample rate $f_{s,r}$. If the length is odd, one zero is appended to the end."]], "sdr.to_real_pb": [[190, 4, 2, "p-x_c", "x_c", "The complex baseband signal $x_c[n]$ centered at $0$ with sample rate $f_{s,c}$."]], "sdr.unpack": [[191, 4, 2, "p-bpe", "bpe", "The number of bits per element in the input array."], [191, 4, 2, "p-dtype", "dtype", "The data type of the output array. If None, numpy.uint8 is used."], [191, 4, 2, "p-x", "x", "The input array with bpe bits per element."]], "sdr.zadoff_chu": [[192, 4, 2, "p-length", "length", "The length $N$ of the Zadoff-Chu sequence."], [192, 4, 2, "p-root", "root", "The root $0 < u < N$ of the Zadoff-Chu sequence. The root must be relatively prime to the length, i.e., $gcd(u, N) = 1$."], [192, 4, 2, "p-shift", "shift", "The shift $q in mathbb{Z}$ of the Zadoff-Chu sequence. When $q ne 0$, the returned sequence is a cyclic shift of the root-$u$ Zadoff-Chu sequence."]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:parameter", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "parameter", "Python parameter"], "5": ["py", "function", "Python function"]}, "titleterms": {"convers": 0, "decibel": 0, "from": [0, 197, 198, 199], "e_b": 0, "n_0": 0, "e_": 0, "": [0, 201, 202], "n": [0, 200, 201, 202], "data": 1, "manipul": [1, 2], "digit": [2, 202], "signal": [2, 194, 200, 203], "process": 2, "filter": [2, 6, 201, 202, 204], "multir": 2, "resampl": [2, 200], "correl": 2, "link": 3, "budget": 3, "channel": [3, 194], "capac": 3, "path": 3, "loss": 3, "antenna": 3, "measur": 4, "energi": 4, "power": [4, 203], "voltag": 4, "modul": [4, 5, 6], "class": 5, "puls": [5, 203, 206], "shape": [5, 203, 206], "symbol": [5, 205], "map": [5, 205], "encod": 5, "plot": [6, 203], "configur": [6, 198, 199], "time": [6, 203, 204], "domain": [6, 203, 204], "frequenc": [6, 201, 202, 203, 204], "spectral": 6, "estim": 6, "analysi": 6, "probabl": 7, "note": [8, 158, 166, 170, 171, 176], "constructor": [8, 25, 31, 41, 48, 65, 72, 91, 101, 110, 118], "method": [8, 25, 31, 41, 48, 65, 72, 91, 101, 110, 118], "properti": [8, 25, 31, 48, 65, 72, 91, 101, 110, 118], "see": [25, 41, 43, 56, 57, 58, 62, 80, 81, 83, 88, 110, 120, 126, 128, 129, 139, 160], "also": [25, 41, 43, 56, 57, 58, 62, 80, 81, 83, 88, 110, 120, 126, 128, 129, 139, 160], "special": [25, 31, 48, 65, 72, 91, 101, 110], "string": [31, 48, 72, 91], "represent": [31, 48, 72, 91], "stream": [31, 48, 72, 91], "mode": [31, 48, 72, 91], "onli": [31, 48, 72, 91], "sequenc": 193, "simul": 194, "model": 194, "impair": 194, "synchron": 195, "document": 196, "instal": [196, 197, 198, 199, 207], "build": 196, "doc": 196, "serv": 196, "pypi": 197, "github": 197, "edit": 197, "local": 197, "folder": 197, "dev": 197, "depend": 197, "linter": 198, "run": [198, 199], "command": [198, 199], "line": [198, 199], "v": [198, 199], "code": [198, 199], "unit": 199, "test": 199, "farrow": 200, "arbitrari": 200, "construct": 200, "an": [200, 201, 202], "input": 200, "x": 200, "t_": 200, "rate": [200, 205], "r": 200, "y": 200, "frac": 200, "upsampl": 200, "integ": 200, "downsampl": 200, "irrat": 200, "fir": 201, "creat": [201, 202], "examin": [201, 202, 203], "impuls": [201, 202], "respons": [201, 202, 204], "h": [201, 202], "step": [201, 202, 204], "omega": [201, 202], "group": [201, 202], "delai": [201, 202], "tau_g": [201, 202], "fulli": [201, 202], "analyz": [201, 202, 204], "iir": 202, "zero": 202, "pole": 202, "stabil": 202, "peak": 203, "averag": 203, "qpsk": [203, 205], "variou": 203, "across": [203, 204], "excess": 203, "bandwidth": 203, "phase": [204, 205], "lock": 204, "loop": 204, "design": 204, "proport": 204, "plu": 204, "integr": 204, "ppi": 204, "implement": 204, "pll": 204, "close": 204, "perform": 204, "compar": 204, "zeta": 204, "b_n": 204, "t": 204, "shift": 205, "kei": 205, "constel": 205, "bpsk": 205, "8": 205, "psk": 205, "16": 205, "error": 205, "curv": 205, "bit": 205, "rais": 206, "cosin": 206, "squar": 206, "root": 206, "gaussian": 206, "sdr": 207, "featur": 207, "v0": 208, "0": 208, "5": 208, "chang": 208, "contributor": 208, "4": 208, "3": 208, "2": 208, "1": 208, "version": 209, "alpha": 209, "releas": 209, "beta": 209}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx_last_updated_by_git": 1, "sphinx": 57}, "alltitles": {"Conversions": [[0, "conversions"]], "Decibels": [[0, "decibels"]], "From E_b/N_0": [[0, "from-e-b-n-0"]], "From E_s/N_0": [[0, "from-e-s-n-0"]], "From S/N": [[0, "from-s-n"]], "Data manipulation": [[1, "data-manipulation"]], "Digital signal processing": [[2, "digital-signal-processing"]], "Filtering": [[2, "filtering"]], "Multirate filtering": [[2, "multirate-filtering"]], "Resampling": [[2, "resampling"]], "Correlation": [[2, "correlation"]], "Signal manipulation": [[2, "signal-manipulation"]], "Link budgets": [[3, "link-budgets"]], "Channel capacity": [[3, "channel-capacity"]], "Path losses": [[3, "path-losses"]], "Antennas": [[3, "antennas"]], "Measurement": [[4, "measurement"]], "Energy": [[4, "energy"]], "Power": [[4, "power"]], "Voltage": [[4, "voltage"]], "Modulation": [[4, "modulation"], [5, "modulation"], [6, "modulation"]], "Classes": [[5, "classes"]], "Pulse shaping": [[5, "pulse-shaping"]], "Symbol mapping": [[5, "symbol-mapping"], [205, "symbol-mapping"]], "Symbol encoding": [[5, "symbol-encoding"]], "Plotting": [[6, "plotting"]], "Configuration": [[6, "configuration"], [198, "configuration"], [199, "configuration"]], "Time-domain": [[6, "time-domain"]], "Frequency-domain": [[6, "frequency-domain"]], "Spectral estimation": [[6, "spectral-estimation"]], "Filter analysis": [[6, "filter-analysis"]], "Probability": [[7, "probability"]], "Note": [[8, null], [158, null], [166, null], [170, null], [171, null], [171, null], [176, null]], "Constructors": [[8, "constructors"], [25, "constructors"], [31, "constructors"], [41, "constructors"], [48, "constructors"], [65, "constructors"], [72, "constructors"], [91, "constructors"], [101, "constructors"], [110, "constructors"], [118, "constructors"]], "Methods": [[8, "methods"], [25, "methods"], [31, "methods"], [41, "methods"], [48, "methods"], [65, "methods"], [72, "methods"], [91, "methods"], [101, "methods"], [110, "methods"], [118, "methods"]], "Properties": [[8, "properties"], [25, "properties"], [31, "properties"], [48, "properties"], [65, "properties"], [72, "properties"], [91, "properties"], [101, "properties"], [110, "properties"], [118, "properties"]], "See also": [[25, null], [41, null], [43, null], [56, null], [57, null], [58, null], [62, null], [80, null], [81, null], [83, null], [88, null], [110, null], [120, null], [126, null], [128, null], [129, null], [139, null], [160, null]], "Special methods": [[25, "special-methods"], [31, "special-methods"], [48, "special-methods"], [65, "special-methods"], [72, "special-methods"], [91, "special-methods"], [101, "special-methods"], [110, "special-methods"]], "String representation": [[31, "string-representation"], [48, "string-representation"], [72, "string-representation"], [91, "string-representation"]], "Streaming mode only": [[31, "streaming-mode-only"], [48, "streaming-mode-only"], [72, "streaming-mode-only"], [91, "streaming-mode-only"]], "Sequences": [[193, "sequences"]], "Simulation": [[194, "simulation"]], "Channel models": [[194, "channel-models"]], "Signal impairments": [[194, "signal-impairments"]], "Synchronization": [[195, "synchronization"]], "Documentation": [[196, "documentation"]], "Install": [[196, "install"], [198, "install"], [199, "install"]], "Build the docs": [[196, "build-the-docs"]], "Serve the docs": [[196, "serve-the-docs"]], "Installation": [[197, "installation"], [207, "installation"]], "Install from PyPI": [[197, "install-from-pypi"]], "Install from GitHub": [[197, "install-from-github"]], "Editable install from local folder": [[197, "editable-install-from-local-folder"]], "Install the dev dependencies": [[197, "install-the-dev-dependencies"]], "Linter": [[198, "linter"]], "Run from the command line": [[198, "run-from-the-command-line"], [199, "run-from-the-command-line"]], "Run from VS Code": [[198, "run-from-vs-code"], [199, "run-from-vs-code"]], "Unit Tests": [[199, "unit-tests"]], "Farrow arbitrary resampler": [[200, "farrow-arbitrary-resampler"]], "Construct an input signal, x[n] = x(n T_s)": [[200, "construct-an-input-signal-x-n-x-n-t-s"]], "Resample the input signal with rate r, y[n] = x(n \\frac{T_s}{r})": [[200, "resample-the-input-signal-with-rate-r-y-n-x-n-frac-t-s-r"]], "Upsample the signal by an integer rate": [[200, "upsample-the-signal-by-an-integer-rate"]], "Downsample the signal by an integer rate": [[200, "downsample-the-signal-by-an-integer-rate"]], "Upsample by an irrational rate": [[200, "upsample-by-an-irrational-rate"]], "Downsample by an irrational rate": [[200, "downsample-by-an-irrational-rate"]], "FIR filters": [[201, "fir-filters"]], "Create an FIR filter": [[201, "create-an-fir-filter"]], "Examine the impulse response, h[n]": [[201, "examine-the-impulse-response-h-n"], [202, "examine-the-impulse-response-h-n"]], "Examine the step response, s[n]": [[201, "examine-the-step-response-s-n"], [202, "examine-the-step-response-s-n"]], "Examine the frequency response, H(\\omega)": [[201, "examine-the-frequency-response-h-omega"], [202, "examine-the-frequency-response-h-omega"]], "Examine the group delay, \\tau_g(\\omega)": [[201, "examine-the-group-delay-tau-g-omega"], [202, "examine-the-group-delay-tau-g-omega"]], "Fully analyze a FIR filter": [[201, "fully-analyze-a-fir-filter"]], "IIR filters": [[202, "iir-filters"]], "Create an IIR filter": [[202, "create-an-iir-filter"]], "Examine the zeros and poles": [[202, "examine-the-zeros-and-poles"]], "Fully analyze an IIR filter": [[202, "fully-analyze-an-iir-filter"]], "Poles and digital filter stability": [[202, "poles-and-digital-filter-stability"]], "Peak-to-average power": [[203, "peak-to-average-power"]], "QPSK signal with various pulse shapes": [[203, "qpsk-signal-with-various-pulse-shapes"]], "Examine time domain": [[203, "examine-time-domain"]], "Examine frequency domain": [[203, "examine-frequency-domain"]], "Plot across excess bandwidth": [[203, "plot-across-excess-bandwidth"]], "Phase-locked loops": [[204, "phase-locked-loops"]], "Design a proportional-plus-integrator (PPI) loop filter": [[204, "design-a-proportional-plus-integrator-ppi-loop-filter"]], "Implement a PLL in the phase domain": [[204, "implement-a-pll-in-the-phase-domain"]], "Implement a PLL in the time domain": [[204, "implement-a-pll-in-the-time-domain"]], "Analyze PLL closed-loop performance": [[204, "analyze-pll-closed-loop-performance"]], "Compare step and frequency response across \\zeta": [[204, "compare-step-and-frequency-response-across-zeta"]], "Compare step and frequency response across B_n T": [[204, "compare-step-and-frequency-response-across-b-n-t"]], "Compare lock time across B_n T": [[204, "compare-lock-time-across-b-n-t"]], "Phase-shift keying": [[205, "phase-shift-keying"]], "Constellations": [[205, "constellations"]], "BPSK": [[205, "bpsk"]], "QPSK": [[205, "qpsk"]], "8-PSK": [[205, "id1"]], "16-PSK": [[205, "id2"]], "Error rate curves": [[205, "error-rate-curves"]], "Bit error rate curves": [[205, "bit-error-rate-curves"]], "Symbol error rate curves": [[205, "symbol-error-rate-curves"]], "Pulse shapes": [[206, "pulse-shapes"]], "Raised cosine": [[206, "raised-cosine"]], "Square-root raised cosine": [[206, "square-root-raised-cosine"]], "Gaussian": [[206, "gaussian"]], "sdr": [[207, "sdr"]], "Features": [[207, "features"]], "v0.0": [[208, "v0-0"]], "v0.0.5": [[208, "v0-0-5"]], "Changes": [[208, "changes"], [208, "id1"], [208, "id3"], [208, "id5"], [208, "id7"]], "Contributors": [[208, "contributors"], [208, "id2"], [208, "id4"], [208, "id6"], [208, "id8"]], "v0.0.4": [[208, "v0-0-4"]], "v0.0.3": [[208, "v0-0-3"]], "v0.0.2": [[208, "v0-0-2"]], "v0.0.1": [[208, "v0-0-1"]], "Versioning": [[209, "versioning"]], "Alpha releases": [[209, "alpha-releases"]], "Beta releases": [[209, "beta-releases"]]}, "indexentries": {"module": [[2, "module-sdr"]], "sdr": [[2, "module-sdr"]]}, "docurls": ["api/conversions/", "api/data-manipulation/", "api/dsp/", "api/link-budgets/", "api/measurement/", "api/modulation/", "api/plotting/", "api/probability/", "api/sdr.ClosedLoopPLL/", "api/sdr.ClosedLoopPLL.Bn/", "api/sdr.ClosedLoopPLL.BnT/", "api/sdr.ClosedLoopPLL.K0/", "api/sdr.ClosedLoopPLL.K1/", "api/sdr.ClosedLoopPLL.K2/", "api/sdr.ClosedLoopPLL.Kp/", "api/sdr.ClosedLoopPLL.__init__/", "api/sdr.ClosedLoopPLL.frequency_lock_time/", "api/sdr.ClosedLoopPLL.iir/", "api/sdr.ClosedLoopPLL.lock_time/", "api/sdr.ClosedLoopPLL.omega_3dB/", "api/sdr.ClosedLoopPLL.omega_n/", "api/sdr.ClosedLoopPLL.phase_error_variance/", "api/sdr.ClosedLoopPLL.phase_lock_time/", "api/sdr.ClosedLoopPLL.sample_rate/", "api/sdr.ClosedLoopPLL.zeta/", "api/sdr.DDS/", "api/sdr.DDS.__call__/", "api/sdr.DDS.__init__/", "api/sdr.DDS.nco/", "api/sdr.DDS.reset/", "api/sdr.DDS.step/", "api/sdr.Decimator/", "api/sdr.Decimator.__call__/", "api/sdr.Decimator.__init__/", "api/sdr.Decimator.__repr__/", "api/sdr.Decimator.__str__/", "api/sdr.Decimator.method/", "api/sdr.Decimator.polyphase_taps/", "api/sdr.Decimator.rate/", "api/sdr.Decimator.reset/", "api/sdr.Decimator.taps/", "api/sdr.ErrorRate/", "api/sdr.ErrorRate.__init__/", "api/sdr.ErrorRate.add/", "api/sdr.ErrorRate.counts/", "api/sdr.ErrorRate.error_rate/", "api/sdr.ErrorRate.error_rates/", "api/sdr.ErrorRate.errors/", "api/sdr.FIR/", "api/sdr.FIR.__call__/", "api/sdr.FIR.__init__/", "api/sdr.FIR.__len__/", "api/sdr.FIR.__repr__/", "api/sdr.FIR.__str__/", "api/sdr.FIR.delay/", "api/sdr.FIR.flush/", "api/sdr.FIR.frequency_response/", "api/sdr.FIR.frequency_response_log/", "api/sdr.FIR.impulse_response/", "api/sdr.FIR.order/", "api/sdr.FIR.reset/", "api/sdr.FIR.state/", "api/sdr.FIR.step_response/", "api/sdr.FIR.streaming/", "api/sdr.FIR.taps/", "api/sdr.FarrowResampler/", "api/sdr.FarrowResampler.__call__/", "api/sdr.FarrowResampler.__init__/", "api/sdr.FarrowResampler.order/", "api/sdr.FarrowResampler.reset/", "api/sdr.FarrowResampler.streaming/", "api/sdr.FarrowResampler.taps/", "api/sdr.IIR/", "api/sdr.IIR.ZerosPoles/", "api/sdr.IIR.__call__/", "api/sdr.IIR.__init__/", "api/sdr.IIR.__repr__/", "api/sdr.IIR.__str__/", "api/sdr.IIR.a_taps/", "api/sdr.IIR.b_taps/", "api/sdr.IIR.frequency_response/", "api/sdr.IIR.frequency_response_log/", "api/sdr.IIR.gain/", "api/sdr.IIR.impulse_response/", "api/sdr.IIR.order/", "api/sdr.IIR.poles/", "api/sdr.IIR.reset/", "api/sdr.IIR.state/", "api/sdr.IIR.step_response/", "api/sdr.IIR.streaming/", "api/sdr.IIR.zeros/", "api/sdr.Interpolator/", "api/sdr.Interpolator.__call__/", "api/sdr.Interpolator.__init__/", "api/sdr.Interpolator.__repr__/", "api/sdr.Interpolator.__str__/", "api/sdr.Interpolator.method/", "api/sdr.Interpolator.polyphase_taps/", "api/sdr.Interpolator.rate/", "api/sdr.Interpolator.reset/", "api/sdr.Interpolator.taps/", "api/sdr.LoopFilter/", "api/sdr.LoopFilter.K1/", "api/sdr.LoopFilter.K2/", "api/sdr.LoopFilter.__call__/", "api/sdr.LoopFilter.__init__/", "api/sdr.LoopFilter.damping_factor/", "api/sdr.LoopFilter.iir/", "api/sdr.LoopFilter.noise_bandwidth/", "api/sdr.LoopFilter.reset/", "api/sdr.NCO/", "api/sdr.NCO.K0/", "api/sdr.NCO.__call__/", "api/sdr.NCO.__init__/", "api/sdr.NCO.increment/", "api/sdr.NCO.offset/", "api/sdr.NCO.reset/", "api/sdr.NCO.step/", "api/sdr.PSK/", "api/sdr.PSK.__init__/", "api/sdr.PSK.ber/", "api/sdr.PSK.bps/", "api/sdr.PSK.demodulate/", "api/sdr.PSK.modulate/", "api/sdr.PSK.order/", "api/sdr.PSK.phase_offset/", "api/sdr.PSK.ser/", "api/sdr.PSK.symbol_map/", "api/sdr.Q/", "api/sdr.Qinv/", "api/sdr.average_power/", "api/sdr.awgn/", "api/sdr.awgn_capacity/", "api/sdr.barker/", "api/sdr.bec/", "api/sdr.bec_capacity/", "api/sdr.binary_code/", "api/sdr.bsc/", "api/sdr.bsc_capacity/", "api/sdr.crest_factor/", "api/sdr.db/", "api/sdr.diff_decode/", "api/sdr.diff_encode/", "api/sdr.dmc/", "api/sdr.ebn0_to_esn0/", "api/sdr.ebn0_to_snr/", "api/sdr.energy/", "api/sdr.esn0_to_ebn0/", "api/sdr.esn0_to_snr/", "api/sdr.evm/", "api/sdr.frequency_offset/", "api/sdr.fspl/", "api/sdr.gaussian/", "api/sdr.gray_code/", "api/sdr.hexdump/", "api/sdr.iq_imbalance/", "api/sdr.linear/", "api/sdr.mix/", "api/sdr.multirate_taps/", "api/sdr.pack/", "api/sdr.papr/", "api/sdr.parabolic_antenna/", "api/sdr.peak_power/", "api/sdr.peak_voltage/", "api/sdr.plot.ber/", "api/sdr.plot.constellation/", "api/sdr.plot.eye/", "api/sdr.plot.filter/", "api/sdr.plot.group_delay/", "api/sdr.plot.impulse_response/", "api/sdr.plot.magnitude_response/", "api/sdr.plot.periodogram/", "api/sdr.plot.phase_delay/", "api/sdr.plot.phase_response/", "api/sdr.plot.raster/", "api/sdr.plot.ser/", "api/sdr.plot.spectrogram/", "api/sdr.plot.step_response/", "api/sdr.plot.symbol_map/", "api/sdr.plot.time_domain/", "api/sdr.plot.use_style/", "api/sdr.plot.zeros_poles/", "api/sdr.polyphase_matrix/", "api/sdr.raised_cosine/", "api/sdr.rms_voltage/", "api/sdr.root_raised_cosine/", "api/sdr.sample_rate_offset/", "api/sdr.snr_to_ebn0/", "api/sdr.snr_to_esn0/", "api/sdr.to_complex_bb/", "api/sdr.to_real_pb/", "api/sdr.unpack/", "api/sdr.zadoff_chu/", "api/sequences/", "api/simulation/", "api/synchronization/", "development/documentation/", "development/installation/", "development/linter/", "development/unit-tests/", "examples/farrow-resampler/", "examples/fir-filters/", "examples/iir-filters/", "examples/peak-to-average-power/", "examples/phase-locked-loop/", "examples/psk/", "examples/pulse-shapes/", "", "release-notes/v0.0/", "release-notes/versioning/"]})
\ No newline at end of file
+Search.setIndex({"titles": ["Conversions", "Data manipulation", "Digital signal processing", "Link budgets", "Measurement", "Modulation", "Plotting", "Probability", "sdr.ClosedLoopPLL", "sdr.ClosedLoopPLL.Bn", "sdr.ClosedLoopPLL.BnT", "sdr.ClosedLoopPLL.K0", "sdr.ClosedLoopPLL.K1", "sdr.ClosedLoopPLL.K2", "sdr.ClosedLoopPLL.Kp", "sdr.ClosedLoopPLL.__init__", "sdr.ClosedLoopPLL.frequency_lock_time", "sdr.ClosedLoopPLL.iir", "sdr.ClosedLoopPLL.lock_time", "sdr.ClosedLoopPLL.omega_3dB", "sdr.ClosedLoopPLL.omega_n", "sdr.ClosedLoopPLL.phase_error_variance", "sdr.ClosedLoopPLL.phase_lock_time", "sdr.ClosedLoopPLL.sample_rate", "sdr.ClosedLoopPLL.zeta", "sdr.DDS", "sdr.DDS.__call__", "sdr.DDS.__init__", "sdr.DDS.nco", "sdr.DDS.reset", "sdr.DDS.step", "sdr.Decimator", "sdr.Decimator.__call__", "sdr.Decimator.__init__", "sdr.Decimator.__repr__", "sdr.Decimator.__str__", "sdr.Decimator.method", "sdr.Decimator.polyphase_taps", "sdr.Decimator.rate", "sdr.Decimator.reset", "sdr.Decimator.taps", "sdr.ErrorRate", "sdr.ErrorRate.__init__", "sdr.ErrorRate.add", "sdr.ErrorRate.counts", "sdr.ErrorRate.error_rate", "sdr.ErrorRate.error_rates", "sdr.ErrorRate.errors", "sdr.FIR", "sdr.FIR.__call__", "sdr.FIR.__init__", "sdr.FIR.__len__", "sdr.FIR.__repr__", "sdr.FIR.__str__", "sdr.FIR.delay", "sdr.FIR.flush", "sdr.FIR.frequency_response", "sdr.FIR.frequency_response_log", "sdr.FIR.impulse_response", "sdr.FIR.order", "sdr.FIR.reset", "sdr.FIR.state", "sdr.FIR.step_response", "sdr.FIR.streaming", "sdr.FIR.taps", "sdr.FarrowResampler", "sdr.FarrowResampler.__call__", "sdr.FarrowResampler.__init__", "sdr.FarrowResampler.order", "sdr.FarrowResampler.reset", "sdr.FarrowResampler.streaming", "sdr.FarrowResampler.taps", "sdr.IIR", "sdr.IIR.ZerosPoles", "sdr.IIR.__call__", "sdr.IIR.__init__", "sdr.IIR.__repr__", "sdr.IIR.__str__", "sdr.IIR.a_taps", "sdr.IIR.b_taps", "sdr.IIR.frequency_response", "sdr.IIR.frequency_response_log", "sdr.IIR.gain", "sdr.IIR.impulse_response", "sdr.IIR.order", "sdr.IIR.poles", "sdr.IIR.reset", "sdr.IIR.state", "sdr.IIR.step_response", "sdr.IIR.streaming", "sdr.IIR.zeros", "sdr.Interpolator", "sdr.Interpolator.__call__", "sdr.Interpolator.__init__", "sdr.Interpolator.__repr__", "sdr.Interpolator.__str__", "sdr.Interpolator.method", "sdr.Interpolator.polyphase_taps", "sdr.Interpolator.rate", "sdr.Interpolator.reset", "sdr.Interpolator.taps", "sdr.LoopFilter", "sdr.LoopFilter.K1", "sdr.LoopFilter.K2", "sdr.LoopFilter.__call__", "sdr.LoopFilter.__init__", "sdr.LoopFilter.damping_factor", "sdr.LoopFilter.iir", "sdr.LoopFilter.noise_bandwidth", "sdr.LoopFilter.reset", "sdr.NCO", "sdr.NCO.K0", "sdr.NCO.__call__", "sdr.NCO.__init__", "sdr.NCO.increment", "sdr.NCO.offset", "sdr.NCO.reset", "sdr.NCO.step", "sdr.PSK", "sdr.PSK.__init__", "sdr.PSK.ber", "sdr.PSK.bps", "sdr.PSK.demodulate", "sdr.PSK.modulate", "sdr.PSK.order", "sdr.PSK.phase_offset", "sdr.PSK.ser", "sdr.PSK.symbol_map", "sdr.Q", "sdr.Qinv", "sdr.average_power", "sdr.awgn", "sdr.awgn_capacity", "sdr.barker", "sdr.bec", "sdr.bec_capacity", "sdr.binary_code", "sdr.bsc", "sdr.bsc_capacity", "sdr.crest_factor", "sdr.db", "sdr.diff_decode", "sdr.diff_encode", "sdr.dmc", "sdr.ebn0_to_esn0", "sdr.ebn0_to_snr", "sdr.energy", "sdr.esn0_to_ebn0", "sdr.esn0_to_snr", "sdr.evm", "sdr.frequency_offset", "sdr.fspl", "sdr.gaussian", "sdr.gray_code", "sdr.hexdump", "sdr.iq_imbalance", "sdr.linear", "sdr.mix", "sdr.multirate_taps", "sdr.pack", "sdr.papr", "sdr.parabolic_antenna", "sdr.peak_power", "sdr.peak_voltage", "sdr.plot.ber", "sdr.plot.constellation", "sdr.plot.eye", "sdr.plot.filter", "sdr.plot.group_delay", "sdr.plot.impulse_response", "sdr.plot.magnitude_response", "sdr.plot.periodogram", "sdr.plot.phase_delay", "sdr.plot.phase_response", "sdr.plot.raster", "sdr.plot.ser", "sdr.plot.spectrogram", "sdr.plot.step_response", "sdr.plot.symbol_map", "sdr.plot.time_domain", "sdr.plot.use_style", "sdr.plot.zeros_poles", "sdr.polyphase_matrix", "sdr.raised_cosine", "sdr.rms_voltage", "sdr.root_raised_cosine", "sdr.sample_rate_offset", "sdr.snr_to_ebn0", "sdr.snr_to_esn0", "sdr.to_complex_bb", "sdr.to_real_pb", "sdr.unpack", "sdr.zadoff_chu", "Sequences", "Simulation", "Synchronization", "Documentation", "Installation", "Linter", "Unit Tests", "Farrow arbitrary resampler", "FIR filters", "IIR filters", "Peak-to-average power", "Phase-locked loops", "Phase-shift keying", "Pulse shapes", "sdr", "v0.0", "Versioning"], "terms": {"sdr": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 208, 209], "db": [0, 3, 8, 19, 21, 41, 43, 44, 45, 47, 120, 126, 131, 132, 140, 144, 145, 147, 148, 149, 151, 152, 155, 156, 158, 160, 161, 164, 165, 175, 187, 188, 203, 205, 206, 208], "x": [0, 1, 2, 4, 5, 6, 7, 8, 25, 26, 31, 32, 41, 43, 48, 49, 65, 66, 72, 74, 91, 92, 101, 104, 110, 112, 118, 122, 123, 128, 129, 130, 131, 134, 137, 139, 140, 141, 142, 143, 146, 149, 150, 155, 156, 157, 159, 160, 162, 163, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 184, 186, 191, 194, 197, 203, 204, 205, 209], "arraylik": [0, 1, 2, 3, 4, 5, 6, 7, 25, 26, 31, 32, 33, 41, 43, 48, 49, 50, 65, 66, 69, 72, 73, 74, 75, 91, 92, 93, 101, 104, 110, 112, 118, 119, 120, 122, 123, 126, 128, 129, 130, 131, 132, 134, 135, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 154, 155, 156, 157, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 184, 186, 187, 188, 189, 190, 191, 194], "ndarrai": [0, 1, 2, 3, 5, 7, 25, 26, 30, 31, 32, 37, 40, 41, 46, 48, 49, 55, 56, 57, 58, 61, 62, 64, 65, 66, 71, 72, 74, 78, 79, 80, 81, 83, 85, 87, 88, 90, 91, 92, 97, 100, 101, 104, 110, 112, 117, 118, 120, 122, 123, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 147, 148, 150, 151, 152, 153, 155, 156, 157, 158, 159, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194], "convert": [0, 2, 140, 144, 145, 147, 148, 154, 156, 182, 187, 188, 189, 190], "linear": [0, 91, 93, 96, 118, 131, 140, 156, 171, 176, 207, 208], "unit": [0, 25, 31, 48, 62, 72, 88, 91, 101, 110, 113, 114, 115, 119, 130, 131, 132, 140, 141, 142, 146, 156, 162, 163, 177, 179, 183, 184, 185, 197, 201, 202, 204, 207], "ebn0_to_esn0": [0, 126, 144, 205, 208], "ebn0": [0, 6, 118, 120, 132, 144, 145, 164, 205], "bp": [0, 118, 121, 144, 145, 147, 187, 205], "int": [0, 1, 2, 5, 6, 25, 30, 31, 33, 38, 41, 43, 44, 47, 48, 51, 54, 56, 57, 58, 59, 62, 65, 68, 72, 80, 81, 83, 84, 88, 91, 93, 98, 110, 117, 118, 119, 121, 124, 131, 133, 136, 141, 142, 144, 145, 147, 148, 152, 153, 154, 158, 159, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 182, 183, 185, 187, 188, 191, 192, 193, 205], "ebn0_to_snr": [0, 145, 208], "esn0_to_ebn0": [0, 120, 147, 208], "esn0": [0, 6, 118, 126, 147, 148, 175, 205], "esn0_to_snr": [0, 148, 205, 208], "sp": [0, 5, 6, 145, 148, 152, 166, 183, 185, 187, 188, 189, 190, 203, 205, 206], "1": [0, 2, 6, 7, 8, 15, 18, 22, 24, 25, 27, 31, 33, 34, 35, 37, 40, 41, 48, 51, 52, 53, 54, 56, 57, 72, 73, 76, 77, 80, 81, 91, 92, 93, 94, 95, 97, 100, 101, 105, 106, 110, 113, 118, 119, 120, 122, 123, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 200, 201, 202, 203, 204, 205, 206, 209], "snr_to_ebn0": [0, 120, 132, 187, 208], "snr": [0, 3, 41, 43, 44, 45, 46, 47, 131, 132, 187, 188, 189, 190, 194, 205, 208], "snr_to_esn0": [0, 126, 188, 208], "pack": [1, 41, 43, 154, 159, 207, 208], "bpe": [1, 159, 191], "binari": [1, 3, 5, 119, 127, 133, 134, 135, 136, 137, 138, 143, 159, 178, 191, 194, 205, 207, 208], "arrai": [1, 37, 40, 41, 93, 97, 100, 119, 127, 133, 134, 136, 137, 141, 142, 143, 153, 159, 179, 182, 191, 202], "an": [1, 2, 3, 31, 48, 58, 72, 73, 75, 83, 91, 92, 119, 120, 126, 132, 159, 164, 169, 175, 191, 197, 198, 207], "multipl": [1, 159, 191, 205], "bit": [1, 4, 6, 41, 43, 46, 118, 119, 120, 121, 127, 132, 134, 135, 137, 138, 144, 145, 147, 154, 159, 164, 187, 191, 207, 208], "per": [1, 26, 32, 49, 92, 112, 118, 119, 121, 131, 132, 144, 145, 147, 148, 150, 152, 154, 159, 165, 166, 183, 185, 186, 187, 188, 191, 203, 206], "element": [1, 154, 159, 191], "unpack": [1, 41, 43, 154, 191, 205, 207, 208], "hexdump": [1, 41, 154, 207, 208], "byte": [1, 154], "width": [1, 154], "16": [1, 120, 126, 127, 144, 145, 147, 154, 164, 175, 182, 183, 185, 187, 188, 203, 208], "str": [1, 31, 34, 35, 48, 52, 53, 72, 76, 77, 91, 94, 95, 154, 166, 171, 174, 176], "return": [1, 5, 8, 16, 18, 21, 22, 26, 30, 31, 32, 34, 35, 41, 43, 44, 45, 46, 47, 48, 49, 51, 52, 53, 55, 56, 57, 58, 62, 66, 72, 74, 76, 77, 80, 81, 83, 88, 91, 92, 94, 95, 104, 112, 117, 120, 122, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 201, 202, 203, 205], "specifi": [1, 41, 44, 45, 47, 131, 132, 143, 154, 201, 202], "class": [2, 4, 8, 25, 31, 41, 43, 44, 45, 46, 47, 48, 65, 72, 91, 101, 110, 118, 195, 201, 202, 205, 207, 208], "fir": [2, 31, 32, 33, 34, 35, 37, 39, 40, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 91, 92, 93, 94, 95, 97, 99, 100, 158, 166, 167, 168, 169, 170, 172, 173, 177, 181, 182, 203, 207, 208], "implement": [2, 5, 25, 31, 48, 65, 72, 91, 101, 107, 110, 118, 195, 200], "finit": [2, 31, 48, 91, 207, 208], "impuls": [2, 6, 31, 48, 58, 72, 83, 91, 152, 167, 169, 179, 206, 207, 208], "respons": [2, 6, 31, 48, 56, 57, 58, 62, 72, 80, 81, 83, 88, 91, 152, 167, 168, 169, 170, 173, 177, 206, 207, 208], "iir": [2, 6, 8, 17, 57, 58, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 101, 107, 167, 168, 169, 170, 172, 173, 177, 181, 201, 204, 207, 208], "infinit": [2, 72, 207, 208], "interpol": [2, 31, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 158, 166, 182, 203, 205, 207, 208], "polyphas": [2, 31, 32, 33, 37, 40, 91, 92, 93, 97, 100, 158, 182, 207, 208], "decim": [2, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 118, 119, 122, 123, 127, 158, 182, 205, 207, 208], "multirate_tap": [2, 33, 93, 158, 208], "p": [2, 3, 7, 128, 129, 134, 135, 137, 138, 143, 158, 182, 194], "q": [2, 7, 128, 129, 158, 182, 192, 208], "comput": [2, 7, 31, 118, 120, 126, 128, 129, 131, 151, 158, 201, 202, 204, 206], "achiev": [2, 158, 182, 205, 206], "ration": [2, 158, 182], "polyphase_matrix": [2, 182, 208], "tap": [2, 31, 33, 37, 40, 48, 53, 64, 65, 71, 72, 78, 79, 91, 93, 97, 100, 182, 201, 202], "h_i": [2, 31, 33, 37, 40, 48, 50, 64, 91, 93, 97, 100, 182, 201], "matrix": [2, 143, 182, 194], "h_": [2, 8, 31, 37, 40, 91, 97, 100, 182, 204], "i": [2, 8, 15, 24, 31, 32, 33, 37, 40, 41, 46, 48, 49, 50, 58, 62, 63, 64, 65, 70, 72, 75, 79, 83, 88, 89, 91, 92, 93, 97, 100, 101, 105, 106, 108, 118, 119, 128, 129, 131, 132, 135, 138, 140, 143, 144, 145, 147, 148, 150, 151, 152, 154, 155, 156, 159, 161, 165, 166, 167, 169, 170, 171, 174, 176, 177, 179, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 209], "j": [2, 8, 25, 31, 37, 40, 72, 75, 78, 91, 97, 100, 118, 131, 143, 155, 157, 182, 192, 201, 202, 204], "farrowresampl": [2, 65, 66, 67, 68, 69, 70, 71, 200, 208], "cubic": [2, 65], "farrow": [2, 65, 66, 67, 68, 69, 70, 71, 207, 208], "arbitrari": [2, 65, 66, 67, 68, 69, 70, 71, 207, 208], "mix": [2, 157, 207, 208], "freq": [2, 3, 150, 157, 161, 194, 200, 204], "float": [2, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22, 23, 24, 25, 27, 41, 43, 44, 45, 47, 56, 57, 65, 66, 72, 73, 80, 81, 82, 101, 102, 103, 105, 106, 108, 110, 111, 113, 114, 115, 118, 119, 125, 130, 131, 132, 134, 137, 139, 146, 149, 150, 152, 155, 157, 158, 160, 161, 162, 163, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 183, 184, 185, 186, 194], "0": [2, 5, 6, 7, 15, 25, 27, 31, 32, 37, 40, 41, 48, 49, 50, 52, 53, 56, 57, 64, 72, 73, 75, 76, 77, 78, 79, 80, 81, 91, 92, 93, 97, 100, 105, 110, 113, 118, 119, 122, 123, 125, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 145, 146, 148, 149, 150, 152, 153, 155, 156, 157, 159, 161, 165, 166, 167, 168, 169, 170, 171, 172, 173, 176, 177, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 196, 197, 200, 201, 202, 203, 204, 205, 206, 209], "time": [2, 4, 8, 15, 16, 18, 19, 20, 21, 22, 48, 72, 101, 105, 118, 130, 131, 139, 143, 146, 148, 150, 152, 155, 157, 160, 162, 163, 166, 167, 171, 174, 176, 179, 183, 184, 185, 186, 188, 189, 190, 194, 200, 201, 202, 206, 207, 208], "domain": [2, 4, 130, 131, 139, 146, 150, 155, 157, 160, 162, 163, 167, 171, 174, 176, 179, 184, 186, 189, 190, 194, 207, 208], "n": [2, 4, 5, 6, 7, 8, 25, 26, 30, 31, 32, 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 72, 74, 75, 78, 80, 81, 83, 84, 88, 91, 92, 101, 104, 110, 112, 117, 128, 129, 130, 131, 132, 133, 136, 139, 143, 144, 145, 146, 147, 148, 149, 150, 153, 155, 157, 158, 160, 162, 163, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 179, 184, 186, 187, 188, 189, 190, 192, 193, 194, 204, 206, 207], "complex": [2, 4, 6, 25, 26, 30, 118, 119, 122, 123, 127, 131, 132, 149, 155, 157, 165, 166, 174, 178, 179, 189, 190, 194, 200, 201, 202, 205, 207, 208], "exponenti": [2, 25, 26, 30, 157, 189, 190, 200, 201, 202], "to_complex_bb": [2, 189, 208], "x_r": [2, 189, 190], "real": [2, 128, 129, 131, 166, 174, 179, 189, 190, 200, 201, 202, 204, 207, 208], "passband": [2, 152, 189, 190, 203, 208], "center": [2, 179, 189, 190, 208], "f_": [2, 8, 15, 23, 32, 56, 57, 80, 81, 92, 145, 148, 150, 152, 157, 166, 167, 168, 170, 171, 172, 173, 174, 176, 179, 186, 187, 188, 189, 190, 200, 201, 202, 204, 206], "": [2, 6, 8, 16, 18, 19, 20, 22, 23, 31, 43, 44, 45, 46, 47, 48, 56, 57, 62, 72, 80, 81, 88, 91, 118, 122, 123, 131, 132, 145, 148, 149, 150, 155, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 177, 179, 180, 186, 187, 188, 189, 190, 199, 200, 203, 205, 207], "r": [2, 31, 32, 33, 37, 38, 40, 65, 66, 91, 92, 93, 97, 98, 100, 132, 144, 145, 147, 149, 152, 157, 183, 185, 187, 189, 190, 196, 197, 198, 199, 202, 203, 204, 206], "4": [2, 16, 18, 31, 37, 40, 41, 57, 76, 77, 81, 91, 92, 97, 100, 120, 125, 126, 127, 131, 132, 133, 135, 136, 138, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 196, 197, 200, 202, 203, 205], "sampl": [2, 8, 15, 23, 25, 26, 27, 30, 31, 32, 48, 49, 54, 56, 57, 58, 62, 65, 69, 80, 81, 83, 88, 91, 92, 93, 101, 105, 108, 110, 112, 113, 114, 117, 131, 145, 148, 150, 152, 157, 166, 167, 168, 169, 170, 171, 172, 173, 174, 176, 177, 179, 183, 185, 186, 187, 188, 189, 190, 194, 200, 203, 204, 206, 207], "rate": [2, 4, 6, 8, 15, 23, 31, 32, 33, 35, 38, 41, 42, 43, 45, 46, 56, 57, 65, 66, 80, 81, 91, 92, 93, 95, 98, 118, 120, 126, 144, 145, 147, 150, 157, 158, 164, 166, 167, 168, 170, 171, 172, 173, 174, 175, 176, 179, 182, 186, 187, 189, 190, 194, 207, 208], "baseband": [2, 6, 8, 157, 166, 189, 190, 203, 204, 208], "x_c": [2, 189, 190], "c": [2, 8, 16, 18, 19, 20, 21, 22, 43, 44, 45, 46, 47, 101, 118, 127, 132, 135, 138, 151, 161, 189, 190, 204], "2": [2, 5, 6, 8, 16, 18, 21, 31, 34, 35, 37, 40, 41, 48, 52, 53, 54, 56, 57, 76, 77, 80, 81, 91, 92, 94, 95, 97, 100, 118, 119, 120, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 162, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 197, 199, 200, 201, 202, 203, 204, 205, 206], "to_real_pb": [2, 190, 203, 208], "2f_": [2, 190], "bsc_capac": [3, 138, 208], "calcul": [3, 4, 132, 135, 138, 149, 151, 161], "symmetr": [3, 137, 138, 143, 189, 190, 194, 207], "bsc": [3, 137, 138, 143, 194, 207, 208], "bec_capac": [3, 135, 208], "erasur": [3, 134, 135, 143, 194, 207], "bec": [3, 134, 135, 143, 194, 207, 208], "awgn_capac": [3, 132, 208], "addit": [3, 131, 132, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 194, 207], "white": [3, 131, 132, 194, 207], "gaussian": [3, 5, 131, 132, 152, 194, 207, 208], "nois": [3, 8, 9, 10, 15, 21, 41, 43, 44, 45, 46, 47, 101, 105, 108, 120, 126, 131, 132, 144, 145, 147, 148, 164, 175, 187, 188, 194, 204, 207], "awgn": [3, 120, 126, 131, 132, 149, 164, 165, 175, 189, 190, 194, 205, 207, 208], "fspl": [3, 151], "d": [3, 31, 48, 54, 91, 151, 161, 196, 197, 207], "f": [3, 16, 18, 31, 56, 57, 80, 81, 91, 131, 150, 151, 152, 157, 161, 186, 192, 200, 201, 202, 203, 204, 205, 206], "free": [3, 151, 207], "space": [3, 57, 81, 151, 207], "parabolic_antenna": [3, 161, 208], "tupl": [3, 31, 41, 43, 46, 48, 56, 57, 72, 80, 81, 91, 161, 165, 167, 168, 169, 170, 172, 173, 177, 178, 181], "gain": [3, 8, 11, 12, 13, 14, 15, 25, 27, 72, 73, 82, 101, 102, 103, 105, 110, 111, 113, 152, 161, 204, 207], "g": [3, 46, 161, 197], "beamwidth": [3, 161], "theta": [3, 27, 110, 113, 115, 161], "parabol": [3, 161], "reflector": [3, 161], "signal": [4, 6, 8, 16, 18, 21, 22, 25, 26, 31, 32, 41, 43, 44, 45, 46, 47, 48, 49, 55, 65, 66, 72, 74, 91, 92, 101, 104, 110, 112, 117, 130, 131, 132, 139, 140, 144, 145, 146, 147, 148, 150, 151, 152, 155, 156, 157, 158, 160, 161, 162, 163, 166, 171, 174, 176, 179, 182, 184, 186, 187, 188, 189, 190, 201, 202, 204, 206, 207, 208], "peak_pow": [4, 160, 162, 208], "peak": [4, 139, 149, 160, 162, 163], "average_pow": [4, 130, 160, 208], "averag": [4, 41, 130, 131, 132, 149, 160, 171], "papr": [4, 160, 203, 208], "ratio": [4, 21, 41, 43, 44, 45, 46, 47, 120, 126, 131, 132, 144, 145, 147, 148, 160, 164, 175, 187, 188], "peak_voltag": [4, 139, 163, 208], "rms_voltag": [4, 139, 184, 208], "root": [4, 5, 149, 166, 179, 184, 185, 192, 193, 201, 207], "mean": [4, 149, 171, 176, 184, 206], "squar": [4, 5, 149, 151, 161, 179, 184, 185, 201], "rm": [4, 139, 149, 184], "crest_factor": [4, 139, 160, 208], "crest": [4, 139], "factor": [4, 8, 15, 24, 101, 105, 106, 139, 204], "errorr": [4, 41, 42, 43, 44, 45, 46, 47, 205, 208], "A": [4, 8, 16, 18, 19, 20, 21, 22, 24, 32, 41, 48, 49, 92, 101, 136, 153, 154, 155, 161, 183, 185, 195, 204], "error": [4, 6, 8, 14, 15, 21, 41, 42, 43, 45, 46, 47, 101, 105, 118, 120, 126, 138, 149, 164, 175, 204, 207, 208], "ber": [4, 6, 41, 118, 120, 164, 205, 207, 208], "symbol": [4, 6, 41, 43, 46, 91, 118, 119, 120, 121, 122, 123, 126, 127, 131, 144, 145, 147, 148, 149, 150, 152, 165, 166, 175, 178, 183, 185, 187, 188, 203, 206, 207, 208], "ser": [4, 6, 41, 118, 126, 175, 205, 207, 208], "evm": [4, 149, 207, 208], "x_hat": [4, 6, 41, 43, 118, 122, 149, 165, 205], "ref": [4, 149, 152, 158], "vector": [4, 41, 69, 149, 171, 176, 207, 208], "magnitud": [4, 6, 133, 149, 167, 170, 192, 207, 208], "hat": [4, 6, 43, 118, 122, 149, 165, 178], "k": [4, 5, 6, 43, 118, 119, 121, 122, 123, 124, 141, 142, 144, 145, 147, 149, 165, 178, 187, 203, 206], "psk": [5, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 131, 149, 150, 155, 164, 165, 166, 175, 178, 186, 203, 207, 208], "phase": [5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 125, 126, 127, 150, 155, 157, 172, 173, 194, 207], "shift": [5, 118, 120, 125, 126, 127, 192, 193, 201, 202, 207], "kei": [5, 118, 120, 125, 126, 127, 207], "demodul": [5, 118, 122, 205], "raised_cosin": [5, 166, 183, 206, 208], "alpha": [5, 152, 180, 183, 185, 203, 206], "span": [5, 6, 152, 166, 183, 185, 203, 206], "rais": [5, 166, 179, 183, 185, 201, 207], "cosin": [5, 166, 179, 183, 185, 201, 207], "rc": [5, 183], "root_raised_cosin": [5, 52, 53, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 185, 201, 203, 205, 206, 208], "srrc": [5, 166, 179, 185, 203], "time_bandwidth": [5, 152], "binary_cod": [5, 136, 208], "gener": [5, 131, 136, 153, 196, 205], "code": [5, 31, 34, 48, 52, 72, 76, 91, 94, 119, 127, 133, 136, 144, 145, 147, 153, 165, 178, 187, 193, 197, 205, 208], "length": [5, 6, 31, 32, 48, 49, 51, 58, 62, 74, 91, 92, 93, 119, 133, 136, 152, 153, 158, 167, 169, 171, 174, 176, 177, 183, 185, 189, 192, 193, 198, 200, 203, 206], "gray_cod": [5, 153, 208], "grai": [5, 119, 127, 153, 165, 178, 205, 207], "diff_encod": [5, 120, 126, 141, 142, 208], "y_prev": [5, 141, 142], "differenti": [5, 120, 126, 141, 142, 179, 207, 208], "input": [5, 8, 16, 18, 21, 22, 25, 26, 31, 32, 33, 48, 49, 50, 58, 61, 62, 65, 66, 67, 69, 72, 73, 74, 75, 83, 88, 91, 92, 93, 101, 104, 110, 112, 118, 120, 126, 128, 131, 132, 134, 135, 137, 138, 140, 141, 142, 143, 156, 159, 169, 177, 191, 194, 201, 202, 204], "data": [5, 141, 142, 154, 159, 191, 207], "diff_decod": [5, 141, 142, 208], "y": [5, 25, 26, 30, 31, 32, 48, 49, 55, 66, 72, 74, 91, 92, 101, 104, 110, 112, 117, 131, 134, 137, 141, 142, 143, 150, 155, 157, 165, 170, 171, 176, 178, 179, 186, 204, 205], "decod": [5, 141], "use_styl": [6, 180], "appli": [6, 31, 91, 150, 155, 165, 166, 171, 176, 178, 179, 180, 186, 194], "default": [6, 58, 62, 119, 127, 165, 170, 171, 174, 176, 178, 180, 205], "matplotlib": [6, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 200, 201, 202, 203, 204, 205, 206, 207], "rcparam": [6, 180], "time_domain": [6, 31, 91, 92, 131, 157, 179, 189, 190, 203, 205, 206, 208], "raster": [6, 166, 174, 207], "periodogram": [6, 171, 189, 190, 203, 207, 208], "sample_r": [6, 8, 15, 23, 31, 56, 57, 80, 81, 91, 92, 150, 157, 166, 167, 168, 170, 171, 172, 173, 174, 176, 179, 189, 190, 200, 204, 206], "power": [6, 118, 130, 131, 132, 140, 149, 156, 160, 161, 162, 171, 206, 207], "densiti": [6, 21, 171, 203, 206], "p_": [6, 120, 126, 130, 131, 140, 143, 149, 156, 160, 162, 164, 171, 175], "xx": [6, 171], "us": [6, 25, 28, 31, 33, 36, 39, 48, 50, 55, 60, 65, 67, 72, 73, 75, 86, 91, 92, 93, 96, 99, 101, 107, 118, 122, 132, 135, 138, 149, 154, 158, 159, 165, 166, 167, 169, 171, 176, 177, 191, 196, 197, 198, 199, 201, 202, 205, 206, 207, 209], "welch": [6, 171, 176], "method": [6, 35, 36, 95, 96, 171, 176, 198, 201, 202, 208], "spectrogram": [6, 176, 207, 208], "constel": [6, 125, 131, 149, 150, 155, 165, 186, 192, 207, 208], "heatmap": [6, 165, 205], "bool": [6, 31, 33, 48, 50, 63, 65, 67, 70, 72, 73, 75, 89, 91, 93, 120, 126, 165, 173, 174, 178, 179], "fals": [6, 31, 33, 34, 35, 48, 50, 52, 53, 65, 67, 72, 73, 75, 76, 77, 91, 92, 93, 94, 95, 120, 126, 134, 137, 143, 165, 171, 174, 176, 179, 202, 206], "symbol_map": [6, 118, 125, 127, 149, 178, 179, 205, 208], "map": [6, 118, 127, 149, 178, 207, 208], "ey": [6, 166, 207], "diagram": [6, 8, 25, 31, 91, 101, 110, 141, 142, 166, 207], "kwarg": [6, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181], "function": [6, 7, 8, 17, 48, 72, 73, 101, 128, 129, 132, 152, 164, 171, 175, 176, 198, 201, 202, 204, 206, 207, 208], "e_b": [6, 43, 44, 45, 46, 47, 118, 120, 132, 144, 145, 147, 164, 187, 207], "n_0": [6, 21, 43, 44, 45, 46, 47, 118, 120, 126, 131, 132, 144, 145, 147, 148, 149, 164, 165, 175, 187, 188, 205, 207], "e_": [6, 43, 44, 45, 46, 47, 118, 126, 131, 132, 144, 147, 148, 149, 165, 175, 188, 205, 207], "impulse_respons": [6, 31, 48, 58, 72, 83, 91, 152, 158, 169, 183, 185, 201, 202, 206, 208], "h": [6, 31, 48, 50, 52, 53, 56, 57, 58, 72, 80, 81, 83, 91, 101, 152, 158, 166, 167, 169, 170, 173, 182, 203, 204, 206], "step_respons": [6, 31, 48, 62, 72, 88, 91, 177, 201, 202, 204, 208], "step": [6, 25, 26, 30, 31, 48, 62, 72, 88, 91, 110, 112, 117, 167, 177, 207], "zeros_pol": [6, 181, 202, 208], "zero": [6, 31, 32, 48, 55, 69, 72, 73, 76, 77, 90, 91, 92, 93, 101, 159, 167, 168, 169, 170, 172, 173, 177, 179, 181, 189, 201, 203, 204, 206, 207, 208], "pole": [6, 72, 73, 76, 77, 85, 167, 168, 169, 170, 172, 173, 177, 181, 201, 207], "magnitude_respons": [6, 56, 57, 80, 81, 158, 170, 183, 185, 201, 202, 204, 206, 208], "omega": [6, 27, 31, 48, 56, 57, 72, 80, 81, 91, 110, 113, 114, 167, 168, 170, 172, 173, 204], "phase_respons": [6, 56, 57, 80, 81, 173, 208], "angl": [6, 173, 204], "phase_delai": [6, 172, 208], "delai": [6, 25, 31, 32, 35, 48, 49, 53, 54, 65, 91, 92, 95, 101, 110, 141, 142, 168, 172, 204, 207], "tau_": [6, 172], "phi": [6, 118, 119, 125, 150, 155, 157, 172], "group_delai": [6, 168, 201, 202, 208], "group": [6, 168, 207], "tau_g": [6, 168], "complementari": [7, 128, 129], "cumul": [7, 128, 129], "distribut": [7, 128, 129], "standard": [7, 128, 129], "normal": [7, 8, 10, 15, 101, 105, 108, 128, 129, 149, 152, 176, 204, 206], "mathcal": [7, 128, 129, 131, 143], "qinv": [7, 128, 129, 208], "invers": [7, 129], "closedlooppl": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 195, 204, 208], "defin": [8, 48, 72, 131, 143, 152, 192, 195, 202, 207], "perform": [8, 32, 49, 92, 120, 126, 192, 195, 201, 202, 205, 207], "close": [8, 15, 17, 195, 207, 208], "loop": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 195, 207, 208], "pll": [8, 9, 10, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 195, 207, 208], "thi": [8, 26, 31, 43, 44, 45, 47, 48, 72, 91, 112, 118, 127, 131, 132, 149, 158, 166, 170, 171, 176, 179, 196, 197, 198, 199, 200, 202, 204, 205, 206], "meant": 8, "analysi": [8, 15, 198, 204, 207, 208], "onli": [8, 32, 39, 49, 55, 60, 65, 69, 86, 92, 99, 119, 127, 131, 199, 204, 205], "block": [8, 25, 31, 91, 101, 110, 141, 142], "bb": [8, 203, 204], "ped": [8, 14, 15, 105, 204], "lf": [8, 204], "lo": [8, 204], "e": [8, 25, 46, 130, 134, 135, 146, 192, 197, 201, 202, 204, 205], "nco": [8, 11, 15, 25, 27, 28, 105, 110, 111, 112, 113, 114, 115, 116, 117, 195, 204, 207, 208], "local": [8, 196, 198, 204], "oscil": [8, 25, 28, 110, 113, 195, 204, 207, 208], "detector": [8, 14, 15, 105, 204], "filter": [8, 12, 13, 15, 17, 31, 32, 33, 36, 37, 39, 40, 48, 49, 50, 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 96, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 152, 158, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 182, 183, 185, 195, 206, 207, 208], "numer": [8, 25, 28, 110, 113, 195, 202, 204, 207, 208], "control": [8, 25, 28, 110, 113, 183, 185, 195, 204, 207, 208], "The": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 36, 37, 38, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 54, 55, 56, 57, 58, 59, 61, 62, 64, 65, 66, 68, 69, 71, 72, 73, 74, 75, 78, 79, 80, 81, 82, 83, 84, 85, 87, 88, 90, 91, 92, 93, 96, 97, 98, 100, 101, 102, 103, 104, 105, 106, 107, 108, 110, 111, 112, 113, 114, 115, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 196, 197, 198, 199, 201, 202, 204, 205, 206, 207, 209], "transfer": [8, 17, 48, 72, 73, 101, 152, 201, 202, 204], "2nd": [8, 101, 105, 195, 204, 208], "order": [8, 31, 32, 35, 41, 46, 48, 49, 53, 59, 65, 68, 72, 77, 84, 91, 92, 93, 95, 101, 105, 118, 119, 124, 131, 144, 145, 147, 149, 150, 152, 165, 166, 174, 183, 185, 186, 187, 195, 202, 203, 204, 205, 208], "proport": [8, 12, 32, 92, 101, 102, 105, 151, 161, 195, 208], "plu": [8, 101, 105, 195, 208], "integr": [8, 13, 101, 103, 105, 195, 199, 202, 208], "z": [8, 25, 48, 72, 101, 110, 141, 142, 192, 201, 202, 204], "k_1": [8, 12, 101, 102, 204], "k_2": [8, 13, 101, 103, 204], "frac": [8, 16, 18, 21, 22, 31, 48, 54, 72, 91, 93, 101, 118, 130, 131, 132, 139, 144, 145, 147, 148, 149, 151, 152, 155, 156, 157, 160, 161, 184, 187, 188, 192, 204], "k_0": [8, 11, 15, 27, 105, 110, 111, 113, 204], "k_p": [8, 14, 15, 105, 204], "refer": [8, 16, 18, 19, 20, 21, 22, 41, 65, 101, 120, 126, 131, 139, 149, 150, 152, 158, 160, 182, 183, 185, 186, 192, 202, 206, 207], "michael": [8, 16, 18, 19, 20, 21, 22, 101, 183, 185], "rice": [8, 16, 18, 19, 20, 21, 22, 101, 183, 185], "digit": [8, 16, 18, 19, 20, 21, 22, 25, 27, 101, 120, 126, 183, 185, 195, 204, 207, 208], "commun": [8, 16, 18, 19, 20, 21, 22, 101, 120, 126, 158, 182, 183, 185, 204, 207], "discret": [8, 16, 18, 19, 20, 21, 22, 101, 131, 143, 148, 183, 185, 188, 194, 200, 204, 207], "approach": [8, 16, 18, 19, 20, 21, 22, 101, 132, 135, 138, 183, 185, 204], "appendix": [8, 101, 183, 185], "lock": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117], "exampl": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 34, 35, 37, 39, 40, 41, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 97, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 120, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 204], "see": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28, 29, 30, 39, 44, 45, 46, 47, 48, 49, 50, 51, 54, 55, 59, 60, 61, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 78, 79, 82, 84, 85, 86, 87, 89, 90, 99, 101, 102, 103, 104, 105, 106, 107, 108, 109, 111, 112, 113, 114, 115, 116, 117, 118, 125, 127, 152, 167, 168, 169, 170, 172, 173, 177, 181, 183, 185, 207], "noise_bandwidth": [8, 15, 101, 105, 108], "damping_factor": [8, 15, 101, 105, 106], "creat": [8, 15, 25, 27, 31, 33, 41, 42, 48, 50, 65, 67, 72, 73, 75, 91, 92, 93, 101, 105, 110, 113, 118, 119, 125, 131, 133, 149, 150, 157, 179, 186, 189, 190, 192, 200, 204, 206], "object": [8, 15, 31, 34, 35, 41, 42, 48, 52, 53, 72, 76, 77, 91, 94, 95, 118, 119, 167, 168, 169, 170, 172, 173, 177, 181, 204, 208], "phase_lock_tim": [8, 22], "frequency_lock_tim": [8, 16], "freq_offset": [8, 16, 18], "frequenc": [8, 16, 18, 20, 31, 48, 56, 57, 72, 80, 81, 91, 101, 150, 151, 157, 161, 167, 168, 170, 171, 172, 173, 176, 189, 190, 194, 206, 207, 208], "lock_tim": [8, 18, 204], "phase_error_vari": [8, 21], "cn0": [8, 21], "varianc": [8, 21, 131], "steadi": [8, 21], "state": [8, 21, 31, 32, 39, 48, 49, 55, 60, 61, 63, 65, 69, 70, 72, 86, 87, 89, 91, 92, 99, 208], "bnt": [8, 10, 204], "bandwidth": [8, 9, 10, 15, 19, 101, 105, 108, 132, 152, 183, 185, 204, 206], "b_n": [8, 9, 10, 15, 16, 18, 21, 22, 101, 105, 108], "t": [8, 10, 15, 101, 105, 108, 152, 154, 198, 200], "bn": [8, 9], "hz": [8, 9, 15, 16, 18, 21, 56, 57, 80, 81, 101, 105, 108, 132, 140, 150, 151, 152, 156, 157, 161, 189, 190, 200], "zeta": [8, 15, 24, 101, 105, 106], "damp": [8, 15, 24, 101, 105, 106, 204], "k0": [8, 11, 15, 25, 27, 105, 110, 111, 113], "kp": [8, 14, 15, 105], "k1": [8, 12, 101, 102, 204], "k2": [8, 13, 101, 103, 204], "repres": [8, 17, 134, 135], "omega_n": [8, 20, 204], "natur": [8, 20], "radian": [8, 19, 20, 21, 25, 27, 204], "omega_3db": [8, 19], "3": [8, 16, 18, 19, 22, 31, 37, 40, 41, 52, 53, 76, 77, 91, 92, 97, 100, 120, 125, 126, 127, 131, 132, 133, 134, 136, 137, 140, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 165, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 182, 183, 185, 186, 187, 189, 190, 191, 192, 202, 204, 206, 207], "omega_": [8, 19], "textrm": [8, 19], "properti": [9, 10, 11, 12, 13, 14, 17, 19, 20, 23, 24, 28, 36, 37, 38, 40, 54, 59, 61, 63, 64, 68, 70, 71, 78, 79, 82, 84, 85, 87, 89, 90, 96, 97, 98, 100, 102, 103, 106, 107, 108, 111, 114, 115, 121, 124, 125, 127, 198, 208], "paramet": [15, 16, 18, 21, 26, 27, 30, 32, 33, 43, 44, 45, 47, 49, 50, 56, 57, 58, 62, 66, 67, 69, 73, 74, 75, 80, 81, 83, 88, 92, 93, 104, 105, 112, 113, 117, 119, 120, 122, 123, 126, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192], "where": [15, 32, 49, 92, 101, 105, 108, 119, 131, 132, 143, 144, 145, 147, 152, 187, 192, 201, 202, 207], "period": [15, 101, 105, 108, 192], "second": [15, 16, 18, 22, 41, 101, 105, 108, 152], "critic": [15, 24, 101, 105, 106, 204], "underdamp": [15, 24, 101, 105, 106], "overdamp": [15, 24, 101, 105, 106], "ted": [15, 105], "t_": [16, 18, 22, 66, 152, 206], "fl": [16, 18], "delta": [16, 18, 31, 48, 58, 72, 83, 91, 169, 201, 202], "offset": [16, 18, 25, 27, 31, 91, 92, 110, 113, 115, 118, 119, 125, 150, 157, 179, 186, 194, 204, 207, 208], "take": [16, 18, 22], "onto": [16, 18, 22], "equat": [16, 18, 19, 20, 21, 22, 72, 118], "39": 16, "pl": [18, 22], "38": 18, "34": 19, "33": 20, "sigma_": 21, "theta_": 21, "carrier": [21, 118], "43": 21, "40": [22, 91], "less": 24, "than": [24, 119, 127, 155, 165, 178], "greater": [24, 183, 185], "dd": [25, 26, 27, 28, 29, 30, 110, 195, 204, 207, 208], "direct": [25, 27, 195, 204, 207, 208], "synthes": [25, 27, 195, 204, 207, 208], "note": [25, 31, 37, 40, 48, 72, 91, 97, 100, 101, 110, 118, 131, 132, 135, 138, 141, 142, 152, 155, 161, 166, 182, 192], "increment": [25, 26, 27, 110, 112, 113, 114, 204], "v": [25, 110, 140, 156, 196], "output": [25, 26, 30, 31, 32, 48, 49, 58, 62, 72, 73, 75, 83, 88, 91, 92, 101, 104, 110, 112, 117, 131, 132, 133, 134, 135, 137, 138, 142, 143, 149, 156, 159, 169, 177, 191, 196, 200, 201, 202, 204], "constant": [25, 27, 101, 110, 113, 114, 171, 176, 202, 204], "accumul": [25, 27, 41, 110, 113, 114, 204], "absolut": [25, 27, 110, 113, 115, 132], "adder": [25, 31, 101, 110, 141, 142, 204], "__call__": [25, 26, 31, 32, 33, 48, 49, 50, 63, 65, 66, 67, 70, 72, 73, 74, 75, 89, 91, 92, 93, 101, 104, 110, 112, 208], "variabl": [25, 26, 110, 112, 154, 204], "reset": [25, 29, 31, 39, 48, 60, 65, 69, 72, 86, 91, 99, 101, 109, 110, 116], "forward": [25, 30, 110, 117], "vari": [26, 112], "number": [30, 41, 43, 44, 47, 56, 57, 58, 62, 80, 81, 83, 88, 117, 118, 121, 131, 144, 145, 147, 152, 154, 159, 165, 166, 167, 168, 169, 170, 171, 172, 173, 176, 177, 183, 185, 187, 191], "equival": [31, 91, 131, 132, 148, 188, 197, 200], "first": [31, 41, 91, 159, 179, 191, 198, 199], "prototyp": [31, 37, 40, 91, 97, 100], "feedforward": [31, 33, 37, 40, 48, 50, 64, 72, 75, 79, 91, 93, 97, 100, 167, 168, 169, 170, 172, 173, 177, 181, 201, 202], "coeffici": [31, 33, 48, 50, 72, 75, 91, 93, 167, 168, 169, 170, 172, 173, 177, 181, 201, 202], "discard": 31, "between": [31, 33, 50, 63, 67, 70, 73, 75, 89, 91, 93, 151, 171, 174, 176, 204, 207], "each": [31, 32, 49, 91, 92, 149, 154, 171, 174, 176], "instead": [31, 91, 165], "decompos": [31, 91], "ar": [31, 32, 33, 37, 40, 41, 43, 44, 45, 47, 49, 50, 57, 67, 73, 75, 81, 91, 92, 93, 97, 100, 118, 119, 132, 134, 135, 137, 138, 159, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 180, 182, 189, 190, 196, 197, 198, 200, 202, 204, 206, 207, 209], "commut": [31, 91], "parallel": [31, 91], "sum": [31, 48, 72, 206], "prevent": [31, 91], "need": [31, 91, 198, 199], "done": [31, 196], "case": [31, 91], "2x": [31, 91], "6": [31, 37, 40, 41, 52, 53, 76, 77, 91, 92, 97, 100, 127, 136, 140, 143, 144, 145, 149, 151, 153, 154, 156, 161, 165, 166, 167, 168, 169, 170, 172, 173, 177, 178, 179, 181, 182, 183, 185, 189, 190, 192, 199, 201, 202, 204, 205, 208], "5": [31, 37, 40, 41, 52, 53, 91, 92, 97, 100, 131, 134, 136, 137, 138, 143, 144, 145, 147, 148, 149, 150, 152, 153, 154, 155, 161, 166, 167, 168, 169, 170, 172, 173, 177, 179, 181, 182, 183, 185, 186, 187, 188, 189, 190, 192, 196, 200, 201, 202, 203, 204, 205, 206], "summat": 31, "bottom": [31, 91], "top": [31, 91], "relat": [31, 37, 40, 91, 97, 100, 132, 152], "In": [31, 32, 33, 34, 35, 37, 40, 41, 49, 50, 52, 53, 63, 67, 70, 73, 75, 76, 77, 89, 91, 92, 93, 94, 95, 97, 100, 120, 125, 126, 127, 128, 129, 131, 132, 133, 134, 135, 136, 137, 138, 140, 141, 142, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 186, 187, 188, 189, 190, 191, 192, 200, 205], "np": [31, 37, 40, 76, 77, 91, 92, 97, 100, 120, 126, 131, 132, 133, 134, 135, 137, 138, 143, 149, 150, 155, 157, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 179, 181, 182, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "co": [31, 91, 92], "pi": [31, 76, 77, 91, 92, 118, 131, 151, 152, 155, 157, 161, 167, 168, 169, 170, 172, 173, 177, 179, 181, 189, 190, 192, 200, 201, 202, 204], "64": [31, 154, 202], "arang": [31, 37, 40, 91, 92, 97, 100, 131, 133, 157, 182, 189, 190, 192, 200, 204], "280": 31, "7": [31, 34, 35, 37, 40, 91, 92, 94, 95, 97, 100, 127, 136, 143, 149, 153, 154, 158, 179, 182, 192, 202], "kaiser": [31, 33, 34, 35, 36, 91, 92, 93, 94, 95, 96], "window": [31, 91, 171, 176], "out": [31, 34, 37, 40, 41, 52, 76, 91, 92, 94, 97, 100, 125, 127, 128, 129, 133, 134, 136, 137, 140, 141, 142, 143, 144, 145, 147, 148, 149, 151, 153, 156, 159, 161, 168, 180, 182, 187, 188, 191], "plt": [31, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "figur": [31, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "figsiz": [31, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 203, 204, 205, 206], "8": [31, 37, 40, 76, 77, 91, 92, 97, 100, 120, 125, 126, 127, 131, 132, 133, 135, 136, 138, 143, 149, 152, 153, 154, 157, 158, 161, 164, 165, 166, 167, 168, 169, 170, 172, 173, 175, 177, 178, 179, 180, 181, 182, 183, 185, 189, 190, 192, 197, 201, 202, 203, 204, 206], "plot": [31, 56, 57, 58, 62, 80, 81, 83, 88, 91, 92, 120, 125, 126, 127, 131, 132, 133, 135, 138, 149, 150, 152, 155, 157, 158, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 183, 185, 186, 189, 190, 192, 200, 201, 202, 204, 205, 206, 207, 208], "marker": [31, 91, 92, 165, 178, 200, 201, 202, 205], "o": [31, 91, 92, 200], "label": [31, 91, 92, 119, 120, 126, 131, 149, 150, 152, 155, 164, 166, 174, 175, 176, 179, 183, 185, 186, 200, 203, 204, 205, 206], "titl": [31, 91, 120, 126, 131, 132, 133, 135, 138, 149, 150, 155, 157, 164, 175, 179, 186, 189, 190, 192, 200, 203, 204, 205, 206], "tight_layout": [31, 91, 120, 126, 131, 132, 133, 135, 138, 149, 150, 157, 164, 175, 179, 186, 189, 190, 192, 203, 204, 205, 206], "preserv": [31, 33, 50, 63, 67, 70, 73, 75, 89, 91, 93, 166, 174], "call": [31, 32, 33, 49, 50, 63, 67, 70, 73, 75, 89, 91, 92, 93], "true": [31, 91, 92, 120, 126, 132, 134, 135, 137, 138, 143, 165, 173, 178, 180, 203, 205], "y1": [31, 91, 92, 155], "70": [31, 154, 206], "y2": [31, 91, 92, 155], "140": 31, "y3": [31, 91, 92], "210": 31, "y4": [31, 91], "y5": [31, 91], "flush": [31, 32, 48, 49, 55, 91, 92, 208], "y_1": [31, 91, 155], "y_2": [31, 91, 155], "y_3": [31, 91], "y_4": [31, 91], "y_5": [31, 91], "full": [31, 32, 49, 91, 92, 133], "__len__": [31, 48, 51, 91], "__repr__": [31, 34, 48, 52, 72, 76, 91, 94], "style": [31, 34, 48, 52, 72, 76, 91, 94, 180], "__str__": [31, 35, 48, 53, 72, 77, 91, 95], "human": [31, 35, 48, 53, 72, 77, 91, 95], "readabl": [31, 35, 48, 53, 72, 77, 91, 95], "when": [31, 39, 48, 55, 58, 60, 62, 72, 83, 86, 88, 91, 99, 131, 132, 134, 135, 137, 138, 148, 167, 168, 169, 170, 172, 173, 177, 188, 192, 200, 201, 202], "pass": [31, 48, 55, 91, 131, 134, 137, 143, 149, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 194, 196, 197, 201, 202, 208], "through": [31, 48, 55, 91, 134, 137, 143, 194, 201, 202, 204], "indic": [31, 33, 48, 50, 63, 65, 67, 70, 72, 73, 75, 89, 91, 93, 118, 119, 120, 126, 155, 166, 173, 174, 179], "whether": [31, 33, 48, 50, 63, 65, 67, 70, 72, 73, 75, 89, 91, 93, 120, 126, 173, 174, 179], "consist": [31, 43, 44, 45, 46, 47, 48, 61, 91], "previou": [31, 33, 48, 50, 61, 67, 69, 73, 75, 91, 93, 141, 142], "none": [31, 41, 45, 48, 58, 62, 65, 69, 91, 101, 109, 118, 120, 126, 131, 132, 143, 159, 165, 166, 167, 169, 171, 174, 176, 177, 178, 179, 191, 194, 200, 203, 205], "u": [31, 48, 62, 72, 88, 91, 177, 192, 193, 201, 202], "frequency_respons": [31, 48, 56, 72, 80, 91, 208], "numpi": [31, 41, 46, 48, 56, 57, 72, 80, 81, 91, 131, 191, 200, 201, 202, 203, 204, 205, 206, 207], "frequency_response_log": [31, 48, 57, 72, 81, 91], "logarithm": [31, 48, 57, 72, 81, 91, 167, 168, 170, 171, 172, 173, 201, 202], "axi": [31, 48, 57, 72, 81, 91, 165, 166, 167, 168, 170, 171, 172, 173, 174, 176, 178, 179, 200], "custom": [31, 36, 91, 96], "design": [31, 33, 36, 91, 93, 96, 158, 196, 207, 208], "multir": [31, 32, 33, 36, 91, 92, 93, 96, 158, 182, 208], "polyphase_tap": [31, 35, 37, 40, 91, 92, 95, 97, 100], "lfloor": [31, 48, 54, 91], "rfloor": [31, 48, 54, 91], "mode": [32, 33, 39, 49, 50, 55, 60, 63, 65, 67, 69, 70, 73, 75, 86, 89, 92, 93, 99, 133, 192], "l": [32, 49, 74, 92], "non": [32, 49, 92], "stream": [32, 33, 34, 35, 39, 49, 50, 52, 53, 55, 60, 63, 65, 67, 69, 70, 73, 75, 76, 77, 86, 89, 92, 93, 94, 95, 99, 118, 202], "convolut": [32, 49, 91, 92], "ha": [32, 49, 91, 92, 131, 152, 161, 192, 204, 205, 206], "align": [32, 49, 92, 200], "howev": [32, 43, 44, 45, 47, 49, 92, 101, 135, 138, 200], "produc": [32, 49, 91, 92, 152, 206], "final": [32, 49, 92], "requir": [32, 49, 92, 196, 197, 198, 199], "dictat": [32, 49, 92], "argument": [32, 33, 49, 92, 93, 164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 198, 201, 202], "specif": [33, 46, 93, 199, 206], "npt": [33, 93, 119, 167, 168, 169, 170, 172, 173, 177, 181], "string": [34, 35, 52, 53, 76, 77, 94, 95, 154, 171, 176, 208], "represent": [34, 35, 52, 53, 76, 77, 94, 95, 178, 208], "print": [35, 53, 77, 95, 154, 200, 201, 202, 204], "167": [35, 95], "24": [35, 95], "shape": [35, 53, 77, 92, 95, 152, 166, 179, 183, 185, 202, 207, 208], "84": [35, 95], "befor": [37, 40, 97, 100, 209], "decomposit": [37, 40, 97, 100, 208], "after": [37, 40, 97, 100], "10": [37, 40, 41, 91, 92, 97, 100, 120, 126, 131, 136, 140, 143, 144, 145, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 160, 161, 164, 165, 167, 168, 169, 170, 172, 173, 175, 177, 179, 181, 182, 183, 185, 186, 187, 188, 200, 201, 202, 203, 204, 205, 206], "9": [37, 40, 91, 92, 97, 100, 136, 143, 149, 153, 154, 182, 183, 185, 202, 203, 205, 206, 208], "measur": [41, 43, 130, 131, 139, 140, 146, 149, 156, 160, 162, 163, 184, 204, 207, 208], "new": [41, 42, 65, 67, 118, 119, 186], "from": [41, 56, 57, 72, 73, 80, 81, 118, 127, 140, 144, 145, 147, 148, 156, 171, 176, 187, 188, 196, 201, 202, 204, 207], "receiv": [41, 43, 120, 126, 149, 151, 166], "contain": [41, 131, 154], "add": [41, 43, 46, 131, 150, 174, 186, 194, 205, 209], "total": [41, 206], "count": [41, 44, 149], "error_r": [41, 45, 46, 205], "everi": [41, 200], "can": [41, 43, 44, 45, 47, 101, 131, 149, 152, 158, 159, 166, 171, 176, 197, 201, 202, 205, 207, 209], "obtain": 41, "follow": [41, 155, 165, 174, 176, 178, 180, 182, 204], "tabul": [41, 42], "given": [41, 43, 44, 45, 47, 65, 66, 149, 201, 202], "all": [41, 46, 149, 166, 174, 199, 207], "ascend": [41, 46], "correspond": [41, 46], "other": [43, 44, 45, 47, 200, 209], "quantiti": [43, 44, 45, 46, 47], "user": [43, 44, 45, 47, 201, 202], "caution": [43, 44, 45, 47], "instanc": [43, 44, 45, 47, 198], "transmit": [43, 149, 166], "section": [43, 44, 45, 46, 47, 202, 204], "whatev": 46, "wa": [46, 132], "provid": [46, 118, 120, 126, 207], "wrapper": [48, 72], "scipi": [48, 72, 171, 176, 206, 207], "convolv": [48, 179], "It": [48, 72, 91, 101, 131, 166], "support": [48, 72, 208], "one": [48, 72, 119, 127, 152, 154, 166, 167, 168, 170, 171, 172, 173, 176, 189, 201, 202, 203, 206], "its": [48, 72, 73, 131, 201, 202, 206], "sum_": [48, 72, 130, 131, 132, 146, 149, 184], "limits_": [48, 72], "valid": [49, 166, 174, 192], "same": [49, 92, 179, 201], "0013559842482209206": [52, 53], "005995136685669422": [52, 53], "00869881734251976": [52, 53], "002410376677289605": [52, 53], "010205586440861225": [52, 53], "018983779475092888": [52, 53], "011950905434787273": [52, 53], "015183938667178154": [52, 53], "051622189581394196": [52, 53], "07210389524698257": [52, 53], "047459449619054794": [52, 53], "039173517376184464": [52, 53], "1791868358850479": [52, 53], "3367363214492798": [52, 53], "4611457586288452": [52, 53], "5084040760993958": [52, 53], "30": [53, 91, 167, 169, 177, 189, 190, 202, 208], "31": 53, "15": [53, 136, 153, 182], "remain": [55, 159], "1024": [56, 57, 80, 81, 167, 168, 170, 172, 173, 203, 206], "decad": [57, 81, 167, 168, 170, 172, 173, 201, 204], "resampl": [65, 66, 67, 68, 69, 70, 71, 158, 182, 207, 208], "http": [65, 139, 152, 158, 160, 192, 196, 197], "wirelesspi": 65, "com": [65, 152, 158, 197], "fraction": [65, 69, 152, 200], "structur": 65, "index": [65, 69, 166, 174, 178, 196], "should": [69, 166, 197], "equal": 69, "three": [69, 200, 206], "If": [69, 131, 132, 143, 159, 165, 166, 167, 169, 171, 174, 176, 177, 178, 179, 189, 191, 207], "lfilter": 72, "b_i": [72, 75, 79, 167, 168, 169, 170, 172, 173, 177, 181, 202], "feedback": [72, 75, 78, 167, 168, 169, 170, 172, 173, 177, 181, 202], "a_j": [72, 75, 78, 167, 168, 169, 170, 172, 173, 177, 181, 202], "These": [72, 118, 180, 197, 204], "differ": [72, 119, 127, 179, 192, 206], "a_0": 72, "left": [72, 118, 130, 131, 132, 146, 149, 151, 152, 155, 157, 161, 162, 163, 184, 192], "m": [72, 75, 79, 118, 119, 121, 122, 123, 124, 127, 143, 144, 145, 147, 187, 196, 197, 198, 199, 207], "right": [72, 118, 130, 131, 132, 146, 149, 151, 152, 155, 157, 161, 162, 163, 184, 192], "b": [72, 75, 132, 152, 154, 167, 169, 177, 196, 206], "classmethod": [72, 73], "zerospol": [72, 73, 76, 77, 167, 168, 169, 170, 172, 173, 177, 181, 202], "self": [72, 73], "100": [72, 83, 88, 120, 126, 131, 132, 135, 138, 140, 149, 156, 157, 164, 166, 167, 169, 175, 177, 179, 186, 189, 190, 198, 200, 204], "b_tap": [72, 77, 79, 202], "a_tap": [72, 77, 78, 202], "exp": [76, 77, 118, 152, 155, 157, 167, 168, 169, 170, 172, 173, 177, 179, 181, 190, 192, 200, 202, 204], "1j": [76, 77, 157, 167, 168, 169, 170, 172, 173, 177, 179, 181, 190, 200, 202, 204], "conj": [76, 77, 167, 168, 169, 170, 172, 173, 177, 181, 202, 204], "478207252018059": [76, 77, 202], "6400000000000001": [76, 77, 202], "7391036260090295": [77, 202], "3061467458920719j": [77, 202], "upsampl": 91, "insert": 91, "multipli": 91, "hold": [91, 93, 159, 208], "20": [91, 92, 132, 134, 137, 140, 143, 149, 150, 154, 155, 156, 182, 203, 205, 206], "recommend": 91, "wai": [91, 197], "11": [91, 136, 153, 158, 182, 196], "zoh": [91, 93, 96], "12": [91, 136, 153, 158, 182, 201, 205], "13": [91, 133, 136, 153, 182, 208], "iter": 92, "concaten": [92, 202], "linearli": 93, "2r": 93, "ramp": [93, 101], "ones": [93, 204], "loopfilt": [101, 102, 103, 104, 105, 106, 107, 108, 109, 195, 204, 208], "ppi": [101, 105, 195], "track": 101, "cannot": 101, "chirp": 101, "underli": [101, 107], "modul": [118, 119, 120, 123, 124, 126, 131, 144, 145, 147, 149, 150, 155, 164, 165, 166, 175, 186, 187, 196, 199, 203, 205, 207, 208], "scheme": 118, "encod": [118, 120, 126, 141, 142, 207], "inform": [118, 144, 145, 147, 187], "sinusoid": [118, 131, 189, 190, 202], "taken": 118, "dot": [118, 127], "mathbb": [118, 127, 132, 192], "phase_offset": [118, 119, 125, 131, 149, 150, 155, 165, 166, 178, 186, 203, 205], "valu": [118, 119, 120, 126, 128, 129, 133, 140, 141, 142, 152, 155, 156, 165, 178, 202, 208], "maximum": [118, 122, 165, 178], "likelihood": [118, 122], "estim": [118, 122, 171, 176, 204], "degre": [118, 119, 125, 150, 155, 157, 161], "mapsto": [118, 127], "log_2": [118, 121, 132, 144, 145, 147, 187], "symbol_label": [119, 127, 205], "bin": [119, 127, 149, 165, 178, 205], "ge": 119, "consecut": 119, "adjac": [119, 127, 205, 206], "mai": [119, 127, 149, 165, 174, 176, 178, 180, 202], "more": [119, 127, 208], "whose": 119, "start": [119, 196], "0j": 119, "go": 119, "counter": 119, "clockwis": 119, "around": 119, "circl": [119, 202], "energi": [120, 126, 132, 144, 145, 146, 147, 148, 164, 175, 183, 185, 187, 188, 207, 208], "psd": [120, 126, 132, 144, 145, 147, 148, 164, 175, 187, 188], "were": [120, 126], "simon": [120, 126], "alouini": [120, 126], "over": [120, 126, 154], "fade": [120, 126], "channel": [120, 126, 132, 134, 135, 137, 138, 143, 164, 175, 207, 208], "chapter": [120, 126, 158, 182], "singl": [120, 126], "john": [120, 126], "proaki": [120, 126], "optimum": [120, 126], "theoret": [120, 126, 164, 175, 205, 208], "curv": [120, 126, 164, 175], "bpsk": [120, 126, 164, 175, 179, 203], "qpsk": [120, 125, 126, 131, 149, 150, 164, 165, 166, 175, 178, 179, 186], "psk8": [120, 126, 164, 175, 205], "psk16": [120, 126, 164, 175, 205], "linspac": [120, 126, 132, 135, 138, 164, 175, 202, 203, 204, 205], "compar": [120, 126, 206], "de": [120, 126, 208], "45": [125, 131, 149, 150, 155, 157, 165, 166, 178, 186, 203, 205], "se": [126, 175], "00000000e": [127, 202], "00": [127, 202], "00j": 127, "07106781e": 127, "01": [127, 154, 202, 204], "01j": 127, "12323400e": 127, "17": [127, 149, 161, 182], "83697020e": 127, "22464680e": 127, "16j": 127, "annot": [127, 178, 208], "probabl": [128, 129, 134, 135, 137, 138, 143, 194, 208], "exceed": [128, 129], "15865525393145707": [128, 129], "158655": [128, 129], "0000010494310452": [128, 129], "text": [130, 131, 132, 135, 138, 139, 140, 149, 150, 151, 156, 158, 160, 162, 163, 184, 186], "avg": [130, 131, 160], "seed": 131, "which": [131, 132, 150, 155, 161, 165, 178, 186, 200, 204, 206], "ad": [131, 198, 207, 208], "desir": [131, 205], "explicitli": 131, "assum": [131, 143, 159, 191], "known": 131, "must": [131, 152, 157, 183, 185, 192], "random": [131, 134, 137, 143, 149, 150, 155, 165, 166, 179, 186, 203, 205], "default_rng": 131, "noisi": 131, "w": [131, 200, 201, 202, 203, 204, 205, 206], "sigma": [131, 132], "For": [131, 201], "sim": 131, "cn": 131, "set": [131, 165, 170, 171, 174, 176, 178, 180, 198, 199, 202], "sin": [131, 189], "randint": [131, 134, 137, 143, 149, 150, 155, 165, 166, 179, 186, 203, 205], "1_000": [131, 150, 155, 186, 203], "zorder": [131, 150, 186], "infti": [131, 132], "nand": 131, "capac": [132, 135, 138, 207, 208], "2d": 132, "x_i": [132, 134, 135, 137, 138, 143, 155], "y_i": [132, 134, 135, 137, 138, 143], "monoton": 132, "decreas": 132, "limit": [132, 165, 170, 171, 178, 205], "xlabel": [132, 133, 135, 138, 149, 192, 200, 203, 204, 206], "ylabel": [132, 133, 135, 138, 149, 192, 200, 203, 204, 206], "grid": [132, 135, 138, 180, 200, 203, 204, 206], "At": 132, "occur": 132, "view": [132, 198, 207], "59": 132, "shannon": 132, "semilogi": [132, 164, 175], "both": [132, 165, 178, 179, 200, 204], "barker": [133, 193, 207, 208], "bipolar": [133, 208], "sequenc": [133, 134, 137, 143, 192, 194, 207, 208], "format": [133, 198], "seq": 133, "have": [133, 159, 179, 191], "ideal": [133, 205], "minim": 133, "autocorrel": [133, 192], "sidelob": [133, 183, 185, 192], "corr": [133, 192], "correl": [133, 192], "lag": [133, 192], "size": [133, 143, 200, 204, 205, 206], "ab": [133, 192, 206], "25": [134, 137, 143, 166, 200, 203, 204, 206], "roughli": [134, 137, 200], "eras": 134, "14": [136, 153, 182, 197], "transit": [137, 138, 143, 194], "flip": 137, "h_b": 138, "cf": 139, "v_": [139, 140, 156, 163, 184], "en": [139, 160, 192], "wikipedia": [139, 160, 192], "org": [139, 160, 192], "wiki": [139, 160, 192], "type": [140, 149, 156, 159, 171, 176, 191, 208], "voltag": [140, 156, 163, 184, 207], "decibel": [140, 156, 207, 208], "ani": [140, 156, 170, 171, 199], "x_": [140, 156], "log_": [140, 151, 160], "50": [140, 156, 178, 189, 190, 200, 203], "mhz": [140, 156], "77": [140, 154, 156], "50e6": 140, "76": [140, 154], "98970004336019": 140, "mw": [140, 156], "dbm": [140, 156], "dbv": [140, 156], "020599913279624": 140, "uncod": 142, "dmc": [143, 194, 207, 208], "memoryless": [143, 194, 207], "pr": 143, "y_j": 143, "alphabet": 143, "ldot": 143, "qam": [144, 145, 147, 187], "249387366082999": [144, 145], "020599913279625": [144, 188], "sym": [145, 148, 152, 187, 188, 206], "7506126339170005": [147, 187], "979400086720376": [147, 148], "system": [148, 158, 182, 188, 198, 199, 204, 207], "norm": 149, "noiseless": 149, "sourc": 149, "max": [149, 162, 163, 198], "_": 149, "sqrt": [149, 152, 184, 192, 203, 204, 206], "instantan": 149, "percentil": [149, 170, 171, 176], "1000": [149, 179, 189, 190, 205], "either": 149, "04193759537693": 149, "037744226270028": 149, "110454638467562": 149, "95th": 149, "95": 149, "260526885667165": 149, "inst_evm": 149, "hist": 149, "histogram": 149, "frequency_offset": [150, 194, 208], "freq_rat": 150, "cycl": [150, 179], "000": 150, "1e": [150, 205], "5e": 150, "deg": [150, 155], "path": [151, 198, 207], "loss": [151, 207], "distanc": 151, "meter": [151, 161], "transmitt": 151, "km": 151, "link": [151, 207, 208], "ghz": [151, 161], "1e3": [151, 157, 189], "1e9": [151, 161], "92": 151, "44778322188337": 151, "so": [151, 152, 207], "doubl": [151, 161], "result": [151, 161, 183, 185, 205], "increas": [151, 161, 202], "2e3": 151, "98": 151, "468383135163": 151, "also": [151, 152, 207], "2e9": 151, "puls": [152, 166, 179, 183, 185, 207, 208], "product": [152, 206], "side": [152, 167, 168, 170, 171, 172, 173, 176, 201, 202, 203, 206], "thought": [152, 209], "smaller": [152, 183, 185, 206], "wider": 152, "even": [152, 183, 185], "amplitud": [152, 155, 194, 200, 204], "nomin": 152, "ln": 152, "www": [152, 158], "mathwork": [152, 158], "help": [152, 158], "gaussdesign": 152, "html": [152, 158, 196], "onlinelibrari": 152, "wilei": 152, "doi": 152, "pdf": 152, "1002": 152, "9780470041956": 152, "app2": 152, "h_0p1": [152, 183, 185], "h_0p2": 152, "h_0p3": 152, "displai": [154, 165, 167, 168, 170, 171, 172, 173, 176, 178], "consid": 154, "line": [154, 179, 203], "quick": 154, "brown": 154, "fox": 154, "jump": 154, "lazi": 154, "dog": 154, "00000000": 154, "54": 154, "68": 154, "65": 154, "71": 154, "75": [154, 165, 204, 205], "69": 154, "63": 154, "6b": 154, "62": 154, "72": 154, "6f": 154, "6e": 154, "00000010": 154, "66": 154, "78": 154, "6a": 154, "6d": 154, "73": 154, "74": 154, "00000020": 154, "6c": 154, "61": 154, "7a": 154, "79": 154, "67": 154, "he": 154, "02": [154, 202, 204], "03": [154, 202], "04": [154, 202], "00000004": 154, "05": [154, 200, 202, 204], "06": 154, "07": 154, "08": 154, "00000008": 154, "09": 154, "0a": 154, "iq_imbal": [155, 194, 208], "iq": [155, 194, 207], "imbal": [155, 194, 207], "posit": 155, "compon": [155, 189, 190], "larger": [155, 165, 178], "quadratur": 155, "lead": [155, 205], "g_i": 155, "180": 155, "g_q": 155, "x_q": 155, "horizont": 155, "stretch": 155, "while": [155, 206], "neg": 155, "vertic": 155, "subplot": [155, 204, 205], "legend": [155, 200, 203, 204, 206], "northwest": 155, "northeast": 155, "50118723": 156, "36272725": 156, "9952623149688795": 156, "cdot": 157, "satisfi": 157, "le": [157, 161, 183, 185], "remov": [157, 171, 176, 208], "rotat": 157, "half_length": 158, "a_stop": 158, "80": [158, 192], "half": [158, 161], "stopband": [158, 183, 185], "attenu": [158, 183, 185], "a_": 158, "stop": 158, "fred": [158, 182], "harri": [158, 182], "process": [158, 182, 202, 204, 207], "dsp": [158, 207], "designmultiratefir": 158, "dtype": [159, 179, 191, 204], "dtypelik": [159, 191], "most": [159, 191], "signific": [159, 191], "enough": 159, "fill": 159, "last": [159, 196], "smallest": 159, "unsign": 159, "integ": 159, "uint8": [159, 191], "diamet": 161, "effici": 161, "55": 161, "eta": 161, "dbi": 161, "arcsin": 161, "83": 161, "dish": 161, "21": 161, "810210290266568": 161, "437435887991374": 161, "23": 161, "sinc": [161, 166, 196, 205], "antenna": [161, 207], "we": [161, 207], "observ": [161, 166], "830810203546193": 161, "529544741425365": 161, "keyword": [164, 165, 166, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 181, 201, 202], "pyplot": [164, 165, 168, 169, 170, 171, 172, 173, 175, 176, 177, 178, 179, 180, 181, 200, 201, 202, 203, 204, 205, 206], "scatter": 165, "overwritten": [165, 174, 176, 178], "rang": [165, 204, 205], "hist2d": 165, "linestyl": [165, 174, 178, 180, 192, 200, 204, 205, 206], "10_000": 165, "color": [166, 174, 179, 203, 206], "imaginari": [166, 174, 179], "interleav": [166, 174], "how": [166, 174, 179, 198, 199], "base": [166, 174, 179], "examin": 166, "nyquist": [166, 206], "intersymbol": 166, "interfer": 166, "isi": 166, "decis": 166, "two": [166, 167, 168, 170, 171, 172, 173, 176, 192, 200, 201, 202], "cascad": 166, "why": 166, "often": [166, 200], "practic": 166, "n_time": [167, 202], "n_freq": 167, "x_axi": [167, 168, 170, 171, 172, 173, 176, 201, 202, 203, 204], "log": [167, 168, 170, 171, 172, 173, 201, 202, 204], "definit": [167, 168, 169, 170, 172, 173, 177, 181], "n_t": 167, "n_f": 167, "scale": [167, 168, 170, 171, 172, 173, 176, 201, 202], "option": [167, 168, 170, 171, 172, 173, 176], "spectrum": [167, 168, 170, 171, 172, 173, 176, 189, 190], "h_srrc": [167, 168, 169, 170, 172, 173, 177, 179, 181, 205], "ylim": [168, 192, 201, 204, 205, 206], "48": 168, "52": 168, "lower": [170, 171, 183, 185], "10th": [170, 171, 176], "crop": [170, 171], "deep": [170, 171], "null": [170, 171, 206], "hann": [171, 176], "overlap": [171, 176, 203], "fft": [171, 176, 189, 190], "detrend": [171, 176], "median": 171, "spectral": [171, 203, 206], "segment": [171, 176], "256": [171, 176, 203], "point": [171, 176], "trend": [171, 176], "unwrap": [173, 204], "stride": 174, "colorbar": 174, "collect": 174, "linecollect": 174, "linewidth": [174, 192], "solid": [174, 179], "pcolormesh": 176, "vmin": 176, "vmax": 176, "100th": 176, "shade": 176, "gouraud": 176, "markers": 178, "diff": [179, 203], "about": [179, 198, 199], "mutual": 179, "exclus": 179, "part": [179, 186, 204], "current": [179, 197], "dash": 179, "share": 179, "10e3": 179, "complex64": [179, 204], "revert": 180, "rcdefault": 180, "_rc_param": 180, "rc_param": 180, "ax": 180, "autolayout": 180, "max_open_warn": 180, "titleweight": 180, "bold": 180, "arrang": 182, "down": 182, "column": 182, "notion": 182, "demonstr": 182, "18": [182, 205], "19": 182, "excess": [183, 185, 206], "narrow": [183, 185], "expens": [183, 185], "higher": [183, 185, 206], "h_0p5": [183, 185], "h_0p9": [183, 185], "affect": [183, 185], "longer": [183, 185, 189], "h_4": [183, 185], "h_8": [183, 185], "h_16": [183, 185], "sample_rate_offset": [186, 194, 208], "ppm": [186, 194], "million": 186, "odd": 189, "append": [189, 203], "end": 189, "250": [189, 190], "300": [189, 190], "ksp": [189, 190], "notic": [189, 190, 200, 206], "conjug": [189, 190, 202], "2048": [189, 190, 203], "500": [189, 190, 204], "now": [189, 190, 200], "150": [189, 190], "asymmetr": 190, "zadoff_chu": [192, 193, 208], "zadoff": [192, 193, 207, 208], "chu": [192, 193, 207, 208], "rel": [192, 206], "prime": 192, "gcd": 192, "ne": 192, "cyclic": 192, "x_u": 192, "c_": 192, "2q": 192, "mod": 192, "e2": 192, "93chu_sequ": 192, "x_3": 192, "139": 192, "x3": 192, "roll": [192, 206], "tile": 192, "x_5": 192, "x5": 192, "cross": 192, "xcorr": 192, "sphinx": 196, "immateri": 196, "theme": 196, "depend": [196, 198, 199], "store": [196, 197, 199], "txt": [196, 197, 198, 199], "myst": 196, "parser": 196, "updat": 196, "git": [196, 197], "math": 196, "dollar": 196, "ipykernel": 196, "nb": 196, "switch": 196, "pip": [196, 197, 198, 199, 207], "python3": [196, 197, 198, 199, 207], "built": 196, "run": 196, "command": 196, "dirhtml": 196, "locat": [196, 199], "home": 196, "page": 196, "site": 196, "directori": [196, 197], "get": 196, "necessari": 196, "webpag": 196, "webserv": 196, "easili": [196, 198, 199, 201, 202], "python": [196, 207], "server": 196, "8080": 196, "access": [196, 198], "web": 196, "browser": 196, "localhost": 196, "latest": [197, 207], "releas": [197, 208], "version": [197, 207], "main": [197, 206], "branch": [197, 198], "mhostett": [197, 208], "Or": [197, 199], "pre": 197, "To": 197, "activ": 197, "develop": [197, 198, 199], "librari": [197, 198, 199, 200, 205, 207, 209], "benefici": 197, "fashion": 197, "allow": [197, 199], "chang": [197, 209], "immedi": 197, "seen": 197, "upon": 197, "next": 197, "import": [197, 200, 201, 202, 203, 204, 205, 206, 207], "clone": 197, "repo": 197, "wherev": 197, "you": [197, 198, 199, 207], "like": [197, 207, 208], "flag": 197, "includ": [197, 198, 199, 207], "packag": [197, 207], "lint": 197, "test": [197, 207], "pylint": [197, 198], "black": 197, "jupyt": 197, "22": 197, "pytest": [197, 199], "cov": 197, "toml": [197, 198, 199], "xdist": 197, "benchmark": 197, "static": 198, "your": [198, 199], "dev": [198, 199], "variou": [198, 206], "nuisanc": 198, "warn": 198, "ignor": 198, "list": 198, "pyproject": [198, 199], "tool": [198, 199, 207], "src": 198, "_version": 198, "py": [198, 199], "disabl": 198, "comparison": 198, "callabl": 198, "doesn": 198, "understand": [198, 202], "metaclass": 198, "fixm": 198, "global": 198, "statement": 198, "invalid": 198, "name": 198, "miss": 198, "docstr": 198, "protect": 198, "too": 198, "mani": 198, "ancestor": 198, "attribut": 198, "public": 198, "unneed": 198, "min": 198, "similar": [198, 206], "120": 198, "manual": [198, 199], "file": [198, 199], "vscode": [198, 199], "json": [198, 199], "instruct": [198, 199], "invok": [198, 199], "edit": [198, 202], "ini_opt": 199, "minvers": 199, "addopt": 199, "showloc": 199, "testpath": 199, "execut": 199, "test_psk": 199, "infrastructur": 199, "debug": 199, "config": [200, 201, 202, 203, 204, 205, 206], "inlinebackend": [200, 201, 202, 203, 204, 205, 206], "print_figure_kwarg": [200, 201, 202, 203, 204, 205, 206], "facecolor": [200, 201, 202, 203, 204, 205, 206], "widget": [200, 201, 202, 203, 204, 205, 206], "continu": 200, "tx": 200, "decai": [200, 202], "fillstyl": 200, "imag": 200, "origin": 200, "show": [200, 201, 202, 203, 204, 205, 206], "accomplish": [200, 205], "def": [200, 203, 205], "resample_sign": 200, "new_sample_r": 200, "ty": 200, "gca": [200, 205], "set_prop_cycl": [200, 205], "200": [200, 205], "four": 200, "400": 200, "appear": 200, "fourth": 200, "do": 200, "315": 200, "32": 200, "below": [201, 202], "00095883": 201, "00175012": 201, "00423921": 201, "0058825": 201, "006151": 201, "00474595": 201, "0017044": 201, "00254816": 201, "00721645": 201, "0112324": 201, "01342358": 201, "01273202": 201, "00845058": 201, "0004368": 201, "01073669": 201, "02372977": 201, "03650247": 201, "04650654": 201, "05098525": 201, "04734644": 201, "03355896": 201, "00851486": 201, "02769991": 201, "07367348": 201, "12670447": 201, "1830132": 201, "23810898": 201, "28727058": 201, "3260799": 201, "3509384": 201, "35949665": 201, "conveni": [201, 202], "evalu": [201, 202], "envelop": [201, 202], "here": [201, 202], "altern": 202, "47820725": 202, "78207252e": 202, "58172329e": 202, "10862468e": 202, "86109590e": 202, "21565653e": 202, "01140214e": 202, "57286400e": 202, "67772160e": 202, "47338728e": 202, "10422993e": 202, "89312837e": 202, "12240078e": 202, "03953322e": 202, "69685122e": 202, "63882791e": 202, "81474977e": 202, "47193366e": 202, "85259041e": 202, "15647504e": 202, "23851924e": 202, "42176895e": 202, "84684395e": 202, "42721858e": 202, "72236648e": 202, "14721649e": 202, "10813095e": 202, "94024315e": 202, "78877688e": 202, "74077567e": 202, "87820725": 202, "53637958": 202, "94724205": 202, "13335164": 202, "1455082": 202, "04436799": 202, "88708159": 202, "71930943": 202, "5719707": 202, "46154771": 202, "39261642": 202, "36139242": 202, "35935288": 202, "3763214": 202, "40270968": 202, "43085717": 202, "45557651": 202, "47410241": 202, "48566716": 202, "49090568": 202, "49124786": 202, "48840102": 202, "4839738": 202, "47925143": 202, "47510421": 202, "47199608": 202, "47005584": 202, "46917696": 202, "46911955": 202, "denomin": 202, "73910363": 202, "30614675j": 202, "plane": 202, "endpoint": 202, "092337035029908": 202, "71104892744724": 202, "684365018955985": 202, "37868538208862": 202, "1263714068241546": 202, "9993519409971622": 202, "1909320767063554": 202, "016796159999999997": 202, "46380627201679264": 202, "3806359704987118j": 202, "4988817673846036": 202, "333342139809402j": 202, "5543277195082319": 202, "22961005941718524j": 202, "5291527586053246": 202, "2828380420991956j": 202, "lyon": 202, "3rd": 202, "insid": 202, "outsid": 202, "unstabl": 202, "n_symbol": 203, "pulse_shap": 203, "els": 203, "pb": 203, "x_bb_rect": 203, "papr_bb_rect": 203, "x_pb_rect": 203, "papr_pb_rect": 203, "x_bb_0p1": 203, "papr_bb_0p1": 203, "x_pb_0p1": 203, "papr_pb_0p1": 203, "x_bb_0p5": 203, "papr_bb_0p5": 203, "x_pb_0p5": 203, "papr_pb_0p5": 203, "x_bb_0p9": 203, "papr_bb_0p9": 203, "x_pb_0p9": 203, "papr_pb_0p9": 203, "rectangular": [203, 206], "2f": 203, "rf": [203, 204], "xlim": [203, 204, 206], "512": 203, "sweep_alpha": 203, "bb_papr": 203, "pb_papr": 203, "bpsk_bb_papr": 203, "bpsk_pb_papr": 203, "qpsk_bb_papr": 203, "qpsk_pb_papr": 203, "psk8_bb_papr": 203, "psk8_pb_papr": 203, "psk16_bb_papr": 203, "psk16_pb_papr": 203, "configur": 204, "loop_filt": 204, "0x000002276d2bcc08": 204, "theta_0": 204, "phase_error": 204, "freq_estim": 204, "suptitl": [204, 205], "avail": [204, 205, 207], "001": 204, "005": 204, "b_nt": 204, "0005": 204, "0125": 204, "015": 204, "0175": 204, "t_lock": 204, "analyze_psk": 205, "100_000": 205, "n0": 205, "tx_mf": 205, "1e6": 205, "s_hat": 205, "bpsk_ber": 205, "bpsk_ser": 205, "qpsk_ber": 205, "qpsk_ser": 205, "psk8_ber": 205, "psk8_ser": 205, "psk16_ber": 205, "psk16_ser": 205, "simul": [205, 207], "1e0": 205, "psk8_bin": 205, "psk8_grai": 205, "wors": 205, "rect": 206, "rc_0p1": 206, "rc_0p5": 206, "rc_0p9": 206, "pm": 206, "60": 206, "nearli": 206, "small": 206, "lobe": 206, "much": 206, "h_rect": 206, "freqz": 206, "worn": 206, "whole": 206, "h_rc_0p1": 206, "h_rc_0p5": 206, "h_rc_0p9": 206, "p_rect": 206, "log10": 206, "cumsum": 206, "p_rc_0p1": 206, "p_rc_0p5": 206, "p_rc_0p9": 206, "One": 206, "within": 206, "srrc_0p1": 206, "srrc_0p5": 206, "srrc_0p9": 206, "therefor": 206, "significantli": 206, "due": 206, "being": 206, "h_srrc_0p1": 206, "h_srrc_0p5": 206, "h_srrc_0p9": 206, "p_srrc_0p1": 206, "p_srrc_0p5": 206, "p_srrc_0p9": 206, "gauss_0p1": 206, "gauss_0p2": 206, "gauss_0p3": 206, "softwar": 207, "radio": 207, "goal": 207, "analyz": 207, "build": 207, "reli": 207, "interoper": 207, "veri": 207, "possibl": 207, "numba": 207, "acceler": 207, "computation": 207, "intens": 207, "addition": 207, "aim": 207, "replic": 207, "relev": 207, "matlab": 207, "toolbox": 207, "progress": 207, "someth": 207, "pleas": 207, "open": 207, "issu": 207, "github": 207, "pypi": 207, "api": [207, 209], "convers": [207, 208], "synchron": 207, "budget": [207, 208], "manipul": 207, "august": 208, "2023": 208, "abil": 208, "improv": 208, "renam": 208, "superflu": 208, "replac": 208, "matt": 208, "hostett": 208, "translat": 208, "fix": [208, 209], "juli": 208, "firinterpol": 208, "model": 208, "impair": 208, "fpsl": 208, "helper": 208, "semant": 209, "major": 209, "minor": 209, "patch": 209, "introduc": 209, "featur": 209, "backward": 209, "compat": 209, "make": 209, "bug": 209, "There": 209, "guarante": 209, "them": 209, "thei": 209}, "objects": {"": [[2, 0, 0, 1, "sdr", ""]], "sdr": [[8, 1, 1, "", "ClosedLoopPLL", "A class that defines the performance of a closed-loop PLL."], [25, 1, 1, "", "DDS", "Implements a direct digital synthesizer (DDS)."], [31, 1, 1, "", "Decimator", "Implements a polyphase finite impulse response (FIR) decimating filter."], [41, 1, 1, "", "ErrorRate", "A class for measuring bit error rates (BER) or symbol error rates (SER)."], [48, 1, 1, "", "FIR", "Implements a finite impulse response (FIR) filter."], [65, 1, 1, "", "FarrowResampler", "Implements a cubic Farrow arbitrary resampler."], [72, 1, 1, "", "IIR", "Implements an infinite impulse response (IIR) filter."], [91, 1, 1, "", "Interpolator", "Implements a polyphase finite impulse response (FIR) interpolating filter."], [101, 1, 1, "", "LoopFilter", "Implements a 2nd order, proportional-plus-integrator (PPI) loop filter."], [110, 1, 1, "", "NCO", "Implements a numerically-controlled oscillator (NCO)."], [118, 1, 1, "", "PSK", "Implements phase-shift keying (PSK) modulation and demodulation."], [128, 5, 1, "", "Q", "Computes the complementary cumulative distribution function $Q(x)$ of the standard normal distribution $mathcal{N}(0, 1)$."], [129, 5, 1, "", "Qinv", "Computes the inverse complementary cumulative distribution function $Q^{-1}(p)$ of the standard normal distribution $mathcal{N}(0, 1)$."], [130, 5, 1, "", "average_power", "Measures the average power of a time-domain signal $x[n]$."], [131, 5, 1, "", "awgn", "Adds additive white Gaussian noise (AWGN) to the time-domain signal $x[n]$."], [132, 5, 1, "", "awgn_capacity", "Calculates the capacity of an additive white Gaussian noise (AWGN) channel."], [133, 5, 1, "", "barker", "Returns the Barker code/sequence of length $N$."], [134, 5, 1, "", "bec", "Passes the binary input sequence $x$ through a binary erasure channel (BEC) with erasure probability $p$."], [135, 5, 1, "", "bec_capacity", "Calculates the capacity of a binary erasure channel (BEC)."], [136, 5, 1, "", "binary_code", "Generates a binary code of length $2^n$."], [137, 5, 1, "", "bsc", "Passes the binary input sequence $x$ through a binary symmetric channel (BSC) with transition probability $p$."], [138, 5, 1, "", "bsc_capacity", "Calculates the capacity of a binary symmetric channel (BSC)."], [139, 5, 1, "", "crest_factor", "Measures the crest factor of a time-domain signal $x[n]$."], [140, 5, 1, "", "db", "Converts from linear units to decibels."], [141, 5, 1, "", "diff_decode", "Differentially decodes the input data $y[k]$."], [142, 5, 1, "", "diff_encode", "Differentially encodes the input data $x[k]$."], [143, 5, 1, "", "dmc", "Passes the input sequence $x$ through a discrete memoryless channel (DMC) with transition probability matrix $P$."], [144, 5, 1, "", "ebn0_to_esn0", "Converts from $E_b/N_0$ to $E_s/N_0$."], [145, 5, 1, "", "ebn0_to_snr", "Converts from $E_b/N_0$ to $S/N$."], [146, 5, 1, "", "energy", "Measures the energy of a time-domain signal $x[n]$."], [147, 5, 1, "", "esn0_to_ebn0", "Converts from $E_s/N_0$ to $E_b/N_0$."], [148, 5, 1, "", "esn0_to_snr", "Converts from $E_s/N_0$ to $S/N$."], [149, 5, 1, "", "evm", "Calculates the error-vector magnitude (EVM) of the complex symbols $hat{x}[k]$."], [150, 5, 1, "", "frequency_offset", "Applies a frequency and phase offset to the time-domain signal $x[n]$."], [151, 5, 1, "", "fspl", "Calculates the free-space path loss (FSPL) in dB."], [152, 5, 1, "", "gaussian", "Returns a Gaussian pulse shape."], [153, 5, 1, "", "gray_code", "Generates a Gray code of length $2^n$."], [154, 5, 1, "", "hexdump", "Returns a hexdump of the specified data."], [155, 5, 1, "", "iq_imbalance", "Applies IQ imbalance to the complex time-domain signal $x[n]$."], [156, 5, 1, "", "linear", "Converts from decibels to linear units."], [157, 5, 1, "", "mix", "Mixes the time-domain signal $x[n]$ with a complex exponential."], [158, 5, 1, "", "multirate_taps", "Computes the multirate FIR filter that achieves rational resampling by $P/Q$."], [159, 5, 1, "", "pack", "Packs a binary array into an array with multiple bits per element."], [160, 5, 1, "", "papr", "Measures the peak-to-average power ratio (PAPR) of a time-domain signal $x[n]$."], [161, 5, 1, "", "parabolic_antenna", "Calculates the gain $G$ and beamwidth $theta$ of a parabolic reflector."], [162, 5, 1, "", "peak_power", "Measures the peak power of a time-domain signal $x[n]$."], [163, 5, 1, "", "peak_voltage", "Measures the peak voltage of a time-domain signal $x[n]$."], [182, 5, 1, "", "polyphase_matrix", "Converts the multirate FIR filter taps $h_i$ into the polyphase matrix $H_{i, j}$ that achieves rational resampling by $P/Q$."], [183, 5, 1, "", "raised_cosine", "Returns a raised cosine (RC) pulse shape."], [184, 5, 1, "", "rms_voltage", "Measures the root-mean-square (RMS) voltage of a time-domain signal $x[n]$."], [185, 5, 1, "", "root_raised_cosine", "Returns a square root raised cosine (SRRC) pulse shape."], [186, 5, 1, "", "sample_rate_offset", "Applies a sample rate offset to the time-domain signal $x[n]$."], [187, 5, 1, "", "snr_to_ebn0", "Converts from $S/N$ to $E_b/N_0$."], [188, 5, 1, "", "snr_to_esn0", "Converts from $S/N$ to $E_s/N_0$."], [189, 5, 1, "", "to_complex_bb", "Converts the real passband signal $x_r[n]$ centered at $f_{s,r}/4$ with sample rate $f_{s,r}$ to a complex baseband signal $x_c[n]$ centered at $0$ with sample rate $f_{s,c} = f_{s,r}/2$."], [190, 5, 1, "", "to_real_pb", "Converts the complex baseband signal $x_c[n]$ centered at $0$ with sample rate $f_{s,c}$ to a real passband signal $x_r[n]$ centered at $f_{s,r}/4$ with sample rate $f_{s,r} = 2f_{s,c}$."], [191, 5, 1, "", "unpack", "Unpacks an array with multiple bits per element into a binary array."], [192, 5, 1, "", "zadoff_chu", "Returns the root-$u$ Zadoff-Chu sequence of length $N$."]], "sdr.ClosedLoopPLL": [[9, 2, 1, "", "Bn", "The noise bandwidth $B_n$ of the PLL in Hz."], [10, 2, 1, "", "BnT", "The normalized noise bandwidth $B_n T$ of the PLL."], [11, 2, 1, "", "K0", "The NCO gain $K_0$."], [12, 2, 1, "", "K1", "The proportional gain $K_1$ of the loop filter."], [13, 2, 1, "", "K2", "The integral gain $K_2$ of the loop filter."], [14, 2, 1, "", "Kp", "The phase error detector (PED) gain $K_p$."], [15, 3, 1, "", "__init__", "Creates a closed-loop PLL analysis object."], [16, 3, 1, "", "frequency_lock_time", "Returns the frequency lock time of the PLL."], [17, 2, 1, "", "iir", "The IIR filter that represents the closed-loop transfer function of the PLL."], [18, 3, 1, "", "lock_time", "Returns the lock time of the PLL."], [19, 2, 1, "", "omega_3dB", "The 3-dB bandwidth $omega_{3textrm{dB}}$ of the PLL in radians/s."], [20, 2, 1, "", "omega_n", "The natural frequency $omega_n$ of the PLL in radians/s."], [21, 3, 1, "", "phase_error_variance", "Returns the variance of the phase error of the PLL in steady state."], [22, 3, 1, "", "phase_lock_time", "Returns the phase lock time of the PLL."], [23, 2, 1, "", "sample_rate", "The sample rate $f_s$ of the PLL in samples/s."], [24, 2, 1, "", "zeta", "The damping factor $zeta$ of the PLL."]], "sdr.ClosedLoopPLL.__init__": [[15, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [15, 4, 2, "p-Kp", "Kp", "The gain $K_p$ of the phase error detector (PED) or time error detector (TED)."], [15, 4, 2, "p-damping_factor", "damping_factor", "The damping factor $zeta$ of the loop filter. $zeta = 1$ is critically damped, $zeta < 1$ is underdamped, and $zeta > 1$ is overdamped."], [15, 4, 2, "p-noise_bandwidth", "noise_bandwidth", "The normalized noise bandwidth $B_n T$ of the loop filter, where $B_n$ is the noise bandwidth in Hz and $T$ is the sampling period in seconds."], [15, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the PLL in Hz."]], "sdr.ClosedLoopPLL.frequency_lock_time": [[16, 4, 2, "p-freq_offset", "freq_offset", "The frequency offset $Delta f$ of the input signal in Hz."]], "sdr.ClosedLoopPLL.lock_time": [[18, 4, 2, "p-freq_offset", "freq_offset", "The frequency offset $Delta f$ of the input signal in Hz."]], "sdr.ClosedLoopPLL.phase_error_variance": [[21, 4, 2, "p-cn0", "cn0", "The carrier-to-noise density ratio $C/N_0$ of the input signal in dB-Hz."]], "sdr.DDS": [[26, 3, 1, "", "__call__", "Steps the DDS with the variable phase increment signal $x[n]$."], [27, 3, 1, "", "__init__", "Creates a direct digital synthesizer (DDS)."], [28, 2, 1, "", "nco", "The numerically-controlled oscillator (NCO) used by the DDS."], [29, 3, 1, "", "reset", "Resets the DDS."], [30, 3, 1, "", "step", "Steps the DDS forward by $N$ samples."]], "sdr.DDS.__call__": [[26, 4, 2, "p-x", "x", "The variable-increment signal $x[n]$. This input signal varies the per-sample increment of the DDS."]], "sdr.DDS.__init__": [[27, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [27, 4, 2, "p-increment", "increment", "The constant accumulation $omega$ of the NCO in radians/sample."], [27, 4, 2, "p-offset", "offset", "The absolute offset $theta$ of the NCO in radians."]], "sdr.DDS.step": [[30, 4, 2, "p-N", "N", "The number of samples $N$ to step the DDS forward."]], "sdr.Decimator": [[32, 3, 1, "", "__call__", "Filters and decimates the input signal $x[n]$ with the polyphase FIR filter."], [33, 3, 1, "", "__init__", "Creates a polyphase FIR decimating filter."], [34, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [35, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [36, 2, 1, "", "method", "The method used to design the multirate filter."], [37, 2, 1, "", "polyphase_taps", "The polyphase feedforward taps $h_{i, j}$."], [38, 2, 1, "", "rate", "The decimation rate $r$."], [39, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [40, 2, 1, "", "taps", "The prototype feedforward taps $h_i$."]], "sdr.Decimator.__call__": [[32, 4, 2, "p-mode", "mode", "The non-streaming convolution mode."], [32, 4, 2, "p-x", "x", "The input signal $x[n]$ with sample rate $f_s$ and length $L$."]], "sdr.Decimator.__init__": [[33, 4, 2, "p-rate", "rate", "The decimation rate $r$."], [33, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."], [33, 4, 2, "p-taps", "taps", "The multirate filter design specification."]], "sdr.ErrorRate": [[42, 3, 1, "", "__init__", "Creates a new error rate tabulation object."], [43, 3, 1, "", "add", "Measures the number of bit or symbol errors at the given signal-to-noise ratio (SNR)."], [44, 3, 1, "", "counts", "Returns the number of counts at the specified signal-to-noise ratio (SNR)."], [45, 3, 1, "", "error_rate", "Returns the error rate at the specified signal-to-noise ratio (SNR)."], [46, 3, 1, "", "error_rates", "Returns all signal-to-noise ratios (SNRs) in ascending order and their corresponding error rates."], [47, 3, 1, "", "errors", "Returns the number of errors at the specified signal-to-noise ratio (SNR)."]], "sdr.ErrorRate.add": [[43, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."], [43, 4, 2, "p-x", "x", "The transmitted bits or symbols $x[k]$."], [43, 4, 2, "p-x_hat", "x_hat", "The received bits or symbols $hat{x}[k]$."]], "sdr.ErrorRate.counts": [[44, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."]], "sdr.ErrorRate.error_rate": [[45, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."]], "sdr.ErrorRate.errors": [[47, 4, 2, "p-snr", "snr", "The signal-to-noise ratio (SNR) in dB. This can be $E_b/N_0$, $E_s/N_0$, $S/N$, $C/N_0$, or other SNR quantities. However, users are cautioned to be consistent for a given class instance."]], "sdr.FIR": [[49, 3, 1, "", "__call__", "Filters the input signal $x[n]$ with the FIR filter."], [50, 3, 1, "", "__init__", "Creates a FIR filter with feedforward coefficients $h_i$."], [51, 3, 1, "", "__len__", "Returns the filter length $N + 1$."], [52, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [53, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [54, 2, 1, "", "delay", "The delay of the FIR filter $d = lfloor frac{N + 1}{2} rfloor$ in samples."], [55, 3, 1, "", "flush", "Flushes the filter state by passing zeros through the filter. Only useful when using streaming mode."], [56, 3, 1, "", "frequency_response", "Returns the frequency response $H(omega)$ of the FIR filter."], [57, 3, 1, "", "frequency_response_log", "Returns the frequency response $H(omega)$ of the FIR filter on a logarithmic frequency axis."], [58, 3, 1, "", "impulse_response", "Returns the impulse response $h[n]$ of the FIR filter. The impulse response $h[n]$ is the filter output when the input is an impulse $delta[n]$."], [59, 2, 1, "", "order", "The order of the FIR filter $N$."], [60, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [61, 2, 1, "", "state", "The filter state consisting of the previous $N$ inputs."], [62, 3, 1, "", "step_response", "Returns the step response $s[n]$ of the FIR filter. The step response $s[n]$ is the filter output when the input is a unit step $u[n]$."], [63, 2, 1, "", "streaming", "Indicates whether the filter is in streaming mode."], [64, 2, 1, "", "taps", "The feedforward taps $h_i$ for $i = 0,...,N$."]], "sdr.FIR.__call__": [[49, 4, 2, "p-mode", "mode", "The non-streaming convolution mode."], [49, 4, 2, "p-x", "x", "The input signal $x[n]$ with length $L$."]], "sdr.FIR.__init__": [[50, 4, 2, "p-h", "h", "The feedforward coefficients $h_i$ for $i = 0,...N$."], [50, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."]], "sdr.FIR.frequency_response": [[56, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [56, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.FIR.frequency_response_log": [[57, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [57, 4, 2, "p-decades", "decades", "The number of frequency decades to plot."], [57, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.FIR.impulse_response": [[58, 4, 2, "p-N", "N", "The number of samples to return. The default is the filter length."]], "sdr.FIR.step_response": [[62, 4, 2, "p-N", "N", "The number of samples to return. The default is the filter length."]], "sdr.FarrowResampler": [[66, 3, 1, "", "__call__", "Resamples the input signal $x[n]$ by the given arbitrary rate $r$."], [67, 3, 1, "", "__init__", "Creates a new Farrow arbitrary resampler."], [68, 2, 1, "", "order", "The order of the filter."], [69, 3, 1, "", "reset", "Streaming-mode only: Resets the filter state and fractional sample index."], [70, 2, 1, "", "streaming", "Indicates whether the filter is in streaming mode."], [71, 2, 1, "", "taps", "The Farrow filter taps."]], "sdr.FarrowResampler.__call__": [[66, 4, 2, "p-rate", "rate", "The resampling rate $r$."], [66, 4, 2, "p-x", "x", "The input signal $x[n] = x(n T_s)$."]], "sdr.FarrowResampler.__init__": [[67, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."]], "sdr.FarrowResampler.reset": [[69, 4, 2, "p-state", "state", "The filter state to reset to. The state vector should equal the previous three inputs. If None, the filter state will be reset to zero."]], "sdr.IIR": [[73, 3, 1, "", "ZerosPoles", "Creates an IIR filter from its zeros, poles, and gain."], [74, 3, 1, "", "__call__", "Filters the input signal $x[n]$ with the IIR filter."], [75, 3, 1, "", "__init__", "Creates an IIR filter with feedforward coefficients $b_i$ and feedback coefficients $a_j$."], [76, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [77, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [78, 2, 1, "", "a_taps", "The feedback taps $a_j$ for $j = 0,...,N$."], [79, 2, 1, "", "b_taps", "The feedforward taps $b_i$ for $i = 0,...,M$."], [80, 3, 1, "", "frequency_response", "Returns the frequency response $H(omega)$ of the IIR filter."], [81, 3, 1, "", "frequency_response_log", "Returns the frequency response $H(omega)$ of the IIR filter on a logarithmic frequency axis."], [82, 2, 1, "", "gain", "The gain of the IIR filter."], [83, 3, 1, "", "impulse_response", "Returns the impulse response $h[n]$ of the IIR filter. The impulse response $h[n]$ is the filter output when the input is an impulse $delta[n]$."], [84, 2, 1, "", "order", "The order of the IIR filter $N$."], [85, 2, 1, "", "poles", "The poles of the IIR filter."], [86, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [87, 2, 1, "", "state", "The filter state."], [88, 3, 1, "", "step_response", "Returns the step response $s[n]$ of the IIR filter. The step response $s[n]$ is the filter output when the input is a unit step $u[n]$."], [89, 2, 1, "", "streaming", "Indicates whether the filter is in streaming mode."], [90, 2, 1, "", "zeros", "The zeros of the IIR filter."]], "sdr.IIR.ZerosPoles": [[73, 4, 2, "p-gain", "gain", "The gain of the transfer function."], [73, 4, 2, "p-poles", "poles", "The poles of the transfer function."], [73, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs and outputs are preserved between calls to __call__()."], [73, 4, 2, "p-zeros", "zeros", "The zeros of the transfer function."]], "sdr.IIR.__call__": [[74, 4, 2, "p-x", "x", "The input signal $x[n]$ with length $L$."]], "sdr.IIR.__init__": [[75, 4, 2, "p-a", "a", "The feedback coefficients $a_j$ for $j = 0,...,N$."], [75, 4, 2, "p-b", "b", "The feedforward coefficients $b_i$ for $i = 0,...,M$."], [75, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs and outputs are preserved between calls to __call__()."]], "sdr.IIR.frequency_response": [[80, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [80, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.IIR.frequency_response_log": [[81, 4, 2, "p-N", "N", "The number of samples in the frequency response."], [81, 4, 2, "p-decades", "decades", "The number of frequency decades to plot."], [81, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."]], "sdr.IIR.impulse_response": [[83, 4, 2, "p-N", "N", "The number of samples to return."]], "sdr.IIR.step_response": [[88, 4, 2, "p-N", "N", "The number of samples to return."]], "sdr.Interpolator": [[92, 3, 1, "", "__call__", "Interpolates and filters the input signal $x[n]$ with the polyphase FIR filter."], [93, 3, 1, "", "__init__", "Creates a polyphase FIR interpolating filter."], [94, 3, 1, "", "__repr__", "Returns a code-styled string representation of the object."], [95, 3, 1, "", "__str__", "Returns a human-readable string representation of the object."], [96, 2, 1, "", "method", "The method used to design the multirate filter."], [97, 2, 1, "", "polyphase_taps", "The polyphase feedforward taps $h_{i, j}$."], [98, 2, 1, "", "rate", "The interpolation rate $r$."], [99, 3, 1, "", "reset", "Resets the filter state. Only useful when using streaming mode."], [100, 2, 1, "", "taps", "The prototype feedforward taps $h_i$."]], "sdr.Interpolator.__call__": [[92, 4, 2, "p-mode", "mode", "The non-streaming convolution mode."], [92, 4, 2, "p-x", "x", "The input signal $x[n]$ with sample rate $f_s$ and length $L$."]], "sdr.Interpolator.__init__": [[93, 4, 2, "p-rate", "rate", "The interpolation rate $r$."], [93, 4, 2, "p-streaming", "streaming", "Indicates whether to use streaming mode. In streaming mode, previous inputs are preserved between calls to __call__()."], [93, 4, 2, "p-taps", "taps", "The multirate filter design specification."]], "sdr.LoopFilter": [[102, 2, 1, "", "K1", "The proportional gain $K_1$ of the loop filter."], [103, 2, 1, "", "K2", "The integral gain $K_2$ of the loop filter."], [104, 3, 1, "", "__call__", "Filters the input signal $x[n]$."], [105, 3, 1, "", "__init__", "Creates a 2nd order, proportional-plus-integrator (PPI) loop filter."], [106, 2, 1, "", "damping_factor", "The damping factor $zeta$ of the loop filter. $zeta = 1$ is critically damped, $zeta < 1$ is underdamped, and $zeta > 1$ is overdamped."], [107, 2, 1, "", "iir", "The underlying IIR filter used to implement the loop filter."], [108, 2, 1, "", "noise_bandwidth", "The normalized noise bandwidth $B_n T$ of the loop filter, where $B_n$ is the noise bandwidth in Hz and $T$ is the sampling period in seconds."], [109, 3, 1, "", "reset", "Resets the loop filter."]], "sdr.LoopFilter.__call__": [[104, 4, 2, "p-x", "x", "The input signal $x[n]$."]], "sdr.LoopFilter.__init__": [[105, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [105, 4, 2, "p-Kp", "Kp", "The gain $K_p$ of the phase error detector (PED) or time error detector (TED)."], [105, 4, 2, "p-damping_factor", "damping_factor", "The damping factor $zeta$ of the loop filter. $zeta = 1$ is critically damped, $zeta < 1$ is underdamped, and $zeta > 1$ is overdamped."], [105, 4, 2, "p-noise_bandwidth", "noise_bandwidth", "The normalized noise bandwidth $B_n T$ of the loop filter, where $B_n$ is the noise bandwidth in Hz and $T$ is the sampling period in seconds."]], "sdr.NCO": [[111, 2, 1, "", "K0", "The NCO gain $K_0$."], [112, 3, 1, "", "__call__", "Steps the NCO with the variable-increment signal $x[n]$."], [113, 3, 1, "", "__init__", "Creates a numerically-controlled oscillator (NCO)."], [114, 2, 1, "", "increment", "The constant accumulation $omega$ of the NCO in units/sample."], [115, 2, 1, "", "offset", "The absolute offset $theta$ of the NCO in units."], [116, 3, 1, "", "reset", "Resets the NCO."], [117, 3, 1, "", "step", "Steps the NCO forward by $N$ samples."]], "sdr.NCO.__call__": [[112, 4, 2, "p-x", "x", "The variable-increment signal $x[n]$. This input signal varies the per-sample increment of the NCO."]], "sdr.NCO.__init__": [[113, 4, 2, "p-K0", "K0", "The NCO gain $K_0$."], [113, 4, 2, "p-increment", "increment", "The constant accumulation $omega$ of the NCO in units/sample."], [113, 4, 2, "p-offset", "offset", "The absolute offset $theta$ of the NCO in units."]], "sdr.NCO.step": [[117, 4, 2, "p-N", "N", "The number of samples $N$ to step the NCO forward."]], "sdr.PSK": [[119, 3, 1, "", "__init__", "Creates a new PSK object."], [120, 3, 1, "", "ber", "Computes the bit error rate (BER) at the provided $E_b/N_0$ values."], [121, 2, 1, "", "bps", "The number of bits per symbol $k = log_2 M$."], [122, 3, 1, "", "demodulate", "Demodulates the complex symbols $hat{x}[k]$ to decimal symbols $hat{s}[k]$ using maximum-likelihood estimation."], [123, 3, 1, "", "modulate", "Modulates to decimal symbols $s[k]$ to complex symbols $x[k]$."], [124, 2, 1, "", "order", "The modulation order $M = 2^k$."], [125, 2, 1, "", "phase_offset", "The phase offset $phi$ in degrees."], [126, 3, 1, "", "ser", "Computes the symbol error rate (SER) at the provided $E_s/N_0$ values."], [127, 2, 1, "", "symbol_map", "The symbol map ${0, dots, M-1} mapsto mathbb{C}$. This maps decimal symbols from $0$ to $M-1$ to complex symbols."]], "sdr.PSK.__init__": [[119, 4, 2, "p-order", "order", "The modulation order $M = 2^k$, where $k ge 1$ is the bits per symbol."], [119, 4, 2, "p-phase_offset", "phase_offset", "The phase offset $phi$ in degrees."], [119, 4, 2, "p-symbol_labels", "symbol_labels", "The decimal symbol labels of consecutive complex symbols."]], "sdr.PSK.ber": [[120, 4, 2, "p-diff_encoded", "diff_encoded", "Indicates whether the input symbols were differentially encoded."], [120, 4, 2, "p-ebn0", "ebn0", "Bit energy $E_b$ to noise PSD $N_0$ ratio in dB."]], "sdr.PSK.demodulate": [[122, 4, 2, "p-x_hat", "x_hat", "The complex symbols $hat{x}[k]$ to demodulate."]], "sdr.PSK.modulate": [[123, 4, 2, "p-symbols", "symbols", "The decimal symbols $s[k]$ to modulate, $0$ to $M-1$."]], "sdr.PSK.ser": [[126, 4, 2, "p-diff_encoded", "diff_encoded", "Indicates whether the input symbols were differentially encoded."], [126, 4, 2, "p-esn0", "esn0", "Symbol energy $E_s$ to noise PSD $N_0$ ratio in dB."]], "sdr.Q": [[128, 4, 2, "p-x", "x", "The real-valued input $x$."]], "sdr.Qinv": [[129, 4, 2, "p-p", "p", "The probability $p$ of exceeding the returned value $x$."]], "sdr.average_power": [[130, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.awgn": [[131, 4, 2, "p-noise", "noise", "The noise power (variance) in linear units. If noise is None, snr must be specified."], [131, 4, 2, "p-seed", "seed", "The seed for the random number generator. This is passed to numpy.random.default_rng()."], [131, 4, 2, "p-snr", "snr", "The desired signal-to-noise ratio (SNR) in dB. If specified, the average signal power is measured explicitly. It is assumed that $x[n]$ contains signal only. If the signal power is known, the desired noise variance can be computed and passed in noise. If snr is None, noise must be specified."], [131, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to which AWGN is added."]], "sdr.awgn_capacity": [[132, 4, 2, "p-bandwidth", "bandwidth", "The bandwidth $B$ of the channel in Hz. If specified, the capacity is calculated in bits/s. If None, the capacity is calculated in bits/2D."], [132, 4, 2, "p-snr", "snr", "The signal-to-noise ratio $S / N$ in dB of the channel."]], "sdr.barker": [[133, 4, 2, "p-length", "length", "The length $N$ of the Barker code/sequence."], [133, 4, 2, "p-output", "output", "The output format of the Barker code/sequence."]], "sdr.bec": [[134, 4, 2, "p-p", "p", "The probability $p$ of a bit erasure."], [134, 4, 2, "p-x", "x", "The input sequence $x$ with $x_i in {0, 1}$."]], "sdr.bec_capacity": [[135, 4, 2, "p-p", "p", "The erasure probability $p$ of the BEC channel."]], "sdr.binary_code": [[136, 4, 2, "p-n", "n", "The length of the binary code."]], "sdr.bsc": [[137, 4, 2, "p-p", "p", "The probability $p$ of a bit flip."], [137, 4, 2, "p-x", "x", "The input sequence $x$ with $x_i in {0, 1}$."]], "sdr.bsc_capacity": [[138, 4, 2, "p-p", "p", "The transition probability $p$ of the BSC channel."]], "sdr.crest_factor": [[139, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.db": [[140, 4, 2, "p-type", "type", "The type of input value or signal."], [140, 4, 2, "p-x", "x", "The input value or signal."]], "sdr.diff_decode": [[141, 4, 2, "p-y", "y", "The input encoded data $y[k]$."], [141, 4, 2, "p-y_prev", "y_prev", "The previous value of the encoded data $y[k-1]$."]], "sdr.diff_encode": [[142, 4, 2, "p-x", "x", "The input uncoded data $x[k]$."], [142, 4, 2, "p-y_prev", "y_prev", "The previous value of the output encoded data $y[k-1]$."]], "sdr.dmc": [[143, 4, 2, "p-P", "P", "The $m times n$ transition probability matrix $P$, where $P_{i,j} = Pr(Y = y_j | X = x_i)$."], [143, 4, 2, "p-X", "X", "The input alphabet $mathcal{X}$ of size $m$. If None, it is assumed that $mathcal{X} = {0, 1, ldots, m-1}$."], [143, 4, 2, "p-Y", "Y", "The output alphabet $mathcal{Y}$ of size $n$. If None, it is assumed that $mathcal{Y} = {0, 1, ldots, n-1}$."], [143, 4, 2, "p-x", "x", "The input sequence $x$ with $x_i in mathcal{X}$."]], "sdr.ebn0_to_esn0": [[144, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [144, 4, 2, "p-ebn0", "ebn0", "Bit energy $E_b$ to noise PSD $N_0$ ratio in dB."], [144, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."]], "sdr.ebn0_to_snr": [[145, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [145, 4, 2, "p-ebn0", "ebn0", "Bit energy $E_b$ to noise PSD $N_0$ ratio in dB."], [145, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."], [145, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.energy": [[146, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.esn0_to_ebn0": [[147, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [147, 4, 2, "p-esn0", "esn0", "Symbol energy $E_s$ to noise PSD $N_0$ ratio in dB."], [147, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."]], "sdr.esn0_to_snr": [[148, 4, 2, "p-esn0", "esn0", "Symbol energy $E_s$ to noise PSD $N_0$ ratio in dB."], [148, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.evm": [[149, 4, 2, "p-norm", "norm", "The normalization source used in the EVM calculation."], [149, 4, 2, "p-output", "output", "The output type of the EVM calculation."], [149, 4, 2, "p-ref", "ref", "The complex reference symbols $x[k]$. This can be the noiseless transmitted symbols or the modulation's symbol map."], [149, 4, 2, "p-x_hat", "x_hat", "The complex symbols $hat{x}[k]$ to be measured."]], "sdr.frequency_offset": [[150, 4, 2, "p-freq", "freq", "The frequency offset $f$ in Hz (or in cycles/sample if sample_rate=1)."], [150, 4, 2, "p-freq_rate", "freq_rate", "The frequency offset rate $f_{text{rate}}$ in Hz/s (or in cycles/sample^2 if sample_rate=1)."], [150, 4, 2, "p-phase", "phase", "The phase offset $phi$ in degrees."], [150, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ in samples/s."], [150, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to which the frequency offset is applied."]], "sdr.fspl": [[151, 4, 2, "p-d", "d", "The distance $d$ in meters between the transmitter and receiver."], [151, 4, 2, "p-f", "f", "The frequency $f$ in Hz of the signal."]], "sdr.gaussian": [[152, 4, 2, "p-span", "span", "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."], [152, 4, 2, "p-sps", "sps", "The number of samples per symbol."], [152, 4, 2, "p-time_bandwidth", "time_bandwidth", "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."]], "sdr.gray_code": [[153, 4, 2, "p-n", "n", "The length of the Gray code."]], "sdr.hexdump": [[154, 4, 2, "p-data", "data", "The data to display. Each element is considered one byte. Use sdr.pack() or sdr.unpack() to convert data with variable bits per element."], [154, 4, 2, "p-width", "width", "The number of bytes per line."]], "sdr.iq_imbalance": [[155, 4, 2, "p-amplitude", "amplitude", "The amplitude imbalance $A$ in dB. A positive value indicates that the in-phase component is larger than the quadrature component."], [155, 4, 2, "p-phase", "phase", "The phase imbalance $phi$ in degrees. A positive value indicates that the quadrature component leads the in-phase component."], [155, 4, 2, "p-x", "x", "The complex time-domain signal $x[n]$ to which IQ imbalance is applied."]], "sdr.linear": [[156, 4, 2, "p-type", "type", "The type of output value or signal."], [156, 4, 2, "p-x", "x", "The input value or signal in dB."]], "sdr.mix": [[157, 4, 2, "p-freq", "freq", "The frequency $f$ of the complex exponential in Hz (or 1/samples if sample_rate=1). The frequency must satisfy $-f_s/2 le f le f_s/2$."], [157, 4, 2, "p-phase", "phase", "The phase $phi$ of the complex exponential in degrees."], [157, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal."], [157, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."]], "sdr.multirate_taps": [[158, 4, 2, "p-A_stop", "A_stop", "The stopband attenuation $A_{text{stop}}$ in dB."], [158, 4, 2, "p-P", "P", "The interpolation rate $P$."], [158, 4, 2, "p-Q", "Q", "The decimation rate $Q$."], [158, 4, 2, "p-half_length", "half_length", "The half-length of the polyphase filters."]], "sdr.pack": [[159, 4, 2, "p-bpe", "bpe", "The number of bits per element in the output array."], [159, 4, 2, "p-dtype", "dtype", "The data type of the output array. If None, the smallest unsigned integer dtype that can hold bpe bits is used."], [159, 4, 2, "p-x", "x", "The input binary array with 1 bit per element."]], "sdr.papr": [[160, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.parabolic_antenna": [[161, 4, 2, "p-diameter", "diameter", "The diameter $d$ in meters of the parabolic reflector."], [161, 4, 2, "p-efficiency", "efficiency", "The efficiency $0 le eta le 1$ of the parabolic reflector."], [161, 4, 2, "p-freq", "freq", "The frequency $f$ in Hz of the signal."]], "sdr.peak_power": [[162, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.peak_voltage": [[163, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.plot": [[164, 5, 1, "", "ber", "Plots the bit error rate (BER) as a function of $E_b/N_0$."], [165, 5, 1, "", "constellation", "Plots the constellation of the complex symbols $hat{x}[k]$."], [166, 5, 1, "", "eye", "Plots the eye diagram of the baseband modulated signal $x[n]$."], [167, 5, 1, "", "filter", "Plots the magnitude response $|H(omega)|^2$, impulse response $h[n]$, step response $s[n]$, and zeros and poles of the filter."], [168, 5, 1, "", "group_delay", "Plots the group delay $tau_g(omega)$ of the IIR filter."], [169, 5, 1, "", "impulse_response", "Plots the impulse response $h[n]$ of a filter."], [170, 5, 1, "", "magnitude_response", "Plots the magnitude response $|H(omega)|^2$ of the filter."], [171, 5, 1, "", "periodogram", "Plots the estimated power spectral density $P_{xx}$ of a time-domain signal $x[n]$ using Welch's method."], [172, 5, 1, "", "phase_delay", "Plots the phase delay $tau_{phi}(omega)$ of the filter."], [173, 5, 1, "", "phase_response", "Plots the phase response $angle H(omega)$ of the filter."], [174, 5, 1, "", "raster", "Plots a raster of the time-domain signal $x[n]$."], [175, 5, 1, "", "ser", "Plots the symbol error rate (SER) as a function of $E_s/N_0$."], [176, 5, 1, "", "spectrogram", "Plots the spectrogram of a time-domain signal $x[n]$ using Welch's method."], [177, 5, 1, "", "step_response", "Plots the step response $s[n]$ of a filter."], [178, 5, 1, "", "symbol_map", "Plots the symbol map of the complex symbols $hat{x}[k]$."], [179, 5, 1, "", "time_domain", "Plots a time-domain signal $x[n]$."], [180, 5, 1, "", "use_style", "Applies sdr's default matplotlib rcParams."], [181, 5, 1, "", "zeros_poles", "Plots the zeros and poles of the filter."]], "sdr.plot.ber": [[164, 4, 2, "p-ber", "ber", "The bit error rate $P_{be}$."], [164, 4, 2, "p-ebn0", "ebn0", "The bit energy $E_b$ to noise PSD $N_0$ ratio (dB)."], [164, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.semilogy()."]], "sdr.plot.constellation": [[165, 4, 2, "p-heatmap", "heatmap", "If True, a heatmap is plotted instead of a scatter plot."], [165, 4, 2, "p-kwargs", "kwargs", "If heatmap=False, additional keyword arguments to pass to matplotlib.pyplot.scatter(). The following keyword arguments are set by default. The defaults may be overwritten."], [165, 4, 2, "p-limits", "limits", "The axis limits, which apply to both the x- and y-axis. If None, the axis limits are set to 10% larger than the maximum value."], [165, 4, 2, "p-x_hat", "x_hat", "The complex symbols $hat{x}[k]$."]], "sdr.plot.eye": [[166, 4, 2, "p-color", "color", "Indicates how to color the rasters. If \"index\", the rasters are colored based on their index. If a valid Matplotlib color, the rasters are all colored with that color."], [166, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to sdr.plot.raster()."], [166, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If None, the x-axis will be labeled as \"Samples\"."], [166, 4, 2, "p-span", "span", "The number of symbols per raster."], [166, 4, 2, "p-sps", "sps", "The number of samples per symbol."], [166, 4, 2, "p-x", "x", "The baseband modulated signal $x[n]$. If x is complex, the real and imaginary rasters are interleaved. Time order is preserved."]], "sdr.plot.filter": [[167, 4, 2, "p-N_freq", "N_freq", "The number of samples $N_f$ in the frequency response."], [167, 4, 2, "p-N_time", "N_time", "The number of samples $N_t$ in the time domain. If None, the length of b is used for FIR filters and 100 for IIR filters."], [167, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [167, 4, 2, "p-filter", "filter", "The filter definition."], [167, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [167, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.group_delay": [[168, 4, 2, "p-N", "N", "The number of samples $N$ in the frequency response."], [168, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [168, 4, 2, "p-filter", "filter", "The filter definition."], [168, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [168, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [168, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.impulse_response": [[169, 4, 2, "p-N", "N", "The number of samples $N$ to plot. If None, the length of b is used for FIR filters and 100 for IIR filters."], [169, 4, 2, "p-filter", "filter", "The filter definition."], [169, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."]], "sdr.plot.magnitude_response": [[170, 4, 2, "p-N", "N", "The number of samples $N$ in the frequency response."], [170, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [170, 4, 2, "p-filter", "filter", "The filter definition."], [170, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [170, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [170, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.periodogram": [[171, 4, 2, "p-average", "average", "The type of averaging to use. Options are to average the periodograms using the mean or median."], [171, 4, 2, "p-detrend", "detrend", "The type of detrending to apply. Options are to remove the mean or a linear trend from each segment."], [171, 4, 2, "p-fft", "fft", "The number of points to use in the FFT. If None, the FFT length is set to length."], [171, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [171, 4, 2, "p-length", "length", "The length of each segment in samples. If None, the length is set to 256."], [171, 4, 2, "p-overlap", "overlap", "The number of samples to overlap between segments. If None, the overlap is set to length // 2."], [171, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s."], [171, 4, 2, "p-window", "window", "The windowing function to use. This can be a string or a vector of length length."], [171, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."], [171, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.phase_delay": [[172, 4, 2, "p-N", "N", "The number of samples $N$ in the phase delay."], [172, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [172, 4, 2, "p-filter", "filter", "The filter definition."], [172, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [172, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [172, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.phase_response": [[173, 4, 2, "p-N", "N", "The number of samples $N$ in the phase response."], [173, 4, 2, "p-decades", "decades", "The number of decades to plot when x_axis=\"log\"."], [173, 4, 2, "p-filter", "filter", "The filter definition."], [173, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [173, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the filter in samples/s."], [173, 4, 2, "p-unwrap", "unwrap", "Indicates whether to unwrap the phase response."], [173, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum, a two-sided spectrum, or one-sided spectrum with a logarithmic frequency axis."]], "sdr.plot.raster": [[174, 4, 2, "p-color", "color", "Indicates how to color the rasters. If \"index\", the rasters are colored based on their index. If a valid Matplotlib color, the rasters are all colored with that color."], [174, 4, 2, "p-colorbar", "colorbar", "Indicates whether to add a colorbar to the plot."], [174, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.collections.LineCollection. The following keyword arguments are set by default. The defaults may be overwritten."], [174, 4, 2, "p-length", "length", "The length of each raster in samples."], [174, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If None, the x-axis will be labeled as \"Samples\"."], [174, 4, 2, "p-stride", "stride", "The stride between each raster in samples. If None, the stride is set to length."], [174, 4, 2, "p-x", "x", "The time-domain signal $x[n]$. If x is complex, the real and imaginary rasters are interleaved. Time order is preserved."]], "sdr.plot.ser": [[175, 4, 2, "p-esn0", "esn0", "The symbol energy $E_s$ to noise PSD $N_0$ ratio (dB)."], [175, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.semilogy()."], [175, 4, 2, "p-ser", "ser", "The symbol error rate $P_{se}$."]], "sdr.plot.spectrogram": [[176, 4, 2, "p-detrend", "detrend", "The type of detrending to apply. Options are to remove the mean or a linear trend from each segment."], [176, 4, 2, "p-fft", "fft", "The number of points to use in the FFT. If None, the FFT length is set to length."], [176, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.pcolormesh(). The following keyword arguments are set by default. The defaults may be overwritten."], [176, 4, 2, "p-length", "length", "The length of each segment in samples. If None, the length is set to 256."], [176, 4, 2, "p-overlap", "overlap", "The number of samples to overlap between segments. If None, the overlap is set to length // 2."], [176, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If the sample rate is 1, the x-axis will be label as \"Samples\" and the y-axis as \"Normalized Frequency\"."], [176, 4, 2, "p-window", "window", "The windowing function to use. This can be a string or a vector of length length."], [176, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."], [176, 4, 2, "p-x_axis", "x_axis", "The x-axis scaling. Options are to display a one-sided spectrum or two-sided spectrum."]], "sdr.plot.step_response": [[177, 4, 2, "p-N", "N", "The number of samples $N$ to plot. If None, the length of b is used for FIR filters and 100 for IIR filters."], [177, 4, 2, "p-filter", "filter", "The filter definition."], [177, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."]], "sdr.plot.symbol_map": [[178, 4, 2, "p-annotate", "annotate", "If True, the symbols are annotated with their index. If \"bin\", the symbols are annotated with their binary representation."], [178, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot(). The following keyword arguments are set by default. The defaults may be overwritten."], [178, 4, 2, "p-limits", "limits", "The axis limits, which apply to both the x- and y-axis. If None, the axis limits are set to 50% larger than the maximum value."], [178, 4, 2, "p-symbol_map", "symbol_map", "The complex symbols $hat{x}[k]$."]], "sdr.plot.time_domain": [[179, 4, 2, "p-centered", "centered", "Indicates whether to center the x-axis about 0. This argument is mutually exclusive with offset."], [179, 4, 2, "p-diff", "diff", "Indicates how to differentiate the real and imaginary parts of a complex signal. If \"color\", the real and imaginary parts will have different colors based on the current Matplotlib color cycle. If \"line\", the real part will have a solid line and the imaginary part will have a dashed line, and both lines will share the same color."], [179, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."], [179, 4, 2, "p-offset", "offset", "The x-axis offset to apply to the first sample. The units of the offset are $1/f_s$. This argument is mutually exclusive with centered."], [179, 4, 2, "p-sample_rate", "sample_rate", "The sample rate $f_s$ of the signal in samples/s. If None, the x-axis will be labeled as \"Samples\"."], [179, 4, 2, "p-x", "x", "The time-domain signal $x[n]$."]], "sdr.plot.zeros_poles": [[181, 4, 2, "p-filter", "filter", "The filter definition."], [181, 4, 2, "p-kwargs", "kwargs", "Additional keyword arguments to pass to matplotlib.pyplot.plot()."]], "sdr.polyphase_matrix": [[182, 4, 2, "p-P", "P", "The interpolation rate $P$."], [182, 4, 2, "p-Q", "Q", "The decimation rate $Q$."], [182, 4, 2, "p-taps", "taps", "The multirate FIR filter taps $h_i$."]], "sdr.raised_cosine": [[183, 4, 2, "p-alpha", "alpha", "The excess bandwidth $0 le alpha le 1$ of the filter."], [183, 4, 2, "p-span", "span", "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."], [183, 4, 2, "p-sps", "sps", "The number of samples per symbol."]], "sdr.rms_voltage": [[184, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to measure."]], "sdr.root_raised_cosine": [[185, 4, 2, "p-alpha", "alpha", "The excess bandwidth $0 le alpha le 1$ of the filter."], [185, 4, 2, "p-span", "span", "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."], [185, 4, 2, "p-sps", "sps", "The number of samples per symbol."]], "sdr.sample_rate_offset": [[186, 4, 2, "p-ppm", "ppm", "The sample rate offset $f_{s,text{new}} / f_s$ in parts per million (ppm)."], [186, 4, 2, "p-x", "x", "The time-domain signal $x[n]$ to which the sample rate offset is applied."]], "sdr.snr_to_ebn0": [[187, 4, 2, "p-bps", "bps", "Bits per symbol $log_2 M$, where $M$ is the modulation order."], [187, 4, 2, "p-rate", "rate", "Code rate $r = k/n$, where $k$ is the number of information bits and $n$ is the number of coded bits."], [187, 4, 2, "p-snr", "snr", "Signal-to-noise ratio $S/N$ in dB."], [187, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.snr_to_esn0": [[188, 4, 2, "p-snr", "snr", "Signal-to-noise ratio $S/N$ in dB."], [188, 4, 2, "p-sps", "sps", "Samples per symbol $f_s / f_{sym}$."]], "sdr.to_complex_bb": [[189, 4, 2, "p-x_r", "x_r", "The real passband signal $x_r[n]$ centered at $f_{s,r}/4$ with sample rate $f_{s,r}$. If the length is odd, one zero is appended to the end."]], "sdr.to_real_pb": [[190, 4, 2, "p-x_c", "x_c", "The complex baseband signal $x_c[n]$ centered at $0$ with sample rate $f_{s,c}$."]], "sdr.unpack": [[191, 4, 2, "p-bpe", "bpe", "The number of bits per element in the input array."], [191, 4, 2, "p-dtype", "dtype", "The data type of the output array. If None, numpy.uint8 is used."], [191, 4, 2, "p-x", "x", "The input array with bpe bits per element."]], "sdr.zadoff_chu": [[192, 4, 2, "p-length", "length", "The length $N$ of the Zadoff-Chu sequence."], [192, 4, 2, "p-root", "root", "The root $0 < u < N$ of the Zadoff-Chu sequence. The root must be relatively prime to the length, i.e., $gcd(u, N) = 1$."], [192, 4, 2, "p-shift", "shift", "The shift $q in mathbb{Z}$ of the Zadoff-Chu sequence. When $q ne 0$, the returned sequence is a cyclic shift of the root-$u$ Zadoff-Chu sequence."]]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:property", "3": "py:method", "4": "py:parameter", "5": "py:function"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "property", "Python property"], "3": ["py", "method", "Python method"], "4": ["py", "parameter", "Python parameter"], "5": ["py", "function", "Python function"]}, "titleterms": {"convers": 0, "decibel": 0, "from": [0, 197, 198, 199], "e_b": 0, "n_0": 0, "e_": 0, "": [0, 201, 202], "n": [0, 200, 201, 202], "data": 1, "manipul": [1, 2], "digit": [2, 202], "signal": [2, 194, 200, 203], "process": 2, "filter": [2, 6, 201, 202, 204], "multir": 2, "resampl": [2, 200], "correl": 2, "link": 3, "budget": 3, "channel": [3, 194], "capac": 3, "path": 3, "loss": 3, "antenna": 3, "measur": 4, "energi": 4, "power": [4, 203], "voltag": 4, "modul": [4, 5, 6], "class": 5, "puls": [5, 203, 206], "shape": [5, 203, 206], "symbol": [5, 205], "map": [5, 205], "encod": 5, "plot": [6, 203], "configur": [6, 198, 199], "time": [6, 203, 204], "domain": [6, 203, 204], "frequenc": [6, 201, 202, 203, 204], "spectral": 6, "estim": 6, "analysi": 6, "probabl": 7, "note": [8, 158, 170, 171, 176], "constructor": [8, 25, 31, 41, 48, 65, 72, 91, 101, 110, 118], "method": [8, 25, 31, 41, 48, 65, 72, 91, 101, 110, 118], "properti": [8, 25, 31, 48, 65, 72, 91, 101, 110, 118], "see": [25, 41, 43, 56, 57, 58, 62, 80, 81, 83, 88, 110, 120, 126, 128, 129, 139, 160], "also": [25, 41, 43, 56, 57, 58, 62, 80, 81, 83, 88, 110, 120, 126, 128, 129, 139, 160], "special": [25, 31, 48, 65, 72, 91, 101, 110], "string": [31, 48, 72, 91], "represent": [31, 48, 72, 91], "stream": [31, 48, 72, 91], "mode": [31, 48, 72, 91], "onli": [31, 48, 72, 91], "sequenc": 193, "simul": 194, "model": 194, "impair": 194, "synchron": 195, "document": 196, "instal": [196, 197, 198, 199, 207], "build": 196, "doc": 196, "serv": 196, "pypi": 197, "github": 197, "edit": 197, "local": 197, "folder": 197, "dev": 197, "depend": 197, "linter": 198, "run": [198, 199], "command": [198, 199], "line": [198, 199], "v": [198, 199], "code": [198, 199], "unit": 199, "test": 199, "farrow": 200, "arbitrari": 200, "construct": 200, "an": [200, 201, 202], "input": 200, "x": 200, "t_": 200, "rate": [200, 205], "r": 200, "y": 200, "frac": 200, "upsampl": 200, "integ": 200, "downsampl": 200, "irrat": 200, "fir": 201, "creat": [201, 202], "examin": [201, 202, 203], "impuls": [201, 202], "respons": [201, 202, 204], "h": [201, 202], "step": [201, 202, 204], "omega": [201, 202], "group": [201, 202], "delai": [201, 202], "tau_g": [201, 202], "fulli": [201, 202], "analyz": [201, 202, 204], "iir": 202, "zero": 202, "pole": 202, "stabil": 202, "peak": 203, "averag": 203, "qpsk": [203, 205], "variou": 203, "across": [203, 204], "excess": 203, "bandwidth": 203, "phase": [204, 205], "lock": 204, "loop": 204, "design": 204, "proport": 204, "plu": 204, "integr": 204, "ppi": 204, "implement": 204, "pll": 204, "close": 204, "perform": 204, "compar": 204, "zeta": 204, "b_n": 204, "t": 204, "shift": 205, "kei": 205, "constel": 205, "bpsk": 205, "8": 205, "psk": 205, "16": 205, "error": 205, "curv": 205, "bit": 205, "rais": 206, "cosin": 206, "squar": 206, "root": 206, "gaussian": 206, "sdr": 207, "featur": 207, "v0": 208, "0": 208, "5": 208, "chang": 208, "contributor": 208, "4": 208, "3": 208, "2": 208, "1": 208, "version": 209, "alpha": 209, "releas": 209, "beta": 209}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "sphinx_last_updated_by_git": 1, "sphinx": 57}, "alltitles": {"Conversions": [[0, "conversions"]], "Decibels": [[0, "decibels"]], "From E_b/N_0": [[0, "from-e-b-n-0"]], "From E_s/N_0": [[0, "from-e-s-n-0"]], "From S/N": [[0, "from-s-n"]], "Data manipulation": [[1, "data-manipulation"]], "Digital signal processing": [[2, "digital-signal-processing"]], "Filtering": [[2, "filtering"]], "Multirate filtering": [[2, "multirate-filtering"]], "Resampling": [[2, "resampling"]], "Correlation": [[2, "correlation"]], "Signal manipulation": [[2, "signal-manipulation"]], "Link budgets": [[3, "link-budgets"]], "Channel capacity": [[3, "channel-capacity"]], "Path losses": [[3, "path-losses"]], "Antennas": [[3, "antennas"]], "Measurement": [[4, "measurement"]], "Energy": [[4, "energy"]], "Power": [[4, "power"]], "Voltage": [[4, "voltage"]], "Modulation": [[4, "modulation"], [5, "modulation"], [6, "modulation"]], "Classes": [[5, "classes"]], "Pulse shaping": [[5, "pulse-shaping"]], "Symbol mapping": [[5, "symbol-mapping"], [205, "symbol-mapping"]], "Symbol encoding": [[5, "symbol-encoding"]], "Plotting": [[6, "plotting"]], "Configuration": [[6, "configuration"], [198, "configuration"], [199, "configuration"]], "Time-domain": [[6, "time-domain"]], "Frequency-domain": [[6, "frequency-domain"]], "Spectral estimation": [[6, "spectral-estimation"]], "Filter analysis": [[6, "filter-analysis"]], "Probability": [[7, "probability"]], "Note": [[8, null], [158, null], [170, null], [171, null], [171, null], [176, null]], "Constructors": [[8, "constructors"], [25, "constructors"], [31, "constructors"], [41, "constructors"], [48, "constructors"], [65, "constructors"], [72, "constructors"], [91, "constructors"], [101, "constructors"], [110, "constructors"], [118, "constructors"]], "Methods": [[8, "methods"], [25, "methods"], [31, "methods"], [41, "methods"], [48, "methods"], [65, "methods"], [72, "methods"], [91, "methods"], [101, "methods"], [110, "methods"], [118, "methods"]], "Properties": [[8, "properties"], [25, "properties"], [31, "properties"], [48, "properties"], [65, "properties"], [72, "properties"], [91, "properties"], [101, "properties"], [110, "properties"], [118, "properties"]], "See also": [[25, null], [41, null], [43, null], [56, null], [57, null], [58, null], [62, null], [80, null], [81, null], [83, null], [88, null], [110, null], [120, null], [126, null], [128, null], [129, null], [139, null], [160, null]], "Special methods": [[25, "special-methods"], [31, "special-methods"], [48, "special-methods"], [65, "special-methods"], [72, "special-methods"], [91, "special-methods"], [101, "special-methods"], [110, "special-methods"]], "String representation": [[31, "string-representation"], [48, "string-representation"], [72, "string-representation"], [91, "string-representation"]], "Streaming mode only": [[31, "streaming-mode-only"], [48, "streaming-mode-only"], [72, "streaming-mode-only"], [91, "streaming-mode-only"]], "Sequences": [[193, "sequences"]], "Simulation": [[194, "simulation"]], "Channel models": [[194, "channel-models"]], "Signal impairments": [[194, "signal-impairments"]], "Synchronization": [[195, "synchronization"]], "Documentation": [[196, "documentation"]], "Install": [[196, "install"], [198, "install"], [199, "install"]], "Build the docs": [[196, "build-the-docs"]], "Serve the docs": [[196, "serve-the-docs"]], "Installation": [[197, "installation"], [207, "installation"]], "Install from PyPI": [[197, "install-from-pypi"]], "Install from GitHub": [[197, "install-from-github"]], "Editable install from local folder": [[197, "editable-install-from-local-folder"]], "Install the dev dependencies": [[197, "install-the-dev-dependencies"]], "Linter": [[198, "linter"]], "Run from the command line": [[198, "run-from-the-command-line"], [199, "run-from-the-command-line"]], "Run from VS Code": [[198, "run-from-vs-code"], [199, "run-from-vs-code"]], "Unit Tests": [[199, "unit-tests"]], "Farrow arbitrary resampler": [[200, "farrow-arbitrary-resampler"]], "Construct an input signal, x[n] = x(n T_s)": [[200, "construct-an-input-signal-x-n-x-n-t-s"]], "Resample the input signal with rate r, y[n] = x(n \\frac{T_s}{r})": [[200, "resample-the-input-signal-with-rate-r-y-n-x-n-frac-t-s-r"]], "Upsample the signal by an integer rate": [[200, "upsample-the-signal-by-an-integer-rate"]], "Downsample the signal by an integer rate": [[200, "downsample-the-signal-by-an-integer-rate"]], "Upsample by an irrational rate": [[200, "upsample-by-an-irrational-rate"]], "Downsample by an irrational rate": [[200, "downsample-by-an-irrational-rate"]], "FIR filters": [[201, "fir-filters"]], "Create an FIR filter": [[201, "create-an-fir-filter"]], "Examine the impulse response, h[n]": [[201, "examine-the-impulse-response-h-n"], [202, "examine-the-impulse-response-h-n"]], "Examine the step response, s[n]": [[201, "examine-the-step-response-s-n"], [202, "examine-the-step-response-s-n"]], "Examine the frequency response, H(\\omega)": [[201, "examine-the-frequency-response-h-omega"], [202, "examine-the-frequency-response-h-omega"]], "Examine the group delay, \\tau_g(\\omega)": [[201, "examine-the-group-delay-tau-g-omega"], [202, "examine-the-group-delay-tau-g-omega"]], "Fully analyze a FIR filter": [[201, "fully-analyze-a-fir-filter"]], "IIR filters": [[202, "iir-filters"]], "Create an IIR filter": [[202, "create-an-iir-filter"]], "Examine the zeros and poles": [[202, "examine-the-zeros-and-poles"]], "Fully analyze an IIR filter": [[202, "fully-analyze-an-iir-filter"]], "Poles and digital filter stability": [[202, "poles-and-digital-filter-stability"]], "Peak-to-average power": [[203, "peak-to-average-power"]], "QPSK signal with various pulse shapes": [[203, "qpsk-signal-with-various-pulse-shapes"]], "Examine time domain": [[203, "examine-time-domain"]], "Examine frequency domain": [[203, "examine-frequency-domain"]], "Plot across excess bandwidth": [[203, "plot-across-excess-bandwidth"]], "Phase-locked loops": [[204, "phase-locked-loops"]], "Design a proportional-plus-integrator (PPI) loop filter": [[204, "design-a-proportional-plus-integrator-ppi-loop-filter"]], "Implement a PLL in the phase domain": [[204, "implement-a-pll-in-the-phase-domain"]], "Implement a PLL in the time domain": [[204, "implement-a-pll-in-the-time-domain"]], "Analyze PLL closed-loop performance": [[204, "analyze-pll-closed-loop-performance"]], "Compare step and frequency response across \\zeta": [[204, "compare-step-and-frequency-response-across-zeta"]], "Compare step and frequency response across B_n T": [[204, "compare-step-and-frequency-response-across-b-n-t"]], "Compare lock time across B_n T": [[204, "compare-lock-time-across-b-n-t"]], "Phase-shift keying": [[205, "phase-shift-keying"]], "Constellations": [[205, "constellations"]], "BPSK": [[205, "bpsk"]], "QPSK": [[205, "qpsk"]], "8-PSK": [[205, "id1"]], "16-PSK": [[205, "id2"]], "Error rate curves": [[205, "error-rate-curves"]], "Bit error rate curves": [[205, "bit-error-rate-curves"]], "Symbol error rate curves": [[205, "symbol-error-rate-curves"]], "Pulse shapes": [[206, "pulse-shapes"]], "Raised cosine": [[206, "raised-cosine"]], "Square-root raised cosine": [[206, "square-root-raised-cosine"]], "Gaussian": [[206, "gaussian"]], "sdr": [[207, "sdr"]], "Features": [[207, "features"]], "v0.0": [[208, "v0-0"]], "v0.0.5": [[208, "v0-0-5"]], "Changes": [[208, "changes"], [208, "id1"], [208, "id3"], [208, "id5"], [208, "id7"]], "Contributors": [[208, "contributors"], [208, "id2"], [208, "id4"], [208, "id6"], [208, "id8"]], "v0.0.4": [[208, "v0-0-4"]], "v0.0.3": [[208, "v0-0-3"]], "v0.0.2": [[208, "v0-0-2"]], "v0.0.1": [[208, "v0-0-1"]], "Versioning": [[209, "versioning"]], "Alpha releases": [[209, "alpha-releases"]], "Beta releases": [[209, "beta-releases"]]}, "indexentries": {"module": [[2, "module-sdr"]], "sdr": [[2, "module-sdr"]]}, "docurls": ["api/conversions/", "api/data-manipulation/", "api/dsp/", "api/link-budgets/", "api/measurement/", "api/modulation/", "api/plotting/", "api/probability/", "api/sdr.ClosedLoopPLL/", "api/sdr.ClosedLoopPLL.Bn/", "api/sdr.ClosedLoopPLL.BnT/", "api/sdr.ClosedLoopPLL.K0/", "api/sdr.ClosedLoopPLL.K1/", "api/sdr.ClosedLoopPLL.K2/", "api/sdr.ClosedLoopPLL.Kp/", "api/sdr.ClosedLoopPLL.__init__/", "api/sdr.ClosedLoopPLL.frequency_lock_time/", "api/sdr.ClosedLoopPLL.iir/", "api/sdr.ClosedLoopPLL.lock_time/", "api/sdr.ClosedLoopPLL.omega_3dB/", "api/sdr.ClosedLoopPLL.omega_n/", "api/sdr.ClosedLoopPLL.phase_error_variance/", "api/sdr.ClosedLoopPLL.phase_lock_time/", "api/sdr.ClosedLoopPLL.sample_rate/", "api/sdr.ClosedLoopPLL.zeta/", "api/sdr.DDS/", "api/sdr.DDS.__call__/", "api/sdr.DDS.__init__/", "api/sdr.DDS.nco/", "api/sdr.DDS.reset/", "api/sdr.DDS.step/", "api/sdr.Decimator/", "api/sdr.Decimator.__call__/", "api/sdr.Decimator.__init__/", "api/sdr.Decimator.__repr__/", "api/sdr.Decimator.__str__/", "api/sdr.Decimator.method/", "api/sdr.Decimator.polyphase_taps/", "api/sdr.Decimator.rate/", "api/sdr.Decimator.reset/", "api/sdr.Decimator.taps/", "api/sdr.ErrorRate/", "api/sdr.ErrorRate.__init__/", "api/sdr.ErrorRate.add/", "api/sdr.ErrorRate.counts/", "api/sdr.ErrorRate.error_rate/", "api/sdr.ErrorRate.error_rates/", "api/sdr.ErrorRate.errors/", "api/sdr.FIR/", "api/sdr.FIR.__call__/", "api/sdr.FIR.__init__/", "api/sdr.FIR.__len__/", "api/sdr.FIR.__repr__/", "api/sdr.FIR.__str__/", "api/sdr.FIR.delay/", "api/sdr.FIR.flush/", "api/sdr.FIR.frequency_response/", "api/sdr.FIR.frequency_response_log/", "api/sdr.FIR.impulse_response/", "api/sdr.FIR.order/", "api/sdr.FIR.reset/", "api/sdr.FIR.state/", "api/sdr.FIR.step_response/", "api/sdr.FIR.streaming/", "api/sdr.FIR.taps/", "api/sdr.FarrowResampler/", "api/sdr.FarrowResampler.__call__/", "api/sdr.FarrowResampler.__init__/", "api/sdr.FarrowResampler.order/", "api/sdr.FarrowResampler.reset/", "api/sdr.FarrowResampler.streaming/", "api/sdr.FarrowResampler.taps/", "api/sdr.IIR/", "api/sdr.IIR.ZerosPoles/", "api/sdr.IIR.__call__/", "api/sdr.IIR.__init__/", "api/sdr.IIR.__repr__/", "api/sdr.IIR.__str__/", "api/sdr.IIR.a_taps/", "api/sdr.IIR.b_taps/", "api/sdr.IIR.frequency_response/", "api/sdr.IIR.frequency_response_log/", "api/sdr.IIR.gain/", "api/sdr.IIR.impulse_response/", "api/sdr.IIR.order/", "api/sdr.IIR.poles/", "api/sdr.IIR.reset/", "api/sdr.IIR.state/", "api/sdr.IIR.step_response/", "api/sdr.IIR.streaming/", "api/sdr.IIR.zeros/", "api/sdr.Interpolator/", "api/sdr.Interpolator.__call__/", "api/sdr.Interpolator.__init__/", "api/sdr.Interpolator.__repr__/", "api/sdr.Interpolator.__str__/", "api/sdr.Interpolator.method/", "api/sdr.Interpolator.polyphase_taps/", "api/sdr.Interpolator.rate/", "api/sdr.Interpolator.reset/", "api/sdr.Interpolator.taps/", "api/sdr.LoopFilter/", "api/sdr.LoopFilter.K1/", "api/sdr.LoopFilter.K2/", "api/sdr.LoopFilter.__call__/", "api/sdr.LoopFilter.__init__/", "api/sdr.LoopFilter.damping_factor/", "api/sdr.LoopFilter.iir/", "api/sdr.LoopFilter.noise_bandwidth/", "api/sdr.LoopFilter.reset/", "api/sdr.NCO/", "api/sdr.NCO.K0/", "api/sdr.NCO.__call__/", "api/sdr.NCO.__init__/", "api/sdr.NCO.increment/", "api/sdr.NCO.offset/", "api/sdr.NCO.reset/", "api/sdr.NCO.step/", "api/sdr.PSK/", "api/sdr.PSK.__init__/", "api/sdr.PSK.ber/", "api/sdr.PSK.bps/", "api/sdr.PSK.demodulate/", "api/sdr.PSK.modulate/", "api/sdr.PSK.order/", "api/sdr.PSK.phase_offset/", "api/sdr.PSK.ser/", "api/sdr.PSK.symbol_map/", "api/sdr.Q/", "api/sdr.Qinv/", "api/sdr.average_power/", "api/sdr.awgn/", "api/sdr.awgn_capacity/", "api/sdr.barker/", "api/sdr.bec/", "api/sdr.bec_capacity/", "api/sdr.binary_code/", "api/sdr.bsc/", "api/sdr.bsc_capacity/", "api/sdr.crest_factor/", "api/sdr.db/", "api/sdr.diff_decode/", "api/sdr.diff_encode/", "api/sdr.dmc/", "api/sdr.ebn0_to_esn0/", "api/sdr.ebn0_to_snr/", "api/sdr.energy/", "api/sdr.esn0_to_ebn0/", "api/sdr.esn0_to_snr/", "api/sdr.evm/", "api/sdr.frequency_offset/", "api/sdr.fspl/", "api/sdr.gaussian/", "api/sdr.gray_code/", "api/sdr.hexdump/", "api/sdr.iq_imbalance/", "api/sdr.linear/", "api/sdr.mix/", "api/sdr.multirate_taps/", "api/sdr.pack/", "api/sdr.papr/", "api/sdr.parabolic_antenna/", "api/sdr.peak_power/", "api/sdr.peak_voltage/", "api/sdr.plot.ber/", "api/sdr.plot.constellation/", "api/sdr.plot.eye/", "api/sdr.plot.filter/", "api/sdr.plot.group_delay/", "api/sdr.plot.impulse_response/", "api/sdr.plot.magnitude_response/", "api/sdr.plot.periodogram/", "api/sdr.plot.phase_delay/", "api/sdr.plot.phase_response/", "api/sdr.plot.raster/", "api/sdr.plot.ser/", "api/sdr.plot.spectrogram/", "api/sdr.plot.step_response/", "api/sdr.plot.symbol_map/", "api/sdr.plot.time_domain/", "api/sdr.plot.use_style/", "api/sdr.plot.zeros_poles/", "api/sdr.polyphase_matrix/", "api/sdr.raised_cosine/", "api/sdr.rms_voltage/", "api/sdr.root_raised_cosine/", "api/sdr.sample_rate_offset/", "api/sdr.snr_to_ebn0/", "api/sdr.snr_to_esn0/", "api/sdr.to_complex_bb/", "api/sdr.to_real_pb/", "api/sdr.unpack/", "api/sdr.zadoff_chu/", "api/sequences/", "api/simulation/", "api/synchronization/", "development/documentation/", "development/installation/", "development/linter/", "development/unit-tests/", "examples/farrow-resampler/", "examples/fir-filters/", "examples/iir-filters/", "examples/peak-to-average-power/", "examples/phase-locked-loop/", "examples/psk/", "examples/pulse-shapes/", "", "release-notes/v0.0/", "release-notes/versioning/"]})
\ No newline at end of file