Email discussion lists for the UK Education and Research communities

SPM@JISCMAIL.AC.UK

View:

 Message: [ First | Previous | Next | Last ] By Topic: [ First | Previous | Next | Last ] By Author: [ First | Previous | Next | Last ] Font: Proportional Font

Options

Subject:

Re: bandpass filter in Matlab

From:

Date:

Wed, 1 Oct 2008 11:43:57 -0700

Content-Type:

text/plain

Parts/Attachments:

 text/plain (130 lines)
 ```Dear Jamila, > Dear Witaya, > I read your answer in the SPM discussion list about preprocessing ROIs > data. > I'd like to know if you can do the steps that your specified using > masbar toolbox (SPM)? > If answer is yes, could you please be more descriptive about it? > For example, how to apply the band-pass filter? or how to reverse the > gain of the filter at the middle of the band? > Thanks in advance for your response, > Jamila I sorry that I did not work with Marsbar for my band-pass filtering, but I read the data and saved in a 4D matrix, and then operated on the matrix. When you design a filter, you will have the magnitude response (in dB) of the filter. Gain = |H(frequency of interest)| Since dB = 20 log (Gain) Gain = 10^(dB/20). Normally, after filtering, to correct the magnitude of the filtered signal, we do Filtered Signal * (1/Gain) but if you do zero-phase filtering, the magnitude correction will be Filtered Signal * (1/(Gain^2)). Below is my previous following answer: > The voxel value means outside the brain are close to zeros while in > the brain are not. > SPM will generate a mask based on that. > > You have to be careful about the filter if it is a zero-phase filter > or not! > And what is the gain of the filter at the signal of interest or the > middle of the band? > The filtered data need to be corrected! In Matlab, the filter will be > applied twice > for the zero-phase filtering, i.e., the filtered signals are filtered > twice, I think. > Thus, the the gain correction must be squared! > > It seems that you are working in Matlab. So why don't you do > everything with a Matlab 4D matrix > and then export the 4D matrix to a series of 3D img files. > > Below is the quote of my answer about how to export the 3D (you can > modify it for 4D using sprintf) > >> Since you work in matlab or can use matlab imread, >> you can write the data out as below >> >> =========== >> >> % assume you saved the 3D data matrix, anatdata, in dicom orientation >> (R --> L, A --> P, I --> S) *** >> load anatdata.mat >> data_size = [size(anatdata,1) size(anatdata,2) size(anatdata,3)]; >> >> % write img file >> file_name_w = 'anatdata.img';% Analyze file name;using sprintf for >> the 4-D loop >> fid_w = fopen(file_name_w,'w'); >> I = zeros(data_size(1),data_size(2)); >> for i = 1:data_size(3) >> I(:,:) = anatdata(:,:,i); >> I2 = fliplr(I); >> fwrite(fid_w,I2,'int16');% ? precision: 'double' , 'float32' (you >> may need 'int16(round(your_data))') >> end >> fclose(fid_w); >> delete anatdata.mat >> ========== >> >> and then edit/create the hdr with spm99. >> >> > I have found a program that will apply a band-pass filter, but the >> resulting values in the image files are on the order of -10 to 10, >> which then SPM> will not estimate the model because I believe they >> are below the default signal threshold of SPM. >> >> > Thanks again for the help, >> I hope this helps. Sincerely, Witaya Sungkarat > > On Sep 18, 2008, at 8:10 PM, Witaya Sungkarat wrote: > >> Rachel, >> >> You may want to: >> >> 1) compute the means of the time-series >> 2) detrend the time-series >> 3) apply the band-pass filter >> 4) reverse the gain of the filter at the middle of the band or >> at the frequency of interest to the filtered time-series >> 5) add the means back. >> >> Cheers, >> >> Witaya Sungkarat >> >>> We are working on analyzing our first set of resting state data and >>> it appears that the consensus is that the data needs to be bandpass >>> filtered. We created a filter in matlab using the signal processing >>> toolbox. What do we need to do to our preprocessed data before we >>> apply the filter? >>> >>> Any help is appreciated. >>> >>> Thanks >>> Rachel ```