Noninvasive Fetal ECG: The PhysioNet/Computing in Cardiology Challenge 2013 1.0.0

File: <base>/sources/mhaghpanahi_at_gmail.com/BPFilter.m (1,469 bytes)
function y = BPFilter(x,fl,fu)
%
% y = BPFilter(x,fl,fu),
% Bandpass filter using FFT filtering
%
% inputs:
% x: vector or matrix of input data (channels x samples)
% fl: normalized lower frequency
% fu: normalized upper frequency
%
% output:
% y: vector or matrix of filtered data (channels x samples)
%
% Note:
% - fl and fu are the lower and upper frequency ranges of the bandpass filter
% normalized by the sampling frequency
% - The filter does not perform any windowing on the data
%
%
% Open Source ECG Toolbox, version 2.0, March 2008
% Released under the GNU General Public License
% Copyright (C) 2008  Reza Sameni
% Sharif University of Technology, Tehran, Iran -- GIPSA-Lab, INPG, Grenoble, France
% reza.sameni@gmail.com

% This program is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by the
% Free Software Foundation; either version 2 of the License, or (at your
% option) any later version.
% This program is distributed in the hope that it will be useful, but
% WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
% Public License for more details.


N = size(x,2);

S = fft(x,N,2);

k = 1:ceil(fl*N);
if(~isempty(k)),
    S(:,[k N-k+2]) = 0;
end

k = floor(fu*N):ceil(N/2)+1;
if(~isempty(k)),
    S(:,[k N-k+2]) = 0;
end

y = real(ifft(S,N,2));