Why one channel lies
In Vol I you learned that a scalp electrode does not record 'its' patch of cortex. Because of volume conduction, the potential at every EEG channel is a smeared, attenuated sum of many sources, near and far. Formally the sensor vector is a linear instantaneous mixture of a smaller set of source time courses.
\mathbf{x}(t) = \mathbf{A}\,\mathbf{s}(t) + \mathbf{n}(t)The forward mixing model: C measured channels x(t) are the mixing matrix A times the source activities s(t), plus noise.
Each electrode picks up a blend of many brain sources smeared by volume conduction — so no single channel is 'one brain area'. The recordings are a mixing matrix times the true sources plus noise; spatial filtering exists to undo this blend.
- \mathbf{x}(t)
- The measured channels at time t.
- \mathbf{A}
- The mixing matrix — how sources spread onto the sensors.
- \mathbf{s}(t)
- The true underlying source activities.
- \mathbf{n}(t)
- Additive noise.
Each column of \mathbf{A} is the scalp footprint of one source. Because these footprints overlap, no single channel isolates a source — and the choice of reference electrode further smears things, which is exactly the re-referencing problem. The cure is not a better electrode; it is a better combination of electrodes.
A spatial filter is a row vector
y(t) = \mathbf{w}^{\top}\mathbf{x}(t) = \sum_{i=1}^{C} w_i\, x_i(t)A spatial filter w collapses C channels into one virtual channel y(t) by a weighted sum at each instant.
A spatial filter is just a set of channel weights: multiply each channel by its weight and sum, and you get one 'virtual channel' that emphasizes the pattern you care about. Almost every method here is really about choosing those weights well.
- \mathbf{w}
- The filter weights — one per channel.
- \mathbf{x}(t)
- The channel vector at instant t.
- y(t)
- The resulting virtual-channel output.
- \sum_i w_i x_i(t)
- The weighted sum across channels.
That single dot product is the entire idea of this track. A spatial filter \mathbf{w} builds one virtual sensor as a weighted sum of channels; a whole matrix \mathbf{W} builds a bank of them. Everything ahead — CSP, ICA, beamformers — is just a different principle for choosing \mathbf{W}: maximize class difference, maximize independence, or minimize output power under a constraint.
Pattern versus filter: the interpretation trap
The single most common error in the literature is reading a filter's weights as a brain map. A filter row of \mathbf{W} tells you how to extract a component; a pattern column of \mathbf{A} tells you how that component projects back onto the scalp. Only the pattern is neurophysiologically interpretable. This is the pattern-versus-filter distinction, and confusing them can invert a source's apparent location.
\mathbf{a} = \frac{\Sigma_{x}\,\mathbf{w}}{\mathbf{w}^{\top}\Sigma_{x}\,\mathbf{w}}The Haufe transform recovers the interpretable activation pattern a from a filter w and the data covariance — always plot this, not w.
A filter's weights are NOT a brain map — a big weight can just be cancelling noise. To see where the signal actually comes from, convert the filter into its activation pattern using the data covariance. Always plot the pattern, not the raw filter.
- \mathbf{a}
- The interpretable activation pattern.
- \mathbf{w}
- The spatial filter.
- \Sigma_x
- The data covariance matrix.
- \mathbf{w}^{\top}\Sigma_x\mathbf{w}
- The filter output's variance — a scalar normalizer.
Fixed spatial filters you already use
Two workhorses from Vol I are secretly spatial filters with fixed, data-independent weights. The common average reference (CAR) subtracts the mean of all channels; the surface Laplacian subtracts a local neighbourhood average, approximating the current source density and acting as a spatial high-pass that emphasizes focal, superficial sources.
x_i^{\mathrm{CAR}}(t) = x_i(t) - \frac{1}{C}\sum_{j=1}^{C} x_j(t) \qquad x_i^{\mathrm{Lap}}(t) = x_i(t) - \sum_{j\in\mathcal{N}_i} h_{ij}\,x_j(t)CAR (left) and the nearest-neighbour surface Laplacian (right), whose neighbourhood weights h sum to one.
Two simple fixed filters. CAR subtracts the average of all channels to remove signals common to everyone (like reference noise). The surface Laplacian subtracts a local neighbourhood average to sharpen focal activity. Neither needs training.
- x_i^{\mathrm{CAR}}(t)
- The common-average-referenced channel.
- \tfrac{1}{C}\sum_j x_j(t)
- The average over all C channels.
- x_i^{\mathrm{Lap}}(t)
- The surface-Laplacian-filtered channel.
- h_{ij}
- The neighbourhood weights, which sum to one.
Both are just specific rows of a \mathbf{W} you never had to learn. The rest of this track replaces these hand-picked weights with weights estimated from the data itself — which is more powerful and more dangerous.
Covariance is the currency
Almost every data-driven spatial method reduces to operations on the C\times C spatial covariance matrix — a compact summary of how channels co-vary. CSP diagonalizes two of them; ICA whitens one; beamformers invert one. Master its estimation and you master the track.
\hat{\Sigma} = \frac{1}{T-1}\sum_{t=1}^{T} \mathbf{x}(t)\,\mathbf{x}(t)^{\top}The sample spatial covariance over T samples — the single object almost every method below consumes.
The covariance matrix summarizes how every pair of channels varies together — the raw material almost all spatial-filtering methods consume. You estimate it by averaging the outer product of the channel vector with itself over time.
- \hat{\Sigma}
- The estimated spatial covariance matrix.
- \mathbf{x}(t)\,\mathbf{x}(t)^{\top}
- The outer product of the channel vector at each instant.
- T
- The number of samples averaged.
- \tfrac{1}{T-1}
- The unbiased averaging factor.