1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- function [hrf,p] = spm_hrf(RT,P,T)
- % Haemodynamic response function
- % FORMAT [hrf,p] = spm_hrf(RT,p,T)
- % RT - scan repeat time
- % p - parameters of the response function (two Gamma functions)
- %
- % defaults
- % {seconds}
- % p(1) - delay of response (relative to onset) 6
- % p(2) - delay of undershoot (relative to onset) 16
- % p(3) - dispersion of response 1
- % p(4) - dispersion of undershoot 1
- % p(5) - ratio of response to undershoot 6
- % p(6) - onset {seconds} 0
- % p(7) - length of kernel {seconds} 32
- %
- % T - microtime resolution [Default: 16]
- %
- % hrf - haemodynamic response function
- % p - parameters of the response function
- %__________________________________________________________________________
- % Copyright (C) 1996-2015 Wellcome Trust Centre for Neuroimaging
- % Karl Friston
- % $Id: spm_hrf.m 6594 2015-11-06 18:47:05Z guillaume $
- %-Parameters of the response function
- %--------------------------------------------------------------------------
- try
- p = spm_get_defaults('stats.fmri.hrf');
- catch
- p = [6 16 1 1 6 0 32];
- end
- if nargin > 1
- p(1:length(P)) = P;
- end
- %-Microtime resolution
- %--------------------------------------------------------------------------
- if nargin > 2
- fMRI_T = T;
- else
- fMRI_T = spm_get_defaults('stats.fmri.t');
- end
- %-Modelled haemodynamic response function - {mixture of Gammas}
- %--------------------------------------------------------------------------
- dt = RT/fMRI_T;
- u = [0:ceil(p(7)/dt)] - p(6)/dt;
- hrf = spm_Gpdf(u,p(1)/p(3),dt/p(3)) - spm_Gpdf(u,p(2)/p(4),dt/p(4))/p(5);
- hrf = hrf([0:floor(p(7)/RT)]*fMRI_T + 1);
- hrf = hrf'/sum(hrf);
|