From d535b685c6a47f5abaa2c813be5e7ea187b977c8 Mon Sep 17 00:00:00 2001 From: Vishwaksen Reddy Dhareddy <73452224+vishwaksen-1@users.noreply.github.com> Date: Wed, 25 Feb 2026 10:48:02 +0530 Subject: [PATCH 1/7] Random variables (#136) * "Add real-time packet detection section to detection chapter" * Add full E2E QPSK simulation to Sync chapter * Add Random Variables chapter and improve Detection flowchart --------- Co-authored-by: Marc Lichtman --- _images/gaussian_IQ.png | Bin 0 -> 63027 bytes _images/gaussian_histogram.png | Bin 0 -> 25668 bytes _images/gaussian_transformed.png | Bin 0 -> 57544 bytes conf.py | 1 + content/detection.rst | 48 +-- content/random_variables.rst | 362 ++++++++++++++++++ content/sync.rst | 269 +++++++++++++ figure-generating-scripts/random_variables.py | 69 ++++ 8 files changed, 714 insertions(+), 35 deletions(-) create mode 100644 _images/gaussian_IQ.png create mode 100644 _images/gaussian_histogram.png create mode 100644 _images/gaussian_transformed.png create mode 100644 content/random_variables.rst create mode 100644 figure-generating-scripts/random_variables.py diff --git a/_images/gaussian_IQ.png b/_images/gaussian_IQ.png new file mode 100644 index 0000000000000000000000000000000000000000..74147280a572d6f9e82980fbf1b8c729b7f34716 GIT binary patch literal 63027 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 literal 0 HcmV?d00001 diff --git a/_images/gaussian_transformed.png b/_images/gaussian_transformed.png new file mode 100644 index 0000000000000000000000000000000000000000..3b56ceb4bc4036beecc9df8c893a3a6054d8ecd7 GIT binary patch literal 57544 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 threshold) │ - │ → List of candidate packet start indices │ - └────────────────────┬────────────────────────────────────────┘ - │ - ▼ - ┌─────────────────────────────────────────────────────────────┐ - │ Packet Extraction & Validation │ - │ → Extract samples, pass to demodulator │ - └─────────────────────────────────────────────────────────────┘ +.. mermaid:: + + flowchart TD + + A("Continuous IQ Stream from SDR
(1 MHz sample rate)") + B("Buffer Accumulation
(100k samples = 0.1 sec)") + C("Cross-Correlation with Known Preamble") + D("CFAR Threshold Computation") + E("Peak Detection
(correlation > threshold)") + F("Packet Extraction & Validation") + + A --> B --> C --> D --> E --> F + To avoid missing packets that straddle buffer boundaries, we use an **overlap-save** approach, where each buffer includes the last ``N_preamble`` samples from the previous buffer. This ensures any packet starting near the end of buffer ``i`` will be fully contained in buffer ``i+1``. This requires a small additional computational overhead but we don't want to miss packets just because they straddle buffer boundaries. diff --git a/content/random_variables.rst b/content/random_variables.rst new file mode 100644 index 00000000..0940ef23 --- /dev/null +++ b/content/random_variables.rst @@ -0,0 +1,362 @@ +.. _random-variables-chapter: + +###################################### +Random Variables and Random Processes +###################################### + +In this chapter we introduce the fundamental concepts of random variables and random processes, which are essential for understanding noise, channel effects, and many signal processing techniques in wireless communications. We'll cover probability distributions, expectation, variance, and how random processes evolve over time. These concepts form the mathematical foundation for analyzing noise in the :ref:`noise-chapter` chapter and many other topics throughout SDR and DSP. + +*************************** +What is a Random Variable? +*************************** + +A **random variable** is a mathematical concept that maps outcomes of a random experiment to numerical values. Unlike the deterministic signals we've worked with so far, random variables represent quantities whose values are uncertain until they are observed or measured. + +Think of rolling a six-sided die. Before you roll it, you don't know what number will appear. We can define a random variable :math:`X` that represents the outcome of the roll. The value of :math:`X` is one of {1, 2, 3, 4, 5, 6}, but we don't know which one until we actually roll the die. + +In the context of wireless communications and SDR, random variables are everywhere: + +* The thermal noise in a receiver is modeled as a random variable at each instant in time +* The amplitude of a received signal affected by fading is random +* The phase offset introduced by a channel can be modeled as random +* Even the data bits we transmit can be treated as random variables (if we don't know them ahead of time) + +**Single Sample vs. Many Samples** + +This is a crucial distinction that often causes confusion: + +* A **single realization** or **single sample** of a random variable is just one number—one outcome of the random experiment +* To characterize a random variable (find its average, spread, etc.), we need **many realizations**—many outcomes + +For example, if you call ``np.random.randn()`` in Python without any arguments, it returns a single random number drawn from a Gaussian distribution. That single number tells you almost nothing about the distribution itself. But if you call ``np.random.randn(10000)`` and generate 10,000 samples, you can now estimate properties of the distribution like its mean and variance. + +.. code-block:: python + + import numpy as np + + # Single sample - just one number + x_single = np.random.randn() + print(x_single) # might be 0.534, -1.23, or any other value + + # Many samples - now we can characterize the distribution + x_many = np.random.randn(10000) + print(np.mean(x_many)) # will be close to 0 + print(np.var(x_many)) # will be close to 1 + +Joint Distributions +#################### + +So far we've focused on single random variables. When dealing with two or more random variables simultaneously, we use a **joint distribution**. + +For continuous variables :math:`X` and :math:`Y`, this is described by the **joint PDF**: + +.. math:: + f_{X,Y}(x,y) + +The joint PDF tells us how likely it is for :math:`X` to take value :math:`x` *and* :math:`Y` to take value :math:`y` at the same time. + +From the joint PDF, we can compute: + +* Marginal PDFs (e.g., :math:`f_X(x)` or :math:`f_Y(y)`) +* Expectations such as :math:`E[XY]` +* Covariance and correlation +* Probabilities involving both variables + +For example, the marginal PDF of :math:`X` is obtained by integrating out :math:`Y`: + +.. math:: + f_X(x) = \int_{-\infty}^{\infty} f_{X,Y}(x,y)\,dy + +Joint distributions are the mathematical foundation for understanding dependence, correlation, and independence between random variables. + +*************************** +Probability Distributions +*************************** + +A **probability distribution** describes how likely different values of a random variable are. For a continuous random variable, we use a **probability density function (PDF)**, denoted :math:`f_X(x)`. The PDF tells us the relative likelihood of the random variable taking on different values. + +The most important distribution in SDR and communications is the **Gaussian (Normal) distribution**. A Gaussian random variable :math:`X` with mean :math:`\mu` and variance :math:`\sigma^2` has the PDF: + +.. math:: + f_X(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} + +This is the famous "bell curve" you've likely seen before. The distribution is completely characterized by two parameters: + +* **Mean** :math:`\mu`: the center of the distribution +* **Variance** :math:`\sigma^2`: how spread out the distribution is (standard deviation :math:`\sigma` is the square root of variance) + +In Python, ``np.random.randn()`` generates samples from a **standard Gaussian** distribution with :math:`\mu = 0` and :math:`\sigma^2 = 1`. We can visualize this: + +.. code-block:: python + + import numpy as np + import matplotlib.pyplot as plt + + # Generate 10,000 samples from standard Gaussian + x = np.random.randn(10000) + + # Create histogram to visualize the distribution + plt.hist(x, bins=50, density=True, alpha=0.7, edgecolor='black') + plt.xlabel('Value') + plt.ylabel('Probability Density') + plt.title('Gaussian Distribution (μ=0, σ²=1)') + plt.grid(True) + plt.show() + +.. image:: ../_images/gaussian_histogram.png + :scale: 80% + :align: center + :alt: Histogram of Gaussian distributed samples + +Expectation (Mean) +####################### + +The **expectation** or **expected value** of a random variable, denoted :math:`E[X]` or :math:`\mu`, represents its average value over many realizations. For a continuous random variable with PDF :math:`f_X(x)`, the expectation is: + +.. math:: + E[X] = \int_{-\infty}^{\infty} x \cdot f_X(x) \, dx + +In practice, when we have :math:`N` samples :math:`x_1, x_2, \ldots, x_N` drawn from the distribution, we estimate the expectation using the **sample mean**: + +.. math:: + \hat{\mu} = \frac{1}{N} \sum_{n=1}^{N} x_n + +The expectation is a **linear operator**, which means: + +* :math:`E[aX + b] = aE[X] + b` for constants :math:`a` and :math:`b` +* :math:`E[X + Y] = E[X] + E[Y]` for any two random variables + +This linearity is extremely useful in signal processing! + +Variance and Standard Deviation +################################# + +The **variance** of a random variable, denoted :math:`\text{Var}(X)` or :math:`\sigma^2`, measures how spread out its values are around the mean. It's defined as the expected value of the squared deviation from the mean: + +.. math:: + \text{Var}(X) = E[(X - \mu)^2] = E[X^2] - (E[X])^2 + +When we have :math:`N` samples, we estimate variance using: + +.. math:: + \hat{\sigma}^2 = \frac{1}{N} \sum_{n=1}^{N} (x_n - \hat{\mu})^2 + +The **standard deviation** :math:`\sigma` is simply the square root of variance: :math:`\sigma = \sqrt{\sigma^2}`. + +*Notice the* ^ (hat) *in the above equation at* :math:`\sigma` *and that for sample mean. The hat symbolizes we're estimating the mean/variance. It's not always exactly equal to the true mean/variance, but it gets closer to the true value as we increase the number of samples* + +**Key Property:** If :math:`X` is a random variable with variance :math:`\sigma^2`, then: + +* Scaling: :math:`\text{Var}(aX) = a^2 \text{Var}(X)` +* Shifting: :math:`\text{Var}(X + b) = \text{Var}(X)` (adding a constant doesn't change the spread) + +And consequently for standard deviation :math:`\sigma`: + +* Scaling: :math:`\sigma(aX) = a\sigma(X)` +* Shifting: :math:`\sigma(X+b) = \sigma(X)` + +.. image:: ../_images/gaussian_transformed.png + :scale: 80% + :align: center + :alt: Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) + +Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) + +**Variance and Power** + +In signal processing, for a **zero-mean** signal (mean ~ 0), the variance equals the **average power**. This is why we often use the terms interchangeably: + +.. math:: + P = \text{Var}(X) = E[X^2] \quad \text{(when } E[X] = 0\text{)} + +This relationship is fundamental in analyzing noise power, signal-to-noise ratio (SNR), and link budgets. + +.. code-block:: python + + noise_power = 2.0 + n = np.random.randn(N) * np.sqrt(noise_power) + print(np.var(n)) # will be approximately 2.0 + +Covariance +------------------ + +The **covariance** between two random variables :math:`X` and :math:`Y` is defined as: + +.. math:: + \text{Cov}(X,Y) = E[(X - E[X])(Y - E[Y])] + +An equivalent and often more convenient form is: + +.. math:: + \text{Cov}(X,Y) = E[XY] - E[X]E[Y] + +Covariance measures how two variables vary together: + +* Positive covariance: they tend to increase and decrease together +* Negative covariance: one tends to increase when the other decreases +* Zero covariance: they are uncorrelated + +If both variables are zero-mean, this simplifies to: + +.. math:: + \text{Cov}(X,Y) = E[XY] + +Covariance has units (it is not normalized), which is why we often use the **correlation coefficient** (or simply correlation) in practice: + +.. math:: + \rho_{XY} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} + +This produces a dimensionless value between −1 and +1. + +Variance of a Sum of Variables +############################### + +In signal processing we often deal with sums of random variables, such as a signal plus noise: + +.. math:: + Z = X + Y + +The variance of this sum depends on whether :math:`X` and :math:`Y` are independent (or more generally, correlated). + +In full generality: + +.. math:: + \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + 2\,\text{Cov}(X,Y) + +where :math:`\text{Cov}(X,Y)` is the **covariance** between :math:`X` and :math:`Y`. + +**Independent Case** + +If :math:`X` and :math:`Y` are independent (or simply uncorrelated), then the expression simplifies to: + +.. math:: + \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + +This result is extremely important in communications. For example, if a received signal is: + +.. math:: + R = S + N + +where :math:`S` is the signal and :math:`N` is independent noise, then the total power is just the sum of signal power and noise power. + +This is why SNR calculations are so straightforward. + +*********************************** +Complex Random Variables +*********************************** + +In SDR, we work extensively with **complex-valued signals**, which means we also work with complex random variables. A complex random variable has the form: + +.. math:: + Z = X + jY + +where :math:`X` and :math:`Y` are both real-valued random variables representing the in-phase (I) and quadrature (Q) components. + +**Complex Gaussian Noise** + +The most common complex random variable in wireless communications is **complex Gaussian noise**, where both :math:`X` and :math:`Y` are independent Gaussian random variables with the same variance. + +For example, if :math:`X \sim \mathcal{N}(\alpha_1, \sigma_1^2)` and :math:`Y \sim \mathcal{N}(\alpha_2, \sigma_2^2)` are independent, then the complex random variable :math:`Z = X + jY` has: + +* Mean: :math:`E[Z] = E[X] + jE[Y] = \alpha_1 + j\alpha_2` +* Variance (Power): :math:`\text{Var}(Z) = \text{Var}(X) + \text{Var}(Y) = \sigma_1^2 + \sigma_2^2` + +.. image:: ../_images/gaussian_IQ.png + :scale: 80% + :align: center + +This is why when we create complex Gaussian noise with unit power (variance = 1), we use: + +.. code-block:: python + + N = 10000 + n = (np.random.randn(N) + 1j*np.random.randn(N)) / np.sqrt(2) + print(np.var(n)) # ~ 1 + +The division by :math:`\sqrt{2}` ensures that the total power (sum of I and Q variances) equals 1. + +.. code-block:: python + + # Without normalization: + n_raw = np.random.randn(N) + 1j*np.random.randn(N) + print(np.var(np.real(n_raw))) # ~ 1 + print(np.var(np.imag(n_raw))) # ~ 1 + print(np.var(n_raw)) # ~ 2 (total power) + + # With normalization: + n_norm = n_raw / np.sqrt(2) + print(np.var(n_norm)) # ~ 1 (unit power) + +*********************************** +Random Processes +*********************************** + +So far we've discussed random variables—random values at a single point. A **random process** (also called a **stochastic process**) is a collection of random variables indexed by time: + +.. math:: + X(t) \quad \text{or} \quad X[n] \text{ for discrete time} + +At each time :math:`t`, :math:`X(t)` is a random variable. Think of a random process as a signal that evolves randomly over time. + +Examples in wireless communications: + +* Noise at the receiver: :math:`N(t)` or :math:`N[n]` +* A signal experiencing time-varying fading: :math:`H(t)S(t)` +* Samples from an SDR: each batch is a realization of a random process + +**Stationary Processes** + +A random process is **stationary** if its statistical properties don't change over time. In particular, a **wide-sense stationary (WSS)** process has: + +* Constant mean: :math:`E[X(t)] = \mu` for all :math:`t` +* Autocorrelation that depends only on time difference: :math:`E[X(t)X(t+\tau)]` depends only on :math:`\tau`, not :math:`t` + +Many noise sources in wireless systems are approximately stationary, which simplifies analysis significantly. + +**White Noise** + +**White noise** is a random process where samples at different times are uncorrelated, and the power spectral density is constant across all frequencies. Additive White Gaussian Noise (AWGN) is both: + +* **White**: uncorrelated in time, flat power spectrum +* **Gaussian**: each sample is Gaussian distributed + +When we generate noise in Python using ``np.random.randn(N)``, each of the :math:`N` samples is an independent Gaussian random variable, creating a white noise process. + + +Independence and Correlation +############################# + +Two random variables :math:`X` and :math:`Y` are **independent** if knowing the value of one tells you nothing about the other. Mathematically, their joint PDF factors: + +.. math:: + f_{X,Y}(x,y) = f_X(x) \cdot f_Y(y) + +Independence is a strong condition. A weaker condition is **uncorrelated**, which means: + +.. math:: + E[XY] = E[X]E[Y] + +For Gaussian random variables, uncorrelated implies independent (this is a special property of Gaussians). + +In complex Gaussian noise, the I and Q components are independent: + +.. code-block:: python + + N = 10000 + I = np.random.randn(N) + Q = np.random.randn(N) + + # Check independence via correlation + correlation = np.corrcoef(I, Q)[0, 1] + print(f"Correlation between I and Q: {correlation:.4f}") # ~ 0 + + +*************************** +Further Reading +*************************** + +1. Papoulis, A., & Pillai, S. U. (2002). *Probability, Random Variables, and Stochastic Processes*. McGraw-Hill. +2. Kay, S. M. (2006). *Intuitive Probability and Random Processes using MATLAB®*. Springer. +3. https://en.wikipedia.org/wiki/Random_variable +4. https://en.wikipedia.org/wiki/Normal_distribution +5. https://en.wikipedia.org/wiki/Stochastic_process diff --git a/content/sync.rst b/content/sync.rst index b0ed913e..723e9083 100644 --- a/content/sync.rst +++ b/content/sync.rst @@ -483,3 +483,272 @@ You can think of it as 11 BPSK symbols. We can look at the autocorrelation of t You can see it's 11 (length of the sequence) in the center, and -1 or 0 for all other delays. It works well for finding the start of a frame because it essentially integrates 11 symbols worth of energy in an attempt to create a 1 bit spike in the output of the cross-correlation. In fact, the hardest part of performing start-of-frame detection is figuring out a good threshold. You don't want frames that aren't actually part of your protocol to trigger it. That means in addition to cross-correlation you also have to do some sort of power normalizing, which we won't consider here. In deciding a threshold, you have to make a trade-off between probability of detection and probability of false alarms. Remember that the frame header itself will have information, so some false alarms are OK; you will quickly find it is not actually a frame when you go to decode the header and the CRC inevitably fails (because it wasn't actually a frame). Yet while some false alarms are OK, missing a frame detection altogether is bad. Another sequence with great autocorrelation properties is Zadoff-Chu sequences, which are used in LTE. They have the benefit of being in sets; you can have multiple different sequences that all have good autocorrelation properties, but they won't trigger each other (i.e., also good cross-correlation properties, when you cross-correlate different sequences in the set). Thanks to that feature, different cell towers will be assigned different sequences so that a phone can not only find the start of the frame but also know which tower it is receiving from. + +*********************************************** +Full End-to-End QPSK Communication Example +*********************************************** + +Now that we've learned about time and frequency synchronization, let's put it all together in a complete end-to-end simulation. This example demonstrates a full QPSK communication system that: + +1. Takes an ASCII text message as input +2. Modulates it using QPSK +3. Applies pulse shaping with a raised-cosine filter +4. Simulates a realistic wireless channel (frequency offset, timing delay, and noise) +5. Performs time synchronization using the Mueller & Muller algorithm +6. Performs frequency synchronization using a Costas Loop +7. Demodulates the QPSK symbols +8. Resolves phase ambiguity +9. Decodes the message and calculates Bit Error Rate (BER) + +.. code-block:: python + + import numpy as np + import matplotlib.pyplot as plt + from scipy import signal + + # Step 1: Generate Input Data (ASCII Message) + message = "Hello SDR!" + print(f"Original Message: {message}") + + # Convert ASCII to bits + bits = [] + for char in message: + byte = format(ord(char), '08b') # Convert to 8-bit binary + bits.extend([int(b) for b in byte]) + bits = np.array(bits) + print(f"Total bits: {len(bits)}") + + # Step 2: QPSK Modulation + # Map bits to QPSK symbols: 00->-1-1j, 01->-1+1j, 10->1-1j, 11->1+1j + num_symbols = len(bits) // 2 + symbols = np.zeros(num_symbols, dtype=complex) + + for i in range(num_symbols): + bit_pair = (bits[2*i], bits[2*i+1]) + if bit_pair == (0, 0): + symbols[i] = -1-1j + elif bit_pair == (0, 1): + symbols[i] = -1+1j + elif bit_pair == (1, 0): + symbols[i] = 1-1j + else: # (1, 1) + symbols[i] = 1+1j + + # Normalize to unit power + symbols = symbols / np.sqrt(2) + + # Step 3: Pulse Shaping (Raised Cosine Filter) + sps = 8 # samples per symbol + num_taps = 101 + beta = 0.35 + Ts = sps + t = np.arange(-51, 52) + h = np.sinc(t/Ts) * np.cos(np.pi*beta*t/Ts) / (1 - (2*beta*t/Ts)**2) + + # Upsample symbols + upsampled = np.zeros(len(symbols) * sps, dtype=complex) + upsampled[::sps] = symbols + + # Apply pulse shaping + tx_samples = np.convolve(upsampled, h, mode='same') + + # Step 4: Channel Simulation + # Add frequency offset + fs = 1e6 + fo = 800 # 800 Hz frequency offset + Ts_sample = 1/fs + t_vec = np.arange(len(tx_samples)) * Ts_sample + channel_samples = tx_samples * np.exp(1j*2*np.pi*fo*t_vec) + + # Add fractional delay + delay = 0.4 + N_delay = 21 + n = np.arange(-N_delay//2, N_delay//2) + h_delay = np.sinc(n - delay) + h_delay *= np.hamming(N_delay) + h_delay /= np.sum(h_delay) + channel_samples = np.convolve(channel_samples, h_delay, mode='same') + + # Add AWGN noise + SNR_dB = 15 + signal_power = np.mean(np.abs(channel_samples)**2) + noise_power = signal_power / (10**(SNR_dB/10)) + noise = np.sqrt(noise_power/2) * (np.random.randn(len(channel_samples)) + + 1j*np.random.randn(len(channel_samples))) + rx_samples = channel_samples + noise + + # Step 5: Time Synchronization (Mueller & Muller) + # Interpolate for fractional timing recovery + samples_interpolated = signal.resample_poly(rx_samples, 16, 1) + + mu = 0 + out = np.zeros(len(rx_samples) + 10, dtype=complex) + out_rail = np.zeros(len(rx_samples) + 10, dtype=complex) + i_in = 0 + i_out = 2 + + while i_out < len(rx_samples) and i_in*16+16 < len(samples_interpolated): + out[i_out] = samples_interpolated[i_in*16 + int(mu*16)] + out_rail[i_out] = (np.real(out[i_out])>0)*2-1 + 1j*((np.imag(out[i_out])>0)*2-1) + x = (out_rail[i_out] - out_rail[i_out-2]) * np.conj(out[i_out-1]) + y = (out[i_out] - out[i_out-2]) * np.conj(out_rail[i_out-1]) + mm_val = np.real(y - x) + mu += sps + 0.01*mm_val # Reduced gain for stability + i_in += int(np.floor(mu)) + mu = mu - np.floor(mu) + i_out += 1 + + out = out[2:i_out] + time_synced = out + + # Step 6: Frequency Synchronization (Costas Loop) + N = len(time_synced) + phase = 0 + freq = 0 + alpha = 0.01 # Reduced proportional gain to prevent oscillations + beta = 0.001 # Reduced integral gain + freq_synced = np.zeros(N, dtype=complex) + + for i in range(N): + freq_synced[i] = time_synced[i] * np.exp(-1j*phase) + error = np.real(freq_synced[i]) * np.imag(freq_synced[i]) + + freq += beta * error + phase += freq + alpha * error + + while phase >= 2*np.pi: + phase -= 2*np.pi + while phase < 0: + phase += 2*np.pi + + # Step 7: QPSK Demodulation + # Skip first 35 symbols (allow sync algorithms to fully converge) + skip = min(35, len(freq_synced) // 2) # At least 35 symbols or half the data + demod_symbols = freq_synced[skip:] + + # Try all 4 phase rotations and pick the one with lowest error + best_ber = 1.0 + best_rotation = 0 + best_bits = None + + for phase_rotation in range(4): + # Rotate by 0, π/2, π, 3π/2 + rotation = np.exp(1j * np.pi / 2 * phase_rotation) + rotated_symbols = demod_symbols * rotation + + # Decode QPSK symbols back to bits + test_bits = [] + for sym in rotated_symbols: + I = np.real(sym) + Q = np.imag(sym) + + if I >= 0 and Q >= 0: + test_bits.extend([1, 1]) + elif I < 0 and Q >= 0: + test_bits.extend([0, 1]) + elif I >= 0 and Q < 0: + test_bits.extend([1, 0]) + else: + test_bits.extend([0, 0]) + + test_bits = np.array(test_bits) + if len(test_bits) > len(bits): + test_bits = test_bits[:len(bits)] + elif len(test_bits) < len(bits): + test_bits = np.pad(test_bits, (0, len(bits) - len(test_bits))) + + # Calculate BER for this rotation + ber_test = np.sum(bits != test_bits) / len(bits) + if ber_test < best_ber: + best_ber = ber_test + best_rotation = phase_rotation + best_bits = test_bits + + received_bits = best_bits + print(f"Best phase rotation: {best_rotation * 90}°") + + # Step 8: Decode ASCII and Calculate BER + received_bits = np.array(received_bits) + + # Trim to match original length + if len(received_bits) > len(bits): + received_bits = received_bits[:len(bits)] + elif len(received_bits) < len(bits): + # Pad with zeros if we have fewer bits + received_bits = np.pad(received_bits, (0, len(bits) - len(received_bits))) + + # Calculate BER + bit_errors = np.sum(bits != received_bits) + ber = bit_errors / len(bits) + + # Decode received message + received_message = "" + for i in range(len(received_bits) // 8): + byte_bits = received_bits[i*8:(i+1)*8] + byte_str = ''.join([str(b) for b in byte_bits]) + received_message += chr(int(byte_str, 2)) + + # Step 9: Display Results + print("\n" + "="*50) + print("E2E QPSK Communication System Results") + print("="*50) + print(f"Transmitted Message: {message}") + print(f"Received Message: {received_message}") + print(f"SNR: {SNR_dB} dB") + print(f"Frequency Offset: {fo} Hz") + print(f"Bit Error Rate: {ber:.6f} ({bit_errors}/{len(bits)} bit errors)") + print("="*50) + + # Plot constellation before and after sync + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) + ax1.plot(np.real(rx_samples[::sps]), np.imag(rx_samples[::sps]), '.') + ax1.set_title('Before Synchronization') + ax1.set_xlabel('I') + ax1.set_ylabel('Q') + ax1.grid(True) + ax1.axis('equal') + + ax2.plot(np.real(freq_synced[skip:]), np.imag(freq_synced[skip:]), '.') + ax2.set_title('After Synchronization') + ax2.set_xlabel('I') + ax2.set_ylabel('Q') + ax2.grid(True) + ax2.axis('equal') + + plt.tight_layout() + plt.savefig('sync_e2e_qpsk_constellation.png', dpi=150, bbox_inches='tight') + plt.show() + +When you run this simulation, you should see: + +- The original transmitted message printed to the console +- The received message (which should closely match the original, depending on SNR and channel conditions) +- The Bit Error Rate (BER), showing the ratio of incorrectly received bits +- Two constellation diagrams side-by-side: + + * **Left plot**: The received signal before synchronization, showing the effects of frequency offset, timing errors, and noise. The constellation points will appear rotated and spread out. + * **Right plot**: The signal after both time and frequency synchronization. The QPSK constellation should show four distinct clusters near the ideal symbol locations (±1±j)/√2. + +**Understanding the Results** + +This example demonstrates several important concepts: + +- **Phase Ambiguity**: QPSK (and most modulations) have inherent phase ambiguity. The Costas Loop can lock to any of four possible phase offsets (0°, 90°, 180°, 270°). The code resolves this by trying all four rotations and selecting the one with the lowest BER. + +- **Convergence Time**: The synchronization algorithms need time to converge. That's why we skip the first 35 symbols before demodulation. In a real system, you would use a preamble or training sequence for synchronization. + +- **SNR Impact**: Try adjusting the :code:`SNR_dB` parameter. Lower SNR values will increase the BER, while higher values should result in near-perfect reception. + +- **Frequency Offset**: The :code:`fo` parameter simulates oscillator drift or Doppler shift. Larger offsets make synchronization more challenging. + +**Exercises** + +Try modifying the code to explore different scenarios: + +1. Change the SNR to see how it affects BER (try values from 5 dB to 25 dB) +2. Increase the frequency offset to 2000 Hz or 5000 Hz and observe the impact +3. Modify the message to be longer and see if the BER changes +4. Replace QPSK with BPSK by changing the symbol mapping (you'll need to adjust the demodulator accordingly) +5. Add a plot showing BER vs SNR by running the simulation multiple times + +This simulation ties together all the concepts we've covered in this chapter: pulse shaping, channel effects, timing recovery, and frequency synchronization. It demonstrates that even with impairments like frequency offset, timing errors, and noise, we can successfully recover digital data using the synchronization techniques we've learned. diff --git a/figure-generating-scripts/random_variables.py b/figure-generating-scripts/random_variables.py new file mode 100644 index 00000000..7f458918 --- /dev/null +++ b/figure-generating-scripts/random_variables.py @@ -0,0 +1,69 @@ +import numpy as np +import matplotlib.pyplot as plt + +# Generate 10,000 samples from standard Gaussian +x = np.random.randn(10000) + +# Create histogram to visualize the distribution +plt.hist(x, bins=50, density=True, alpha=0.7, edgecolor='black') +plt.xlabel('Value') +plt.ylabel('Probability Density') +plt.title('Gaussian Distribution (μ=0, σ²=1)') +plt.grid(True) +plt.show() + +# Simulation parameters +N = 10000 + +# Generate standard Gaussian random variables (mean=0, var=1) +x = np.random.randn(N) + +# Create different random variables by scaling and shifting +y1 = x # mean=0, var=1 +y2 = 2 * x # mean=0, var=4 +y3 = x + 3 # mean=3, var=1 +y4 = 0.5 * x - 1 # mean=-1, var=0.25 + +# Verify properties +signals = [y1, y2, y3, y4] +labels = ['y1: x', 'y2: 2x', 'y3: x+3', 'y4: 0.5x-1'] + +for i, (sig, label) in enumerate(zip(signals, labels)): + print(f"{label}") + print(f" Sample mean: {np.mean(sig):.3f}") + print(f" Sample variance: {np.var(sig):.3f}") + print() + +# Plot histograms +fig, axes = plt.subplots(2, 2, figsize=(10, 8)) +axes = axes.flatten() + +for i, (sig, label, ax) in enumerate(zip(signals, labels, axes)): + ax.hist(sig, bins=50, density=True, alpha=0.7, edgecolor='black') + ax.set_title(label) + ax.set_xlabel('Value') + ax.set_ylabel('Density') + ax.grid(True) + +plt.tight_layout() +plt.show() + +# Complex Gaussian noise demonstration +n_complex = (np.random.randn(N) + 1j*np.random.randn(N)) / np.sqrt(2) + +print("Complex Gaussian Noise (unit power):") +print(f" Real part variance: {np.var(np.real(n_complex)):.3f}") +print(f" Imag part variance: {np.var(np.imag(n_complex)):.3f}") +print(f" Total variance: {np.var(n_complex):.3f}") + +# Plot on IQ plane +plt.figure(figsize=(6, 6)) +plt.plot(np.real(n_complex[:1000]), np.imag(n_complex[:1000]), '.', alpha=0.3) +plt.xlabel('In-phase (I)') +plt.ylabel('Quadrature (Q)') +plt.title('Complex Gaussian Noise on IQ Plane') +plt.grid(True) +plt.axis('equal') +plt.xlim([-3, 3]) +plt.ylim([-3, 3]) +plt.show() \ No newline at end of file From 4ba54d19b830ccc03aca18216a6081d688e5d397 Mon Sep 17 00:00:00 2001 From: Marc Lichtman Date: Wed, 25 Feb 2026 00:34:10 -0500 Subject: [PATCH 2/7] cleanups --- _images/detection_realtime.png | Bin 0 -> 292518 bytes _images/detection_realtime.svg | 95912 ---------------- content/detection.rst | 27 +- content/usrp.rst | 2 +- .../detection_realtime.py | 4 +- requirements.txt | 9 +- spelling_wordlist.txt | 3 + 7 files changed, 23 insertions(+), 95934 deletions(-) create mode 100644 _images/detection_realtime.png delete mode 100644 _images/detection_realtime.svg diff --git a/_images/detection_realtime.png b/_images/detection_realtime.png new file mode 100644 index 0000000000000000000000000000000000000000..fd8541a5159503d5ca7a47639428ae19786743c3 GIT binary patch literal 292518 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 z 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 US8e=K6nO{bkb+dgfm0X%1Kt962><{9 literal 0 HcmV?d00001 diff --git a/_images/detection_realtime.svg b/_images/detection_realtime.svg deleted file mode 100644 index cd1c80d9..00000000 --- a/_images/detection_realtime.svg +++ /dev/null @@ -1,95912 +0,0 @@ - - - - - - - - 2026-02-05T20:17:37.262558 - image/svg+xml - - - Matplotlib v3.10.8, https://matplotlib.org/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/content/detection.rst b/content/detection.rst index 5a3b7021..82249c23 100644 --- a/content/detection.rst +++ b/content/detection.rst @@ -433,21 +433,19 @@ To operate in real-time, we will accumulate samples in **buffers** (chunks of, s Implementation ############## + Our detector will follow this workflow: .. mermaid:: - flowchart TD - - A("Continuous IQ Stream from SDR
(1 MHz sample rate)") - B("Buffer Accumulation
(100k samples = 0.1 sec)") - C("Cross-Correlation with Known Preamble") - D("CFAR Threshold Computation") - E("Peak Detection
(correlation > threshold)") - F("Packet Extraction & Validation") - - A --> B --> C --> D --> E --> F - + flowchart TD + A("Continuous IQ Stream from SDR
(1 MHz sample rate)") + B("Buffer Accumulation
(100k samples = 0.1 sec)") + C("Cross-Correlation with Known Preamble") + D("CFAR Threshold Computation") + E("Peak Detection
(correlation > threshold)") + F("Packet Extraction & Validation") + A --> B --> C --> D --> E --> F To avoid missing packets that straddle buffer boundaries, we use an **overlap-save** approach, where each buffer includes the last ``N_preamble`` samples from the previous buffer. This ensures any packet starting near the end of buffer ``i`` will be fully contained in buffer ``i+1``. This requires a small additional computational overhead but we don't want to miss packets just because they straddle buffer boundaries. @@ -803,7 +801,6 @@ Step 7: Visualize Results axes[2].legend() plt.tight_layout() - plt.savefig('../_images/detection_realtime.svg', bbox_inches='tight') plt.show() The visualization should show: @@ -812,9 +809,9 @@ The visualization should show: 2. **Middle plot**: Correlation output with adaptive CFAR threshold tracking the noise floor 3. **Bottom plot**: Detected packets highlighted as peaks above threshold -.. image:: ../_images/detection_realtime.svg - :align: center - :target: ../_images/detection_realtime.svg +.. image:: ../_images/detection_realtime.png + :align: center + :scale: 50 % :alt: Real-time packet detection results Practical Considerations and Tuning diff --git a/content/usrp.rst b/content/usrp.rst index 4b278f45..d3540cf9 100644 --- a/content/usrp.rst +++ b/content/usrp.rst @@ -323,7 +323,7 @@ For debugging sake, you can verify the 10 MHz signal is showing up to the USRP b Phase Coherent Sync of Multiple B210s for MIMO ********************************************** -In order to perform operations like direction of arrival (DOA) and phased array digital beamforming, you typically need all receive channels to be phase coherent, meaning the relative phases between the receive channels stay constant and can be calibrated out. The B200 and B210 USRPs are based on the AD9361 RFIC, which generates the LO internally, there is no way to feed it an external LO, so even if you feed the USRP a 10 MHz reference signal and PPS, that will only allow multiple USRPs to synchronized in frequency and sample clock, not phase, because every time the device turns on or changes frequency, there is a new random phase offset due to the dividers in the VCO/PLL chains, for more information see `this page `_. One method to achieve phase sync is to add hardware that involves taking a calibration signal (either generated by the USRP, or wideband noise source, or tone), splitting it, and feeding it into all receive ports, and performing a quick calibration each time the USRPs are turned on or retuned. Note that changing the gain will also lead to phase shifts, but as long as the B210's are kept at the same gain the phase difference shouldn't change significantly. The `Techtile project `_ has additional information on this topic, including custom images that may allow multiple B210s to retune together so that they maintain sync, although it likely still requires calibration with external hardware each time the radios turn on. +In order to perform operations like direction of arrival (DOA) and phased array digital beamforming, you typically need all receive channels to be phase coherent, meaning the relative phases between the receive channels stay constant and can be calibrated out. The B200 and B210 USRPs are based on the AD9361 RFIC, which generates the LO internally, there is no way to feed it an external LO, so even if you feed the USRP a 10 MHz reference signal and PPS, that will only allow multiple USRPs to synchronized in frequency and sample clock, not phase, because every time the device turns on or changes frequency, there is a new random phase offset due to the dividers in the VCO/PLL chains, for more information see `this page `_. One method to achieve phase sync is to add hardware that involves taking a calibration signal (either generated by the USRP, or wideband noise source, or tone), splitting it, and feeding it into all receive ports, and performing a quick calibration each time the USRPs are turned on or retuned. Note that changing the gain will also lead to phase shifts, but as long as the B210's are kept at the same gain the phase difference shouldn't change significantly. The `Techtile project `_ has additional information on this topic, including custom images that may allow multiple B210s to re-tune together so that they maintain sync, although it likely still requires calibration with external hardware each time the radios turn on. **** GPIO diff --git a/figure-generating-scripts/detection_realtime.py b/figure-generating-scripts/detection_realtime.py index 2b740301..f90adabb 100644 --- a/figure-generating-scripts/detection_realtime.py +++ b/figure-generating-scripts/detection_realtime.py @@ -149,6 +149,6 @@ def generate_packet_stream(preamble, packet_length, num_packets, sample_rate, sn axes[2].legend(fontsize=10) plt.tight_layout() -plt.savefig('../_images/detection_realtime.svg', bbox_inches='tight', dpi=150) -print("Figure saved to ../_images/detection_realtime.svg") +plt.savefig('../_images/detection_realtime.png', bbox_inches='tight', dpi=150) +print("Figure saved to ../_images/detection_realtime.png") plt.show() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index f2c9865e..36ebd0be 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,13 @@ sphinx==4.4.0 sphinxcontrib-tikz==0.4.20 sphinxcontrib-spelling==8.0.0 -docutils==0.17.1 -patreon==0.5.0 -imageio==2.11.0 sphinxcontrib-applehelp==1.0.2 sphinxcontrib-devhelp==1.0.2 sphinxcontrib-htmlhelp==2.0.0 sphinxcontrib-jsmath==1.0.1 sphinxcontrib-qthelp==1.0.3 -sphinxcontrib-serializinghtml==1.1.5 \ No newline at end of file +sphinxcontrib-serializinghtml==1.1.5 +sphinxcontrib-mermaid==2.0.0 +docutils==0.17.1 +patreon==0.5.0 +imageio==2.11.0 \ No newline at end of file diff --git a/spelling_wordlist.txt b/spelling_wordlist.txt index 77311307..5232eeac 100644 --- a/spelling_wordlist.txt +++ b/spelling_wordlist.txt @@ -311,3 +311,6 @@ Neyman detections amidst IoT +Papoulis +Pillai +Springer From 32b3d2049f9840e24b70382704d318f966067686 Mon Sep 17 00:00:00 2001 From: Marc Lichtman Date: Wed, 25 Feb 2026 00:42:52 -0500 Subject: [PATCH 3/7] cleanups --- _images/central_limit_theorem.svg | 329 +++++++++++++-------------- content/noise.rst | 348 +++++++++++++++++++++++++++- content/random_variables.rst | 362 ------------------------------ 3 files changed, 501 insertions(+), 538 deletions(-) delete mode 100644 content/random_variables.rst diff --git a/_images/central_limit_theorem.svg b/_images/central_limit_theorem.svg index 31a3e3f8..b1e4f4be 100644 --- a/_images/central_limit_theorem.svg +++ b/_images/central_limit_theorem.svg @@ -2,20 +2,20 @@ + inkscape:version="1.4 (86a8ad7, 2024-10-11)" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:dc="http://purl.org/dc/elements/1.1/"> @@ -40,13 +40,17 @@ inkscape:window-height="992" id="namedview2198" showgrid="false" - inkscape:zoom="0.64744413" - inkscape:cx="688.7021" - inkscape:cy="387.7892" + inkscape:zoom="0.45781213" + inkscape:cx="556.99703" + inkscape:cy="242.45753" inkscape:window-x="72" - inkscape:window-y="27" + inkscape:window-y="0" inkscape:window-maximized="0" - inkscape:current-layer="svg2196" /> + inkscape:current-layer="svg2196" + inkscape:showpageshadow="2" + inkscape:pagecheckerboard="0" + inkscape:deskcolor="#d1d1d1" + inkscape:document-units="pt" /> @@ -61,7 +65,7 @@ @@ -76,7 +80,7 @@ @@ -89,7 +93,9 @@ helper_size="0" apply_no_weight="true" apply_with_weight="true" - only_selected="false" /> + only_selected="false" + lpeversion="0" + uniform="false" /> - - + - - + + + + + + + + + + + + + + style="stroke-linecap:butt;stroke-linejoin:round" + transform="translate(-10.3,-6.8)"> @@ -2306,7 +2357,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -2315,7 +2366,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -2324,7 +2375,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -2333,14 +2384,15 @@ style="stroke-linecap:butt;stroke-linejoin:round">
+ style="stroke-linecap:butt;stroke-linejoin:round" + transform="translate(-10.3,-6.8)"> @@ -3361,7 +3413,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -3370,7 +3422,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -3379,7 +3431,7 @@ style="stroke-linecap:butt;stroke-linejoin:round">
@@ -3388,14 +3440,15 @@ style="stroke-linecap:butt;stroke-linejoin:round"> + style="stroke-linecap:butt;stroke-linejoin:round" + transform="translate(-10.3,-6.8)"> @@ -6416,7 +6469,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -6425,7 +6478,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -6434,7 +6487,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -6443,14 +6496,15 @@ style="stroke-linecap:butt;stroke-linejoin:round"> + style="stroke-linecap:butt;stroke-linejoin:round" + transform="translate(-10.3,-6.8)"> @@ -8471,7 +8525,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -8480,7 +8534,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -8489,7 +8543,7 @@ style="stroke-linecap:butt;stroke-linejoin:round"> @@ -8498,66 +8552,15 @@ style="stroke-linecap:butt;stroke-linejoin:round"> - - - - - - - - - - - - - - - - + style="stroke-linecap:butt;stroke-linejoin:round" + transform="matrix(1.4778986,0,0,1.4778986,235.14552,335.88139)"> + style="stroke-linecap:butt;stroke-linejoin:round" + transform="matrix(1.4778986,0,0,1.4778986,235.14552,335.88139)"> @@ -9588,7 +9592,7 @@ + + + + + + - - - - - Normal Distribution - + diff --git a/content/noise.rst b/content/noise.rst index 9d9ea1c4..8c7d5da7 100644 --- a/content/noise.rst +++ b/content/noise.rst @@ -4,7 +4,7 @@ Noise and dB ############# -In this chapter we will discuss noise, including how it is modeled and handled in a wireless communications system. Concepts include AWGN, complex noise, and SNR/SINR. We will also introduce decibels (dB) along the way, as it is widely within wireless communications and SDR. +In this chapter we will discuss noise, including how it is modeled and handled in a wireless communications system. Concepts include AWGN, complex noise, and SNR/SINR. We will also introduce decibels (dB) along the way, as it is widely within wireless communications and SDR. Lastly, we take a deeper dive into the fundamental concepts of random variables and random processes, which are essential for understanding noise, channel effects, and many signal processing techniques in wireless communications. We'll cover probability distributions, expectation, variance, and how random processes evolve over time. These concepts form the mathematical foundation for analyzing noise and many other topics throughout SDR and DSP. ************************ Gaussian Noise @@ -262,26 +262,358 @@ Signal-to-Interference-plus-Noise Ratio (SINR) is essentially the same as SNR ex What constitutes interference is based on the application/situation, but typically it is another signal that is interfering with the signal of interest (SOI), and is either overlapping with the SOI in frequency, and/or cannot be filtered out for some reason. -************************* -External Resources -************************* +************************************ +Deeper Dive into Random Variables +************************************ + +A **random variable** is a mathematical concept that maps outcomes of a random experiment to numerical values. Unlike the deterministic signals we've worked with so far, random variables represent quantities whose values are uncertain until they are observed or measured. + +Think of rolling a six-sided die. Before you roll it, you don't know what number will appear. We can define a random variable :math:`X` that represents the outcome of the roll. The value of :math:`X` is one of {1, 2, 3, 4, 5, 6}, but we don't know which one until we actually roll the die. + +In the context of wireless communications and SDR, random variables are everywhere: + +* The thermal noise in a receiver is modeled as a random variable at each instant in time +* The amplitude of a received signal affected by fading is random +* The phase offset introduced by a channel can be modeled as random +* Even the data bits we transmit can be treated as random variables (if we don't know them ahead of time) + +**Single Sample vs. Many Samples** + +This is a crucial distinction that often causes confusion: + +* A **single realization** or **single sample** of a random variable is just one number—one outcome of the random experiment +* To characterize a random variable (find its average, spread, etc.), we need **many realizations**—many outcomes + +For example, if you call ``np.random.randn()`` in Python without any arguments, it returns a single random number drawn from a Gaussian distribution. That single number tells you almost nothing about the distribution itself. But if you call ``np.random.randn(10000)`` and generate 10,000 samples, you can now estimate properties of the distribution like its mean and variance. + +.. code-block:: python + + import numpy as np + + # Single sample - just one number + x_single = np.random.randn() + print(x_single) # might be 0.534, -1.23, or any other value + + # Many samples - now we can characterize the distribution + x_many = np.random.randn(10000) + print(np.mean(x_many)) # will be close to 0 + print(np.var(x_many)) # will be close to 1 + +Joint Distributions +#################### + +So far we've focused on single random variables. When dealing with two or more random variables simultaneously, we use a **joint distribution**. + +For continuous variables :math:`X` and :math:`Y`, this is described by the **joint PDF**: -Further resources about AWGN, SNR, and variance: +.. math:: + f_{X,Y}(x,y) + +The joint PDF tells us how likely it is for :math:`X` to take value :math:`x` *and* :math:`Y` to take value :math:`y` at the same time. + +From the joint PDF, we can compute: + +* Marginal PDFs (e.g., :math:`f_X(x)` or :math:`f_Y(y)`) +* Expectations such as :math:`E[XY]` +* Covariance and correlation +* Probabilities involving both variables + +For example, the marginal PDF of :math:`X` is obtained by integrating out :math:`Y`: -1. https://en.wikipedia.org/wiki/Additive_white_Gaussian_noise -2. https://en.wikipedia.org/wiki/Signal-to-noise_ratio -3. https://en.wikipedia.org/wiki/Variance +.. math:: + f_X(x) = \int_{-\infty}^{\infty} f_{X,Y}(x,y)\,dy +Joint distributions are the mathematical foundation for understanding dependence, correlation, and independence between random variables. +Probability Distributions +######################### +A **probability distribution** describes how likely different values of a random variable are. For a continuous random variable, we use a **probability density function (PDF)**, denoted :math:`f_X(x)`. The PDF tells us the relative likelihood of the random variable taking on different values. +The most important distribution in SDR and communications is the **Gaussian (Normal) distribution**. A Gaussian random variable :math:`X` with mean :math:`\mu` and variance :math:`\sigma^2` has the PDF: +.. math:: + f_X(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} +This is the famous "bell curve" you've likely seen before. The distribution is completely characterized by two parameters: +* **Mean** :math:`\mu`: the center of the distribution +* **Variance** :math:`\sigma^2`: how spread out the distribution is (standard deviation :math:`\sigma` is the square root of variance) +In Python, ``np.random.randn()`` generates samples from a **standard Gaussian** distribution with :math:`\mu = 0` and :math:`\sigma^2 = 1`. We can visualize this: +.. code-block:: python + import numpy as np + import matplotlib.pyplot as plt + + # Generate 10,000 samples from standard Gaussian + x = np.random.randn(10000) + + # Create histogram to visualize the distribution + plt.hist(x, bins=50, density=True, alpha=0.7, edgecolor='black') + plt.xlabel('Value') + plt.ylabel('Probability Density') + plt.title('Gaussian Distribution (μ=0, σ²=1)') + plt.grid(True) + plt.show() + +.. image:: ../_images/gaussian_histogram.png + :scale: 80% + :align: center + :alt: Histogram of Gaussian distributed samples + +Expectation (a.k.a. Mean) +######################### + +The **expectation** or **expected value** of a random variable, denoted :math:`E[X]` or :math:`\mu`, represents its average value over many realizations. For a continuous random variable with PDF :math:`f_X(x)`, the expectation is: + +.. math:: + E[X] = \int_{-\infty}^{\infty} x \cdot f_X(x) \, dx + +In practice, when we have :math:`N` samples :math:`x_1, x_2, \ldots, x_N` drawn from the distribution, we estimate the expectation using the **sample mean**: + +.. math:: + \hat{\mu} = \frac{1}{N} \sum_{n=1}^{N} x_n + +The expectation is a **linear operator**, which means: + +* :math:`E[aX + b] = aE[X] + b` for constants :math:`a` and :math:`b` +* :math:`E[X + Y] = E[X] + E[Y]` for any two random variables + +This linearity is extremely useful in signal processing! + +Variance and Standard Deviation +############################### + +The **variance** of a random variable, denoted :math:`\text{Var}(X)` or :math:`\sigma^2`, measures how spread out its values are around the mean. It's defined as the expected value of the squared deviation from the mean: + +.. math:: + \text{Var}(X) = E[(X - \mu)^2] = E[X^2] - (E[X])^2 + +When we have :math:`N` samples, we estimate variance using: + +.. math:: + \hat{\sigma}^2 = \frac{1}{N} \sum_{n=1}^{N} (x_n - \hat{\mu})^2 + +The **standard deviation** :math:`\sigma` is simply the square root of variance: :math:`\sigma = \sqrt{\sigma^2}`. + +*Notice the* ^ (hat) *in the above equation at* :math:`\sigma` *and that for sample mean. The hat symbolizes we're estimating the mean/variance. It's not always exactly equal to the true mean/variance, but it gets closer to the true value as we increase the number of samples* + +**Key Property:** If :math:`X` is a random variable with variance :math:`\sigma^2`, then: + +* Scaling: :math:`\text{Var}(aX) = a^2 \text{Var}(X)` +* Shifting: :math:`\text{Var}(X + b) = \text{Var}(X)` (adding a constant doesn't change the spread) + +And consequently for standard deviation :math:`\sigma`: + +* Scaling: :math:`\sigma(aX) = a\sigma(X)` +* Shifting: :math:`\sigma(X+b) = \sigma(X)` + +.. image:: ../_images/gaussian_transformed.png + :scale: 80% + :align: center + :alt: Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) + +Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) + +**Variance and Power** + +In signal processing, for a **zero-mean** signal (mean ~ 0), the variance equals the **average power**. This is why we often use the terms interchangeably: + +.. math:: + P = \text{Var}(X) = E[X^2] \quad \text{(when } E[X] = 0\text{)} + +This relationship is fundamental in analyzing noise power, signal-to-noise ratio (SNR), and link budgets. + +.. code-block:: python + + noise_power = 2.0 + n = np.random.randn(N) * np.sqrt(noise_power) + print(np.var(n)) # will be approximately 2.0 + +Covariance +########## + +The **covariance** between two random variables :math:`X` and :math:`Y` is defined as: + +.. math:: + \text{Cov}(X,Y) = E[(X - E[X])(Y - E[Y])] + +An equivalent and often more convenient form is: + +.. math:: + \text{Cov}(X,Y) = E[XY] - E[X]E[Y] +Covariance measures how two variables vary together: +* Positive covariance: they tend to increase and decrease together +* Negative covariance: one tends to increase when the other decreases +* Zero covariance: they are uncorrelated + +If both variables are zero-mean, this simplifies to: + +.. math:: + \text{Cov}(X,Y) = E[XY] + +Covariance has units (it is not normalized), which is why we often use the **correlation coefficient** (or simply correlation) in practice: + +.. math:: + \rho_{XY} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} + +This produces a dimensionless value between −1 and +1. + +Variance of a Sum of Variables +############################### + +In signal processing we often deal with sums of random variables, such as a signal plus noise: + +.. math:: + Z = X + Y + +The variance of this sum depends on whether :math:`X` and :math:`Y` are independent (or more generally, correlated). + +In full generality: + +.. math:: + \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + 2\,\text{Cov}(X,Y) + +where :math:`\text{Cov}(X,Y)` is the **covariance** between :math:`X` and :math:`Y`. + +**Independent Case** + +If :math:`X` and :math:`Y` are independent (or simply uncorrelated), then the expression simplifies to: + +.. math:: + \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + +This result is extremely important in communications. For example, if a received signal is: + +.. math:: + R = S + N + +where :math:`S` is the signal and :math:`N` is independent noise, then the total power is just the sum of signal power and noise power. + +This is why SNR calculations are so straightforward. + +************************ +Complex Random Variables +************************ + +In SDR, we work extensively with **complex-valued signals**, which means we also work with complex random variables. A complex random variable has the form: + +.. math:: + Z = X + jY + +where :math:`X` and :math:`Y` are both real-valued random variables representing the in-phase (I) and quadrature (Q) components. + +**Complex Gaussian Noise** + +The most common complex random variable in wireless communications is **complex Gaussian noise**, where both :math:`X` and :math:`Y` are independent Gaussian random variables with the same variance. + +For example, if :math:`X \sim \mathcal{N}(\alpha_1, \sigma_1^2)` and :math:`Y \sim \mathcal{N}(\alpha_2, \sigma_2^2)` are independent, then the complex random variable :math:`Z = X + jY` has: + +* Mean: :math:`E[Z] = E[X] + jE[Y] = \alpha_1 + j\alpha_2` +* Variance (Power): :math:`\text{Var}(Z) = \text{Var}(X) + \text{Var}(Y) = \sigma_1^2 + \sigma_2^2` + +.. image:: ../_images/gaussian_IQ.png + :scale: 80% + :align: center + +This is why when we create complex Gaussian noise with unit power (variance = 1), we use: + +.. code-block:: python + + N = 10000 + n = (np.random.randn(N) + 1j*np.random.randn(N)) / np.sqrt(2) + print(np.var(n)) # ~ 1 + +The division by :math:`\sqrt{2}` ensures that the total power (sum of I and Q variances) equals 1. + +.. code-block:: python + + # Without normalization: + n_raw = np.random.randn(N) + 1j*np.random.randn(N) + print(np.var(np.real(n_raw))) # ~ 1 + print(np.var(np.imag(n_raw))) # ~ 1 + print(np.var(n_raw)) # ~ 2 (total power) + + # With normalization: + n_norm = n_raw / np.sqrt(2) + print(np.var(n_norm)) # ~ 1 (unit power) + +**************** +Random Processes +**************** + +So far we've discussed random variables—random values at a single point. A **random process** (also called a **stochastic process**) is a collection of random variables indexed by time: + +.. math:: + X(t) \quad \text{or} \quad X[n] \text{ for discrete time} + +At each time :math:`t`, :math:`X(t)` is a random variable. Think of a random process as a signal that evolves randomly over time. + +Examples in wireless communications: + +* Noise at the receiver: :math:`N(t)` or :math:`N[n]` +* A signal experiencing time-varying fading: :math:`H(t)S(t)` +* Samples from an SDR: each batch is a realization of a random process + +**Stationary Processes** + +A random process is **stationary** if its statistical properties don't change over time. In particular, a **wide-sense stationary (WSS)** process has: + +* Constant mean: :math:`E[X(t)] = \mu` for all :math:`t` +* Autocorrelation that depends only on time difference: :math:`E[X(t)X(t+\tau)]` depends only on :math:`\tau`, not :math:`t` + +Many noise sources in wireless systems are approximately stationary, which simplifies analysis significantly. + +**White Noise** + +**White noise** is a random process where samples at different times are uncorrelated, and the power spectral density is constant across all frequencies. Additive White Gaussian Noise (AWGN) is both: + +* **White**: uncorrelated in time, flat power spectrum +* **Gaussian**: each sample is Gaussian distributed + +When we generate noise in Python using ``np.random.randn(N)``, each of the :math:`N` samples is an independent Gaussian random variable, creating a white noise process. + + +Independence and Correlation +############################# + +Two random variables :math:`X` and :math:`Y` are **independent** if knowing the value of one tells you nothing about the other. Mathematically, their joint PDF factors: + +.. math:: + f_{X,Y}(x,y) = f_X(x) \cdot f_Y(y) + +Independence is a strong condition. A weaker condition is **uncorrelated**, which means: + +.. math:: + E[XY] = E[X]E[Y] + +For Gaussian random variables, uncorrelated implies independent (this is a special property of Gaussians). + +In complex Gaussian noise, the I and Q components are independent: + +.. code-block:: python + N = 10000 + I = np.random.randn(N) + Q = np.random.randn(N) + + # Check independence via correlation + correlation = np.corrcoef(I, Q)[0, 1] + print(f"Correlation between I and Q: {correlation:.4f}") # ~ 0 + +*************************** +Further Reading +*************************** + +1. Papoulis, A., & Pillai, S. U. (2002). *Probability, Random Variables, and Stochastic Processes*. McGraw-Hill. +2. Kay, S. M. (2006). *Intuitive Probability and Random Processes using MATLAB®*. Springer. +3. https://en.wikipedia.org/wiki/Random_variable +4. https://en.wikipedia.org/wiki/Normal_distribution +5. https://en.wikipedia.org/wiki/Stochastic_process +6. https://en.wikipedia.org/wiki/Additive_white_Gaussian_noise +7. https://en.wikipedia.org/wiki/Signal-to-noise_ratio diff --git a/content/random_variables.rst b/content/random_variables.rst deleted file mode 100644 index 0940ef23..00000000 --- a/content/random_variables.rst +++ /dev/null @@ -1,362 +0,0 @@ -.. _random-variables-chapter: - -###################################### -Random Variables and Random Processes -###################################### - -In this chapter we introduce the fundamental concepts of random variables and random processes, which are essential for understanding noise, channel effects, and many signal processing techniques in wireless communications. We'll cover probability distributions, expectation, variance, and how random processes evolve over time. These concepts form the mathematical foundation for analyzing noise in the :ref:`noise-chapter` chapter and many other topics throughout SDR and DSP. - -*************************** -What is a Random Variable? -*************************** - -A **random variable** is a mathematical concept that maps outcomes of a random experiment to numerical values. Unlike the deterministic signals we've worked with so far, random variables represent quantities whose values are uncertain until they are observed or measured. - -Think of rolling a six-sided die. Before you roll it, you don't know what number will appear. We can define a random variable :math:`X` that represents the outcome of the roll. The value of :math:`X` is one of {1, 2, 3, 4, 5, 6}, but we don't know which one until we actually roll the die. - -In the context of wireless communications and SDR, random variables are everywhere: - -* The thermal noise in a receiver is modeled as a random variable at each instant in time -* The amplitude of a received signal affected by fading is random -* The phase offset introduced by a channel can be modeled as random -* Even the data bits we transmit can be treated as random variables (if we don't know them ahead of time) - -**Single Sample vs. Many Samples** - -This is a crucial distinction that often causes confusion: - -* A **single realization** or **single sample** of a random variable is just one number—one outcome of the random experiment -* To characterize a random variable (find its average, spread, etc.), we need **many realizations**—many outcomes - -For example, if you call ``np.random.randn()`` in Python without any arguments, it returns a single random number drawn from a Gaussian distribution. That single number tells you almost nothing about the distribution itself. But if you call ``np.random.randn(10000)`` and generate 10,000 samples, you can now estimate properties of the distribution like its mean and variance. - -.. code-block:: python - - import numpy as np - - # Single sample - just one number - x_single = np.random.randn() - print(x_single) # might be 0.534, -1.23, or any other value - - # Many samples - now we can characterize the distribution - x_many = np.random.randn(10000) - print(np.mean(x_many)) # will be close to 0 - print(np.var(x_many)) # will be close to 1 - -Joint Distributions -#################### - -So far we've focused on single random variables. When dealing with two or more random variables simultaneously, we use a **joint distribution**. - -For continuous variables :math:`X` and :math:`Y`, this is described by the **joint PDF**: - -.. math:: - f_{X,Y}(x,y) - -The joint PDF tells us how likely it is for :math:`X` to take value :math:`x` *and* :math:`Y` to take value :math:`y` at the same time. - -From the joint PDF, we can compute: - -* Marginal PDFs (e.g., :math:`f_X(x)` or :math:`f_Y(y)`) -* Expectations such as :math:`E[XY]` -* Covariance and correlation -* Probabilities involving both variables - -For example, the marginal PDF of :math:`X` is obtained by integrating out :math:`Y`: - -.. math:: - f_X(x) = \int_{-\infty}^{\infty} f_{X,Y}(x,y)\,dy - -Joint distributions are the mathematical foundation for understanding dependence, correlation, and independence between random variables. - -*************************** -Probability Distributions -*************************** - -A **probability distribution** describes how likely different values of a random variable are. For a continuous random variable, we use a **probability density function (PDF)**, denoted :math:`f_X(x)`. The PDF tells us the relative likelihood of the random variable taking on different values. - -The most important distribution in SDR and communications is the **Gaussian (Normal) distribution**. A Gaussian random variable :math:`X` with mean :math:`\mu` and variance :math:`\sigma^2` has the PDF: - -.. math:: - f_X(x) = \frac{1}{\sqrt{2\pi\sigma^2}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} - -This is the famous "bell curve" you've likely seen before. The distribution is completely characterized by two parameters: - -* **Mean** :math:`\mu`: the center of the distribution -* **Variance** :math:`\sigma^2`: how spread out the distribution is (standard deviation :math:`\sigma` is the square root of variance) - -In Python, ``np.random.randn()`` generates samples from a **standard Gaussian** distribution with :math:`\mu = 0` and :math:`\sigma^2 = 1`. We can visualize this: - -.. code-block:: python - - import numpy as np - import matplotlib.pyplot as plt - - # Generate 10,000 samples from standard Gaussian - x = np.random.randn(10000) - - # Create histogram to visualize the distribution - plt.hist(x, bins=50, density=True, alpha=0.7, edgecolor='black') - plt.xlabel('Value') - plt.ylabel('Probability Density') - plt.title('Gaussian Distribution (μ=0, σ²=1)') - plt.grid(True) - plt.show() - -.. image:: ../_images/gaussian_histogram.png - :scale: 80% - :align: center - :alt: Histogram of Gaussian distributed samples - -Expectation (Mean) -####################### - -The **expectation** or **expected value** of a random variable, denoted :math:`E[X]` or :math:`\mu`, represents its average value over many realizations. For a continuous random variable with PDF :math:`f_X(x)`, the expectation is: - -.. math:: - E[X] = \int_{-\infty}^{\infty} x \cdot f_X(x) \, dx - -In practice, when we have :math:`N` samples :math:`x_1, x_2, \ldots, x_N` drawn from the distribution, we estimate the expectation using the **sample mean**: - -.. math:: - \hat{\mu} = \frac{1}{N} \sum_{n=1}^{N} x_n - -The expectation is a **linear operator**, which means: - -* :math:`E[aX + b] = aE[X] + b` for constants :math:`a` and :math:`b` -* :math:`E[X + Y] = E[X] + E[Y]` for any two random variables - -This linearity is extremely useful in signal processing! - -Variance and Standard Deviation -################################# - -The **variance** of a random variable, denoted :math:`\text{Var}(X)` or :math:`\sigma^2`, measures how spread out its values are around the mean. It's defined as the expected value of the squared deviation from the mean: - -.. math:: - \text{Var}(X) = E[(X - \mu)^2] = E[X^2] - (E[X])^2 - -When we have :math:`N` samples, we estimate variance using: - -.. math:: - \hat{\sigma}^2 = \frac{1}{N} \sum_{n=1}^{N} (x_n - \hat{\mu})^2 - -The **standard deviation** :math:`\sigma` is simply the square root of variance: :math:`\sigma = \sqrt{\sigma^2}`. - -*Notice the* ^ (hat) *in the above equation at* :math:`\sigma` *and that for sample mean. The hat symbolizes we're estimating the mean/variance. It's not always exactly equal to the true mean/variance, but it gets closer to the true value as we increase the number of samples* - -**Key Property:** If :math:`X` is a random variable with variance :math:`\sigma^2`, then: - -* Scaling: :math:`\text{Var}(aX) = a^2 \text{Var}(X)` -* Shifting: :math:`\text{Var}(X + b) = \text{Var}(X)` (adding a constant doesn't change the spread) - -And consequently for standard deviation :math:`\sigma`: - -* Scaling: :math:`\sigma(aX) = a\sigma(X)` -* Shifting: :math:`\sigma(X+b) = \sigma(X)` - -.. image:: ../_images/gaussian_transformed.png - :scale: 80% - :align: center - :alt: Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) - -Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) - -**Variance and Power** - -In signal processing, for a **zero-mean** signal (mean ~ 0), the variance equals the **average power**. This is why we often use the terms interchangeably: - -.. math:: - P = \text{Var}(X) = E[X^2] \quad \text{(when } E[X] = 0\text{)} - -This relationship is fundamental in analyzing noise power, signal-to-noise ratio (SNR), and link budgets. - -.. code-block:: python - - noise_power = 2.0 - n = np.random.randn(N) * np.sqrt(noise_power) - print(np.var(n)) # will be approximately 2.0 - -Covariance ------------------- - -The **covariance** between two random variables :math:`X` and :math:`Y` is defined as: - -.. math:: - \text{Cov}(X,Y) = E[(X - E[X])(Y - E[Y])] - -An equivalent and often more convenient form is: - -.. math:: - \text{Cov}(X,Y) = E[XY] - E[X]E[Y] - -Covariance measures how two variables vary together: - -* Positive covariance: they tend to increase and decrease together -* Negative covariance: one tends to increase when the other decreases -* Zero covariance: they are uncorrelated - -If both variables are zero-mean, this simplifies to: - -.. math:: - \text{Cov}(X,Y) = E[XY] - -Covariance has units (it is not normalized), which is why we often use the **correlation coefficient** (or simply correlation) in practice: - -.. math:: - \rho_{XY} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} - -This produces a dimensionless value between −1 and +1. - -Variance of a Sum of Variables -############################### - -In signal processing we often deal with sums of random variables, such as a signal plus noise: - -.. math:: - Z = X + Y - -The variance of this sum depends on whether :math:`X` and :math:`Y` are independent (or more generally, correlated). - -In full generality: - -.. math:: - \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) + 2\,\text{Cov}(X,Y) - -where :math:`\text{Cov}(X,Y)` is the **covariance** between :math:`X` and :math:`Y`. - -**Independent Case** - -If :math:`X` and :math:`Y` are independent (or simply uncorrelated), then the expression simplifies to: - -.. math:: - \text{Var}(X + Y) = \text{Var}(X) + \text{Var}(Y) - -This result is extremely important in communications. For example, if a received signal is: - -.. math:: - R = S + N - -where :math:`S` is the signal and :math:`N` is independent noise, then the total power is just the sum of signal power and noise power. - -This is why SNR calculations are so straightforward. - -*********************************** -Complex Random Variables -*********************************** - -In SDR, we work extensively with **complex-valued signals**, which means we also work with complex random variables. A complex random variable has the form: - -.. math:: - Z = X + jY - -where :math:`X` and :math:`Y` are both real-valued random variables representing the in-phase (I) and quadrature (Q) components. - -**Complex Gaussian Noise** - -The most common complex random variable in wireless communications is **complex Gaussian noise**, where both :math:`X` and :math:`Y` are independent Gaussian random variables with the same variance. - -For example, if :math:`X \sim \mathcal{N}(\alpha_1, \sigma_1^2)` and :math:`Y \sim \mathcal{N}(\alpha_2, \sigma_2^2)` are independent, then the complex random variable :math:`Z = X + jY` has: - -* Mean: :math:`E[Z] = E[X] + jE[Y] = \alpha_1 + j\alpha_2` -* Variance (Power): :math:`\text{Var}(Z) = \text{Var}(X) + \text{Var}(Y) = \sigma_1^2 + \sigma_2^2` - -.. image:: ../_images/gaussian_IQ.png - :scale: 80% - :align: center - -This is why when we create complex Gaussian noise with unit power (variance = 1), we use: - -.. code-block:: python - - N = 10000 - n = (np.random.randn(N) + 1j*np.random.randn(N)) / np.sqrt(2) - print(np.var(n)) # ~ 1 - -The division by :math:`\sqrt{2}` ensures that the total power (sum of I and Q variances) equals 1. - -.. code-block:: python - - # Without normalization: - n_raw = np.random.randn(N) + 1j*np.random.randn(N) - print(np.var(np.real(n_raw))) # ~ 1 - print(np.var(np.imag(n_raw))) # ~ 1 - print(np.var(n_raw)) # ~ 2 (total power) - - # With normalization: - n_norm = n_raw / np.sqrt(2) - print(np.var(n_norm)) # ~ 1 (unit power) - -*********************************** -Random Processes -*********************************** - -So far we've discussed random variables—random values at a single point. A **random process** (also called a **stochastic process**) is a collection of random variables indexed by time: - -.. math:: - X(t) \quad \text{or} \quad X[n] \text{ for discrete time} - -At each time :math:`t`, :math:`X(t)` is a random variable. Think of a random process as a signal that evolves randomly over time. - -Examples in wireless communications: - -* Noise at the receiver: :math:`N(t)` or :math:`N[n]` -* A signal experiencing time-varying fading: :math:`H(t)S(t)` -* Samples from an SDR: each batch is a realization of a random process - -**Stationary Processes** - -A random process is **stationary** if its statistical properties don't change over time. In particular, a **wide-sense stationary (WSS)** process has: - -* Constant mean: :math:`E[X(t)] = \mu` for all :math:`t` -* Autocorrelation that depends only on time difference: :math:`E[X(t)X(t+\tau)]` depends only on :math:`\tau`, not :math:`t` - -Many noise sources in wireless systems are approximately stationary, which simplifies analysis significantly. - -**White Noise** - -**White noise** is a random process where samples at different times are uncorrelated, and the power spectral density is constant across all frequencies. Additive White Gaussian Noise (AWGN) is both: - -* **White**: uncorrelated in time, flat power spectrum -* **Gaussian**: each sample is Gaussian distributed - -When we generate noise in Python using ``np.random.randn(N)``, each of the :math:`N` samples is an independent Gaussian random variable, creating a white noise process. - - -Independence and Correlation -############################# - -Two random variables :math:`X` and :math:`Y` are **independent** if knowing the value of one tells you nothing about the other. Mathematically, their joint PDF factors: - -.. math:: - f_{X,Y}(x,y) = f_X(x) \cdot f_Y(y) - -Independence is a strong condition. A weaker condition is **uncorrelated**, which means: - -.. math:: - E[XY] = E[X]E[Y] - -For Gaussian random variables, uncorrelated implies independent (this is a special property of Gaussians). - -In complex Gaussian noise, the I and Q components are independent: - -.. code-block:: python - - N = 10000 - I = np.random.randn(N) - Q = np.random.randn(N) - - # Check independence via correlation - correlation = np.corrcoef(I, Q)[0, 1] - print(f"Correlation between I and Q: {correlation:.4f}") # ~ 0 - - -*************************** -Further Reading -*************************** - -1. Papoulis, A., & Pillai, S. U. (2002). *Probability, Random Variables, and Stochastic Processes*. McGraw-Hill. -2. Kay, S. M. (2006). *Intuitive Probability and Random Processes using MATLAB®*. Springer. -3. https://en.wikipedia.org/wiki/Random_variable -4. https://en.wikipedia.org/wiki/Normal_distribution -5. https://en.wikipedia.org/wiki/Stochastic_process From 34223025f032ce387ac40211ed3fa5fe319a4702 Mon Sep 17 00:00:00 2001 From: Marc Lichtman Date: Wed, 25 Feb 2026 00:58:31 -0500 Subject: [PATCH 4/7] cleanups --- content/noise.rst | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/content/noise.rst b/content/noise.rst index 8c7d5da7..3d34693b 100644 --- a/content/noise.rst +++ b/content/noise.rst @@ -1,8 +1,8 @@ .. _noise-chapter: -############# -Noise and dB -############# +########################## +Noise and Random Variables +########################## In this chapter we will discuss noise, including how it is modeled and handled in a wireless communications system. Concepts include AWGN, complex noise, and SNR/SINR. We will also introduce decibels (dB) along the way, as it is widely within wireless communications and SDR. Lastly, we take a deeper dive into the fundamental concepts of random variables and random processes, which are essential for understanding noise, channel effects, and many signal processing techniques in wireless communications. We'll cover probability distributions, expectation, variance, and how random processes evolve over time. These concepts form the mathematical foundation for analyzing noise and many other topics throughout SDR and DSP. @@ -14,7 +14,8 @@ Most people are aware of the concept of noise: unwanted fluctuations that can ob .. image:: ../_images/noise.png :scale: 70 % - :align: center + :align: center + :target: ../_images/noise.png Note how the average value is zero in the time domain graph. If the average value wasn't zero, then we could subtract the average value, call it a bias, and we would be left with an average of zero. Also note that the individual points in the graph are *not* "uniformly random", i.e., larger values are rarer, most of the points are closer to zero. @@ -52,6 +53,7 @@ To further illustrate the problems of scale we encounter in signal processing, c :scale: 70 % :align: center :alt: Depiction of why it's important to understand dB or decibels, showing a spectrogram using linear vs log scale + :target: ../_images/linear_vs_log.png For a given value x, we can represent x in dB using the following formula: @@ -88,6 +90,7 @@ Some common errors people will run into when new to dB are: .. image:: ../_images/db.png :scale: 80 % :align: center + :target: ../_images/db.png It is also important to understand that dB is not technically a "unit". A value in dB alone is unit-less, like if something is 2x larger, there are no units until I tell you the units. dB is a relative thing. In audio when they say dB, they really mean dBA which is units for sound level (the A is the units). In wireless we typically use watts to refer to an actual power level. Therefore, you may see dBW as a unit, which is relative to 1 W. You may also see dBmW (often written dBm for short) which is relative to 1 mW. For example, someone can say "our transmitter is set to 3 dBW" (so 2 watts). Sometimes we use dB by itself, meaning it is relative and there are no units. One can say, "our signal was received 20 dB above the noise floor". Here's a little tip: 0 dBm = -30 dBW. @@ -133,6 +136,7 @@ In the :ref:`freq-domain-chapter` chapter we tackled "Fourier pairs", i.e., what :scale: 110 % :align: center :alt: AWGN in the time domain is also Gaussian noise in the frequency domain, although it looks like a flat line when you take the magnitude and perform averaging + :target: ../_images/noise_freq.png We can see that it looks roughly the same across all frequencies and is fairly flat. It turns out that Gaussian noise in the time domain is also Gaussian noise in the frequency domain. So why don't the two plots above look the same? It's because the frequency domain plot is showing the magnitude of the FFT, so there will only be positive numbers. Importantly, it's using a log scale, or showing the magnitude in dB. Otherwise these graphs would look the same. We can prove this to ourselves by generating some noise (in the time domain) in Python and then taking the FFT. @@ -157,6 +161,7 @@ Take note that the :code:`randn()` function by default uses mean = 0 and varianc :scale: 100 % :align: center :alt: Example of white noise simulated in Python + :target: ../_images/noise_python.png You can then produce the flat PSD that we had in GNU Radio by taking the log and averaging a bunch together. The signal we generated and took the FFT of was a real signal (versus complex), and the FFT of any real signal will have matching negative and positive portions, so that's why we only saved the positive portion of the FFT output (the 2nd half). But why did we only generate "real" noise, and how do complex signals work into this? @@ -198,6 +203,7 @@ To plot complex noise in the time domain, like any complex signal we need two li :scale: 80 % :align: center :alt: Complex noise simulated in Python + :target: ../_images/noise3.png You can see that the real and imaginary portions are completely independent. @@ -214,6 +220,7 @@ What does complex Gaussian noise look like on an IQ plot? Remember the IQ plot :scale: 60 % :align: center :alt: Complex noise on an IQ or constellation plot, simulated in Python + :target: ../_images/noise_iq.png It looks how we would expect; a random blob centered around 0 + 0j, or the origin. Just for fun, let's try adding noise to a QPSK signal to see what the IQ plot looks like: @@ -221,12 +228,15 @@ It looks how we would expect; a random blob centered around 0 + 0j, or the origi :scale: 60 % :align: center :alt: Noisy QPSK simulated in Python + :target: ../_images/noisey_qpsk.png Now what happens when the noise is stronger? .. image:: ../_images/noisey_qpsk2.png :scale: 50 % :align: center + :alt: Noisy QPSK with stronger noise simulated in Python + :target: ../_images/noisey_qpsk2.png We are starting to get a feel for why transmitting data wirelessly isn't that simple. We want to send as many bits per symbol as we can, but if the noise is too high then we will get erroneous bits on the receiving end. @@ -262,20 +272,18 @@ Signal-to-Interference-plus-Noise Ratio (SINR) is essentially the same as SNR ex What constitutes interference is based on the application/situation, but typically it is another signal that is interfering with the signal of interest (SOI), and is either overlapping with the SOI in frequency, and/or cannot be filtered out for some reason. -************************************ +********************************* Deeper Dive into Random Variables -************************************ - -A **random variable** is a mathematical concept that maps outcomes of a random experiment to numerical values. Unlike the deterministic signals we've worked with so far, random variables represent quantities whose values are uncertain until they are observed or measured. +********************************* -Think of rolling a six-sided die. Before you roll it, you don't know what number will appear. We can define a random variable :math:`X` that represents the outcome of the roll. The value of :math:`X` is one of {1, 2, 3, 4, 5, 6}, but we don't know which one until we actually roll the die. +So far we have avoided getting too mathematical, but now we are going to take a step back and introduce the concept of random variables and how they are used in the context of wireless communications and SDR. A **random variable** is a mathematical concept that maps outcomes of a random experiment to numerical values. Random variables represent quantities whose values are uncertain until they are observed or measured, like our noise samples. Think of rolling a six-sided die. Before you roll it, you don't know what number will appear. We can define a random variable :math:`X` that represents the outcome of the roll. The value of :math:`X` is one of {1, 2, 3, 4, 5, 6}, but we don't know which one until we actually roll the die. In the context of wireless communications and SDR, random variables are everywhere: * The thermal noise in a receiver is modeled as a random variable at each instant in time -* The amplitude of a received signal affected by fading is random -* The phase offset introduced by a channel can be modeled as random -* Even the data bits we transmit can be treated as random variables (if we don't know them ahead of time) +* The amplitude of a received signal affected by multipath fading is random +* The phase offset introduced by a changing channel can be modeled as a random variable between :math:`0` and :math:`2\pi` +* Even the data bits we transmit can be treated as random variables **Single Sample vs. Many Samples** @@ -363,6 +371,7 @@ In Python, ``np.random.randn()`` generates samples from a **standard Gaussian** :scale: 80% :align: center :alt: Histogram of Gaussian distributed samples + :target: ../_images/gaussian_histogram.png Expectation (a.k.a. Mean) ######################### @@ -399,7 +408,7 @@ When we have :math:`N` samples, we estimate variance using: The **standard deviation** :math:`\sigma` is simply the square root of variance: :math:`\sigma = \sqrt{\sigma^2}`. -*Notice the* ^ (hat) *in the above equation at* :math:`\sigma` *and that for sample mean. The hat symbolizes we're estimating the mean/variance. It's not always exactly equal to the true mean/variance, but it gets closer to the true value as we increase the number of samples* +Note the :math:`\enspace \hat{} \enspace` symbol, known as a "hat", in the above equation at :math:`\sigma` and that for sample mean. The hat symbolizes we're estimating the mean/variance. It's not always exactly equal to the true mean/variance, but it gets closer to the true value as we increase the number of samples. **Key Property:** If :math:`X` is a random variable with variance :math:`\sigma^2`, then: @@ -415,6 +424,7 @@ And consequently for standard deviation :math:`\sigma`: :scale: 80% :align: center :alt: Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) + :target: ../_images/gaussian_transformed.png Scaling and shifting the Gaussian Distribution. (notice the scales on x and y axes) @@ -520,6 +530,8 @@ For example, if :math:`X \sim \mathcal{N}(\alpha_1, \sigma_1^2)` and :math:`Y \s .. image:: ../_images/gaussian_IQ.png :scale: 80% :align: center + :alt: Complex Gaussian noise visualized as two independent Gaussian random variables on the I and Q axes + :target: ../_images/gaussian_IQ.png This is why when we create complex Gaussian noise with unit power (variance = 1), we use: From c28f02dfd0e5555414afac471891562f6ac2c91e Mon Sep 17 00:00:00 2001 From: Marc Lichtman Date: Wed, 25 Feb 2026 00:59:03 -0500 Subject: [PATCH 5/7] asd --- content/noise.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/noise.rst b/content/noise.rst index 3d34693b..7dba562c 100644 --- a/content/noise.rst +++ b/content/noise.rst @@ -66,7 +66,7 @@ In Python: x_db = 10.0 * np.log10(x) -You may have seen that :code:`10 *` be a :code:`20 *` in other domains. Whenever you are dealing with a power of some sort, you use 10, and you use 20 if you are dealing with a non-power value like voltage or current. In DSP we tend to deal with a power. In fact there is not a single time in this whole textbook we need to use 20 instead of 10. +You may have seen that :code:`10 *` be a :code:`20 *` in other domains. Whenever you are dealing with a power of some sort, you use 10, and you use 20 if you are dealing with a non-power value like voltage or current. In DSP we tend to deal with a power. We convert from dB back to linear (normal numbers) using: From 62cd1d8adec54573aecfc965f62d4deb925b5064 Mon Sep 17 00:00:00 2001 From: Marc Lichtman Date: Wed, 25 Feb 2026 01:01:09 -0500 Subject: [PATCH 6/7] asd --- content/noise.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/noise.rst b/content/noise.rst index 7dba562c..05c3b89e 100644 --- a/content/noise.rst +++ b/content/noise.rst @@ -4,7 +4,7 @@ Noise and Random Variables ########################## -In this chapter we will discuss noise, including how it is modeled and handled in a wireless communications system. Concepts include AWGN, complex noise, and SNR/SINR. We will also introduce decibels (dB) along the way, as it is widely within wireless communications and SDR. Lastly, we take a deeper dive into the fundamental concepts of random variables and random processes, which are essential for understanding noise, channel effects, and many signal processing techniques in wireless communications. We'll cover probability distributions, expectation, variance, and how random processes evolve over time. These concepts form the mathematical foundation for analyzing noise and many other topics throughout SDR and DSP. +In this chapter we will discuss noise, including how it is modeled and handled in a wireless communications system. Concepts include AWGN, complex noise, and SNR/SINR. We will also introduce decibels (dB) along the way, as it is widely used within wireless communications and SDR. Lastly, we take a deeper dive into the fundamental concepts of random variables and random processes, which are essential for understanding noise, channel effects, and many signal processing techniques in wireless communications. We'll cover probability distributions, expectation, variance, and how random processes evolve over time. These concepts form the mathematical foundation for analyzing noise and many other topics throughout SDR and DSP. ************************ Gaussian Noise @@ -244,7 +244,7 @@ We are starting to get a feel for why transmitting data wirelessly isn't that si AWGN ************************* -Additive White Gaussian Noise (AWGN) is an abbreviation you will hear a lot in the DSP and SDR world. The GN, Gaussian Noise, we already discussed. Additive just means the noise is being added to our received signal. White, in the frequency domain, means the spectrum is flat across our entire observation band. It will almost always be white in practice,or approximately white. In this textbook we will use AWGN as the only form of noise when dealing with communications links and link budgets and such. Non-AWGN noise tends to be a niche topic. +Additive White Gaussian Noise (AWGN) is an abbreviation you will hear a lot in the DSP and SDR world. The GN, Gaussian Noise, we already discussed. Additive just means the noise is being added to our received signal. White, in the frequency domain, means the spectrum is flat across our entire observation band. It will almost always be white in practice, or approximately white. In this textbook we will use AWGN as the only form of noise when dealing with communications links and link budgets and such. Non-AWGN noise tends to be a niche topic. ************************* SNR and SINR From 941cf2a2f35b7ba698b453595d918df0c4088e5f Mon Sep 17 00:00:00 2001 From: Marc Lichtman Date: Wed, 25 Feb 2026 01:06:13 -0500 Subject: [PATCH 7/7] asd --- content/sync.rst | 269 ----------------------------------------------- 1 file changed, 269 deletions(-) diff --git a/content/sync.rst b/content/sync.rst index 723e9083..b0ed913e 100644 --- a/content/sync.rst +++ b/content/sync.rst @@ -483,272 +483,3 @@ You can think of it as 11 BPSK symbols. We can look at the autocorrelation of t You can see it's 11 (length of the sequence) in the center, and -1 or 0 for all other delays. It works well for finding the start of a frame because it essentially integrates 11 symbols worth of energy in an attempt to create a 1 bit spike in the output of the cross-correlation. In fact, the hardest part of performing start-of-frame detection is figuring out a good threshold. You don't want frames that aren't actually part of your protocol to trigger it. That means in addition to cross-correlation you also have to do some sort of power normalizing, which we won't consider here. In deciding a threshold, you have to make a trade-off between probability of detection and probability of false alarms. Remember that the frame header itself will have information, so some false alarms are OK; you will quickly find it is not actually a frame when you go to decode the header and the CRC inevitably fails (because it wasn't actually a frame). Yet while some false alarms are OK, missing a frame detection altogether is bad. Another sequence with great autocorrelation properties is Zadoff-Chu sequences, which are used in LTE. They have the benefit of being in sets; you can have multiple different sequences that all have good autocorrelation properties, but they won't trigger each other (i.e., also good cross-correlation properties, when you cross-correlate different sequences in the set). Thanks to that feature, different cell towers will be assigned different sequences so that a phone can not only find the start of the frame but also know which tower it is receiving from. - -*********************************************** -Full End-to-End QPSK Communication Example -*********************************************** - -Now that we've learned about time and frequency synchronization, let's put it all together in a complete end-to-end simulation. This example demonstrates a full QPSK communication system that: - -1. Takes an ASCII text message as input -2. Modulates it using QPSK -3. Applies pulse shaping with a raised-cosine filter -4. Simulates a realistic wireless channel (frequency offset, timing delay, and noise) -5. Performs time synchronization using the Mueller & Muller algorithm -6. Performs frequency synchronization using a Costas Loop -7. Demodulates the QPSK symbols -8. Resolves phase ambiguity -9. Decodes the message and calculates Bit Error Rate (BER) - -.. code-block:: python - - import numpy as np - import matplotlib.pyplot as plt - from scipy import signal - - # Step 1: Generate Input Data (ASCII Message) - message = "Hello SDR!" - print(f"Original Message: {message}") - - # Convert ASCII to bits - bits = [] - for char in message: - byte = format(ord(char), '08b') # Convert to 8-bit binary - bits.extend([int(b) for b in byte]) - bits = np.array(bits) - print(f"Total bits: {len(bits)}") - - # Step 2: QPSK Modulation - # Map bits to QPSK symbols: 00->-1-1j, 01->-1+1j, 10->1-1j, 11->1+1j - num_symbols = len(bits) // 2 - symbols = np.zeros(num_symbols, dtype=complex) - - for i in range(num_symbols): - bit_pair = (bits[2*i], bits[2*i+1]) - if bit_pair == (0, 0): - symbols[i] = -1-1j - elif bit_pair == (0, 1): - symbols[i] = -1+1j - elif bit_pair == (1, 0): - symbols[i] = 1-1j - else: # (1, 1) - symbols[i] = 1+1j - - # Normalize to unit power - symbols = symbols / np.sqrt(2) - - # Step 3: Pulse Shaping (Raised Cosine Filter) - sps = 8 # samples per symbol - num_taps = 101 - beta = 0.35 - Ts = sps - t = np.arange(-51, 52) - h = np.sinc(t/Ts) * np.cos(np.pi*beta*t/Ts) / (1 - (2*beta*t/Ts)**2) - - # Upsample symbols - upsampled = np.zeros(len(symbols) * sps, dtype=complex) - upsampled[::sps] = symbols - - # Apply pulse shaping - tx_samples = np.convolve(upsampled, h, mode='same') - - # Step 4: Channel Simulation - # Add frequency offset - fs = 1e6 - fo = 800 # 800 Hz frequency offset - Ts_sample = 1/fs - t_vec = np.arange(len(tx_samples)) * Ts_sample - channel_samples = tx_samples * np.exp(1j*2*np.pi*fo*t_vec) - - # Add fractional delay - delay = 0.4 - N_delay = 21 - n = np.arange(-N_delay//2, N_delay//2) - h_delay = np.sinc(n - delay) - h_delay *= np.hamming(N_delay) - h_delay /= np.sum(h_delay) - channel_samples = np.convolve(channel_samples, h_delay, mode='same') - - # Add AWGN noise - SNR_dB = 15 - signal_power = np.mean(np.abs(channel_samples)**2) - noise_power = signal_power / (10**(SNR_dB/10)) - noise = np.sqrt(noise_power/2) * (np.random.randn(len(channel_samples)) + - 1j*np.random.randn(len(channel_samples))) - rx_samples = channel_samples + noise - - # Step 5: Time Synchronization (Mueller & Muller) - # Interpolate for fractional timing recovery - samples_interpolated = signal.resample_poly(rx_samples, 16, 1) - - mu = 0 - out = np.zeros(len(rx_samples) + 10, dtype=complex) - out_rail = np.zeros(len(rx_samples) + 10, dtype=complex) - i_in = 0 - i_out = 2 - - while i_out < len(rx_samples) and i_in*16+16 < len(samples_interpolated): - out[i_out] = samples_interpolated[i_in*16 + int(mu*16)] - out_rail[i_out] = (np.real(out[i_out])>0)*2-1 + 1j*((np.imag(out[i_out])>0)*2-1) - x = (out_rail[i_out] - out_rail[i_out-2]) * np.conj(out[i_out-1]) - y = (out[i_out] - out[i_out-2]) * np.conj(out_rail[i_out-1]) - mm_val = np.real(y - x) - mu += sps + 0.01*mm_val # Reduced gain for stability - i_in += int(np.floor(mu)) - mu = mu - np.floor(mu) - i_out += 1 - - out = out[2:i_out] - time_synced = out - - # Step 6: Frequency Synchronization (Costas Loop) - N = len(time_synced) - phase = 0 - freq = 0 - alpha = 0.01 # Reduced proportional gain to prevent oscillations - beta = 0.001 # Reduced integral gain - freq_synced = np.zeros(N, dtype=complex) - - for i in range(N): - freq_synced[i] = time_synced[i] * np.exp(-1j*phase) - error = np.real(freq_synced[i]) * np.imag(freq_synced[i]) - - freq += beta * error - phase += freq + alpha * error - - while phase >= 2*np.pi: - phase -= 2*np.pi - while phase < 0: - phase += 2*np.pi - - # Step 7: QPSK Demodulation - # Skip first 35 symbols (allow sync algorithms to fully converge) - skip = min(35, len(freq_synced) // 2) # At least 35 symbols or half the data - demod_symbols = freq_synced[skip:] - - # Try all 4 phase rotations and pick the one with lowest error - best_ber = 1.0 - best_rotation = 0 - best_bits = None - - for phase_rotation in range(4): - # Rotate by 0, π/2, π, 3π/2 - rotation = np.exp(1j * np.pi / 2 * phase_rotation) - rotated_symbols = demod_symbols * rotation - - # Decode QPSK symbols back to bits - test_bits = [] - for sym in rotated_symbols: - I = np.real(sym) - Q = np.imag(sym) - - if I >= 0 and Q >= 0: - test_bits.extend([1, 1]) - elif I < 0 and Q >= 0: - test_bits.extend([0, 1]) - elif I >= 0 and Q < 0: - test_bits.extend([1, 0]) - else: - test_bits.extend([0, 0]) - - test_bits = np.array(test_bits) - if len(test_bits) > len(bits): - test_bits = test_bits[:len(bits)] - elif len(test_bits) < len(bits): - test_bits = np.pad(test_bits, (0, len(bits) - len(test_bits))) - - # Calculate BER for this rotation - ber_test = np.sum(bits != test_bits) / len(bits) - if ber_test < best_ber: - best_ber = ber_test - best_rotation = phase_rotation - best_bits = test_bits - - received_bits = best_bits - print(f"Best phase rotation: {best_rotation * 90}°") - - # Step 8: Decode ASCII and Calculate BER - received_bits = np.array(received_bits) - - # Trim to match original length - if len(received_bits) > len(bits): - received_bits = received_bits[:len(bits)] - elif len(received_bits) < len(bits): - # Pad with zeros if we have fewer bits - received_bits = np.pad(received_bits, (0, len(bits) - len(received_bits))) - - # Calculate BER - bit_errors = np.sum(bits != received_bits) - ber = bit_errors / len(bits) - - # Decode received message - received_message = "" - for i in range(len(received_bits) // 8): - byte_bits = received_bits[i*8:(i+1)*8] - byte_str = ''.join([str(b) for b in byte_bits]) - received_message += chr(int(byte_str, 2)) - - # Step 9: Display Results - print("\n" + "="*50) - print("E2E QPSK Communication System Results") - print("="*50) - print(f"Transmitted Message: {message}") - print(f"Received Message: {received_message}") - print(f"SNR: {SNR_dB} dB") - print(f"Frequency Offset: {fo} Hz") - print(f"Bit Error Rate: {ber:.6f} ({bit_errors}/{len(bits)} bit errors)") - print("="*50) - - # Plot constellation before and after sync - fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 4)) - ax1.plot(np.real(rx_samples[::sps]), np.imag(rx_samples[::sps]), '.') - ax1.set_title('Before Synchronization') - ax1.set_xlabel('I') - ax1.set_ylabel('Q') - ax1.grid(True) - ax1.axis('equal') - - ax2.plot(np.real(freq_synced[skip:]), np.imag(freq_synced[skip:]), '.') - ax2.set_title('After Synchronization') - ax2.set_xlabel('I') - ax2.set_ylabel('Q') - ax2.grid(True) - ax2.axis('equal') - - plt.tight_layout() - plt.savefig('sync_e2e_qpsk_constellation.png', dpi=150, bbox_inches='tight') - plt.show() - -When you run this simulation, you should see: - -- The original transmitted message printed to the console -- The received message (which should closely match the original, depending on SNR and channel conditions) -- The Bit Error Rate (BER), showing the ratio of incorrectly received bits -- Two constellation diagrams side-by-side: - - * **Left plot**: The received signal before synchronization, showing the effects of frequency offset, timing errors, and noise. The constellation points will appear rotated and spread out. - * **Right plot**: The signal after both time and frequency synchronization. The QPSK constellation should show four distinct clusters near the ideal symbol locations (±1±j)/√2. - -**Understanding the Results** - -This example demonstrates several important concepts: - -- **Phase Ambiguity**: QPSK (and most modulations) have inherent phase ambiguity. The Costas Loop can lock to any of four possible phase offsets (0°, 90°, 180°, 270°). The code resolves this by trying all four rotations and selecting the one with the lowest BER. - -- **Convergence Time**: The synchronization algorithms need time to converge. That's why we skip the first 35 symbols before demodulation. In a real system, you would use a preamble or training sequence for synchronization. - -- **SNR Impact**: Try adjusting the :code:`SNR_dB` parameter. Lower SNR values will increase the BER, while higher values should result in near-perfect reception. - -- **Frequency Offset**: The :code:`fo` parameter simulates oscillator drift or Doppler shift. Larger offsets make synchronization more challenging. - -**Exercises** - -Try modifying the code to explore different scenarios: - -1. Change the SNR to see how it affects BER (try values from 5 dB to 25 dB) -2. Increase the frequency offset to 2000 Hz or 5000 Hz and observe the impact -3. Modify the message to be longer and see if the BER changes -4. Replace QPSK with BPSK by changing the symbol mapping (you'll need to adjust the demodulator accordingly) -5. Add a plot showing BER vs SNR by running the simulation multiple times - -This simulation ties together all the concepts we've covered in this chapter: pulse shaping, channel effects, timing recovery, and frequency synchronization. It demonstrates that even with impairments like frequency offset, timing errors, and noise, we can successfully recover digital data using the synchronization techniques we've learned.