Filtering Noise: The Basics (Part 1)
How do you pull signals out of random noise? This post builds intuition from first principles for discrete-time white Gaussian noise and shows how simple linear FIR filtering (averaging) reduces noise. You’ll get derivations for the output mean, variance and autocorrelation, learn why the uniform moving-average minimizes noise under a unity-DC constraint, and why its sinc spectrum can be problematic. Part 1 of a short series.
A Markov View of the Phase Vocoder Part 2
This post builds a Markov-chain transition graph to guide phase vocoder time-frequency decisions, using spectral correlation data from a Bach violin sonata. It shows how FFT size and the time-stretch factor alpha change bin-to-bin correlations, proposes an inverse-square plus log-boundary probability model for transitions, and demonstrates practical limits and implementation choices with accompanying MATLAB code.
A Markov View of the Phase Vocoder Part 1
The phase vocoder is reframed here as a Markov process, letting simple statistics reveal how sinusoidal energy migrates across frequency bins. The author shows how per-bin amplitude-difference correlations produce a data-driven transition picture, and provides MATLAB code and practical gating strategies to make those estimates robust. The results explain common phase-vocoder heuristics and point toward improved, structure-aware time-frequency processing.
Polar Coding Notes: Channel Combining and Channel Splitting
Lyons Zhang walks through the core algebra of polar coding, showing how channel combining builds the vector channel W_N from N copies of a binary-input DMC using the polar transform G_N = B_N F^{⊗n}. The notes then define channel splitting, derive the coordinate-channel transition probabilities from the chain rule, and present the recursive formulas that let you compute W_{2N}^{(2i-1)} and W_{2N}^{(2i)} from W_N^{(i)}.
Maximum Likelihood Estimation
Any observation has some degree of noise content that makes our observations uncertain. When we try to make conclusions based on noisy observations, we have to separate the dynamics of a signal from noise.
Bayes meets Fourier
Bayes filters and Fourier transforms turn out to have a neat symmetry: prediction uses convolution, while measurement update uses multiplication. In this post, Allen Downey shows how the characteristic function ties Bayes filtering to the Fourier domain, then uses that connection to sketch an FFT-based implementation that can speed up the predict-update cycle. If you like Bayesian estimation and signal processing, this is a satisfying crossover.
Engineering the Statistics
Statistical analysis can get messy fast when theory and MATLAB simulations refuse to agree. This post shares a graduate student’s hard-earned shortcuts for taming random variables, from deriving a CDF or moments to using Gaussian or Gamma approximations, and falling back on Chernoff bounds when the exact PDF stays out of reach.
Filtering Noise: The Basics (Part 1)
How do you pull signals out of random noise? This post builds intuition from first principles for discrete-time white Gaussian noise and shows how simple linear FIR filtering (averaging) reduces noise. You’ll get derivations for the output mean, variance and autocorrelation, learn why the uniform moving-average minimizes noise under a unity-DC constraint, and why its sinc spectrum can be problematic. Part 1 of a short series.
Engineering the Statistics
Statistical analysis can get messy fast when theory and MATLAB simulations refuse to agree. This post shares a graduate student’s hard-earned shortcuts for taming random variables, from deriving a CDF or moments to using Gaussian or Gamma approximations, and falling back on Chernoff bounds when the exact PDF stays out of reach.
Bayes meets Fourier
Bayes filters and Fourier transforms turn out to have a neat symmetry: prediction uses convolution, while measurement update uses multiplication. In this post, Allen Downey shows how the characteristic function ties Bayes filtering to the Fourier domain, then uses that connection to sketch an FFT-based implementation that can speed up the predict-update cycle. If you like Bayesian estimation and signal processing, this is a satisfying crossover.
Polar Coding Notes: Channel Combining and Channel Splitting
Lyons Zhang walks through the core algebra of polar coding, showing how channel combining builds the vector channel W_N from N copies of a binary-input DMC using the polar transform G_N = B_N F^{⊗n}. The notes then define channel splitting, derive the coordinate-channel transition probabilities from the chain rule, and present the recursive formulas that let you compute W_{2N}^{(2i-1)} and W_{2N}^{(2i)} from W_N^{(i)}.
Maximum Likelihood Estimation
Any observation has some degree of noise content that makes our observations uncertain. When we try to make conclusions based on noisy observations, we have to separate the dynamics of a signal from noise.
A Markov View of the Phase Vocoder Part 2
This post builds a Markov-chain transition graph to guide phase vocoder time-frequency decisions, using spectral correlation data from a Bach violin sonata. It shows how FFT size and the time-stretch factor alpha change bin-to-bin correlations, proposes an inverse-square plus log-boundary probability model for transitions, and demonstrates practical limits and implementation choices with accompanying MATLAB code.
A Markov View of the Phase Vocoder Part 1
The phase vocoder is reframed here as a Markov process, letting simple statistics reveal how sinusoidal energy migrates across frequency bins. The author shows how per-bin amplitude-difference correlations produce a data-driven transition picture, and provides MATLAB code and practical gating strategies to make those estimates robust. The results explain common phase-vocoder heuristics and point toward improved, structure-aware time-frequency processing.
Filtering Noise: The Basics (Part 1)
How do you pull signals out of random noise? This post builds intuition from first principles for discrete-time white Gaussian noise and shows how simple linear FIR filtering (averaging) reduces noise. You’ll get derivations for the output mean, variance and autocorrelation, learn why the uniform moving-average minimizes noise under a unity-DC constraint, and why its sinc spectrum can be problematic. Part 1 of a short series.
Bayes meets Fourier
Bayes filters and Fourier transforms turn out to have a neat symmetry: prediction uses convolution, while measurement update uses multiplication. In this post, Allen Downey shows how the characteristic function ties Bayes filtering to the Fourier domain, then uses that connection to sketch an FFT-based implementation that can speed up the predict-update cycle. If you like Bayesian estimation and signal processing, this is a satisfying crossover.
Polar Coding Notes: Channel Combining and Channel Splitting
Lyons Zhang walks through the core algebra of polar coding, showing how channel combining builds the vector channel W_N from N copies of a binary-input DMC using the polar transform G_N = B_N F^{⊗n}. The notes then define channel splitting, derive the coordinate-channel transition probabilities from the chain rule, and present the recursive formulas that let you compute W_{2N}^{(2i-1)} and W_{2N}^{(2i)} from W_N^{(i)}.
Engineering the Statistics
Statistical analysis can get messy fast when theory and MATLAB simulations refuse to agree. This post shares a graduate student’s hard-earned shortcuts for taming random variables, from deriving a CDF or moments to using Gaussian or Gamma approximations, and falling back on Chernoff bounds when the exact PDF stays out of reach.
A Markov View of the Phase Vocoder Part 1
The phase vocoder is reframed here as a Markov process, letting simple statistics reveal how sinusoidal energy migrates across frequency bins. The author shows how per-bin amplitude-difference correlations produce a data-driven transition picture, and provides MATLAB code and practical gating strategies to make those estimates robust. The results explain common phase-vocoder heuristics and point toward improved, structure-aware time-frequency processing.
Maximum Likelihood Estimation
Any observation has some degree of noise content that makes our observations uncertain. When we try to make conclusions based on noisy observations, we have to separate the dynamics of a signal from noise.
A Markov View of the Phase Vocoder Part 2
This post builds a Markov-chain transition graph to guide phase vocoder time-frequency decisions, using spectral correlation data from a Bach violin sonata. It shows how FFT size and the time-stretch factor alpha change bin-to-bin correlations, proposes an inverse-square plus log-boundary probability model for transitions, and demonstrates practical limits and implementation choices with accompanying MATLAB code.












