M-PSK simulation — Matlab and Python BER curves for higher-order phase shift keying

Digital Modulations 101 — 5 lessons (same on every page in this path) 1. BPSK → 2. QPSK → 3. M-PSK sim (you are here) → 4. QAM sim → 5. EVM Tools: BER vs Eb/N0 · EVM → SNR · Eb/N0 ↔ SNR Also on the Matlab → Python path (lesson 4 of 4): … Read more

BPSK BER on Rayleigh fading vs AWGN — why flat fading costs SNR

Fading & Diversity — 6 lessons (same on every page in this path) 1. Rayleigh BER (you are here) → 2. Clarke’s model → 3. Young’s model → 4. SIMO models → 5. Selection combining → 6. MRC Tools: BER vs Eb/N0 · 3GPP TDL · CDL / Doppler Lesson 1 of 6. See the … Read more

Clarke’s Rayleigh fading model — sum-of-sinusoids simulation

Fading & Diversity — 6 lessons (same on every page in this path) 1. Rayleigh BER → 2. Clarke’s model (you are here) → 3. Young’s model → 4. SIMO models → 5. Selection combining → 6. MRC Tools: BER vs Eb/N0 · 3GPP TDL · CDL / Doppler Lesson 2 of 6. You saw … Read more

Correlative Coding – Modified Duobinary Signaling

Modified duobinary is the partial-response cousin of duobinary that puts a spectral null at DC. It correlates symbols two baud intervals apart, so the controlled ISI sits on the alternate sample rather than the neighbour. The Nyquist zero-ISI condition is relaxed to The minus sign at lag \(2T\) is what opens the null at DC. … Read more

Correlative coding – Duobinary Signaling

The condition for zero ISI (Inter Symbol Interference) is which states that when sampling a particular symbol (at time instant nT=0), the effect of all other symbols on the current sampled symbol is zero. As discussed in the previous article, one of the practical ways to mitigate ISI is to use partial response signaling technique … Read more

Walsh Hadamard Code – Matlab Simulation

Walsh–Hadamard codes of length \(N = 2^k\) are the rows of the Sylvester Hadamard matrix. Mapped to \(\pm 1\) they are mutually orthogonal. The listing builds that matrix, checks the Gram matrix, and plots the periodic cross-correlation of the first row against the others. Python Matlab The original Matlab helper is unchanged in spirit. bitand(codeSize,codeSize-1)==0 … Read more

Understand Moving Average Filter with Python & Matlab

This post contains interactive python code which you can execute in the browser itself. The moving average filter is a simple Low Pass FIR (Finite Impulse Response) filter commonly used for smoothing an array of sampled data/signal. It takes \(L\) samples of input at a time and takes the average of those \(L\)-samples and produces … Read more

Random Interleaver

Random Interleaver: The Random Interleaver rearranges the elements of its input vector using a random permutation. The incoming data is rearranged using a series of generated permuter indices. A permuter is essentially a device that generates pseudo-random permutation of given memory addresses. The data is arranged according to the pseudo-random order of memory addresses. The … Read more