Print

Print


Dear Darren,

> I have been going over the code for filtering in the process of trying
> to set up a low pass filter and I wonder if there is a problem with how
> the hi-pass filtering is set up. Also, I then have a question about low
> pass filtering.
> 
> In the limiting case if the high pass filter length was = length of the
> experiment, currently the code generates 2 covariates, 1 - 1/2 cycle
> and 1 full cycle. Shouldn't it just generate a full cycle covariate?


If one were using a Fourier set to model low frequency components you
would be absolutely right.  However we choose to use a Discrete Cosine
set.  One advantage of this is that the first component effects
something like a linear detrending (exactly in the way you note
above).

> ===========
> Now if I wanted to generate a low pass filter would the code be as
> follows?  I'm using Hz here instead of a time window. Also the sin
> function seems to provide a steeper cutoff, but perhaps I'm mistaken.


I would include the cosine terms to give you a complete Fourier set.

> u     = [1:k/2];
> u     = find(u > k*RT*Hz);
> D     = [];
> for i = 1:length(u)
>   d = sin(2*pi*[0:(k - 1)]*u(i)/(k - 1));
>   D = [D d(:)];
>   d = cos(2*pi*[0:(k - 1)]*u(i)/(k - 1));
>   D = [D d(:)];
> end

In SPM99 we are in fact moving the other way and incorporating both
high and low pass filtering in the convolution kernel.


I hope this helps - Karl




%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%