fmri_wiener
Description
FMRI_WIENER Wiener deconvolution: estimate neural signal from BOLD response. Estimates the underlying neural activity time series from an observed BOLD signal using Wiener deconvolution. The method works in the frequency domain: it divides the BOLD spectrum by the HRF spectrum while applying a regulariser (the noise term) to suppress amplification of noise at frequencies where the HRF has low power.
Usage
neural = fmri_wiener(bold, hrf, noise_level)
Inputs
BOLD: Observed BOLD time series (N x 1). Will be mean-centred.
HRF: Haemodynamic response function sampled at the same rate as BOLD (M x 1). Does not need to be the same length as BOLD; it will be zero-padded to match. A canonical HRF can be generated with fmri_doublegamma.
NOISE_LEVEL: Regularisation strength: noise power relative to BOLD amplitude. Typical range: 0.05 to 0.20. Default: 0.1
Outputs
NEURAL: Estimated neural time series (N x 1), same length as BOLD.
Examples
% Generate canonical HRF at TR = 2s
t = 0:2:32;
hrf = fmri_doublegamma(t);
% Deconvolve BOLD signal from one voxel
bold_ts = data(voxel_idx, :)';
neural = fmri_wiener(bold_ts, hrf', 0.1);
Notes
Results are sensitive to the noise_level parameter. Too low: noisy output.
Too high: over-smoothed, response is blurred. Values of 0.05-0.20 are
typically reasonable for standard fMRI data.
References
Wiener, N. (1949). Extrapolation, Interpolation, and Smoothing of Stationary Time Series. MIT Press.
See Also
fmri_doublegamma
fmri_corregressor
fmri_detrend