Home > matutils > notchFilter.m

notchFilter

PURPOSE ^

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

SYNOPSIS ^

function yc = notchFilter(varargin)

DESCRIPTION ^

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 This function applies a notch filter to the columns of data in y. It
 assumes that they've been sampled at 100 Hz.

 OGK, 17 May 2010
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function yc = notchFilter(varargin)
0002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0003 % This function applies a notch filter to the columns of data in y. It
0004 % assumes that they've been sampled at 100 Hz.
0005 %
0006 % OGK, 17 May 2010
0007 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0008 
0009 if nargin == 1
0010     y = varargin{1};
0011 else
0012     y = varargin{1};
0013     fstopE = varargin{2};
0014 end
0015 
0016 % Frequencies to cut out: [Flow Fhigh]
0017 fstop = [...1.18 1.24;
0018          2.36 2.44;
0019          3.596 3.604;
0020          4.76 4.84;
0021          7.16 7.24;
0022          8.36 8.44;
0023          ...0.999 1.001;
0024          19.92 20.04;
0025          39.9  40.1];
0026 if nargin > 1
0027     fstop = [fstop; fstopE];
0028 end
0029 
0030 for k=1:50
0031     fstop = [fstop; k-0.02 k+0.02];
0032 end
0033 
0034 % for k=0.5:1:20.5
0035 %     fstop = [fstop; k-0.02 k+0.02];
0036 % end
0037 
0038 fs = 100;
0039 Y = fftshift(fft(y),1);
0040 f = [-size(Y,1)/2:size(Y,1)/2-1]*fs/size(Y,1);
0041 f = f(:);
0042 
0043 Istop = zeros(size(f));
0044 for k=1:size(fstop,1)
0045     Istop = Istop | (abs(f) < fstop(k,2) & abs(f) > fstop(k,1));
0046 end
0047 Y(Istop,:) = 0;
0048 
0049 yc = (ifft(fftshift(Y,1)));
0050 
0051 end

Generated on Sun 14-Jun-2015 17:12:45 by m2html © 2005