Generate multiple sequences of correlated random variables

In the previous post, a method for generating two sequences of correlated random variables was discussed. Generation of multiple sequences of correlated random variables, given a correlation matrix is discussed here. Correlation Matrix Correlation matrix defines correlation among N variables. It is a symmetric $latex N \times N $ matrix with the $latex (ij)^{th} $ … Read more

Non-central Chi square distribution

This post contains interactive python code which you can execute in the browser itself. If squares of k independent standard normal random variables are added, it gives rise to central Chi-squared distribution with ‘k’ degrees of freedom. Instead, if squares of k independent normal random variables with non-zero means are added, it gives rise to … Read more

Methods to compute linear convolution

Mathematical details of convolution, its relationship to polynomial multiplication and the application of Toeplitz matrices in computing linear convolution are discussed in the previous article. A short survey of different techniques to compute discrete linear convolution (with Matlab code) is given here. Definition Given an LTI (Linear Time Invariant) system with impulse response \(h[n]\) and … Read more

Cholesky decomposition: Python & Matlab

Cholesky decomposition is an efficient method for inversion of symmetric positive-definite matrices. Let’s demonstrate the method in Python and Matlab. Cholesky factor Any $n \times n$ symmetric positive definite matrix $A $ can be factored as $$A=LL^T $$ where $L$ is $n \times n$ lower triangular matrix. The lower triangular matrix $L$ is often called … Read more

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

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

BPSK modulation and demodulation — constellation, decision rule, and BER intuition

BPSK maps bits to opposite phases; coherent demodulation, decision rule, and links to the Q-function BER formula and interactive calculator.

Fading channel – complex baseband equivalent models

Fading Lab path: Fading models → Young → Clarke SOS → BPSK BER Rayleigh → MRC  Keyfocus: Fading channel models for simulation. Learn how fading channels can be modeled as FIR filters for simplified modulation & detection. Rayleigh/Rician fading. Introduction A fading channel is a wireless communication channel in which the quality of the … Read more