Spontaneous Termination of Atrial Fibrillation: The PhysioNet/Computing in Cardiology Challenge 2004 1.0.0

% -------------------------------------------------------------------------------------------------
% InterpFFT.m: Signal interpolation with FFT
%
% Copyright (C) 2004 Maurizio Varanini, Clinical Physiology Institute, CNR, Pisa, Italy
%
% 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 "as is" and "as available" in the hope that it will be useful,
% but WITHOUT ANY WARRANTY of any kind; without even the implied warranty of MERCHANTABILITY
% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License along with this program;
% if not, write to the Free Software Foundation, Inc.,
% 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
%
% For any comment or bug report, please send e-mail to: maurizio.varanini@ifc.cnr.it
% -------------------------------------------------------------------------------------------------

function xi = interpfiltfftBPt(x, fs_in, fs_out)
N=length(x);
N2= floor(N/2);
even=~mod(N,2);
nfz=floor((fs_out/fs_in-1)*N/2);
X=fft(x);
if(even)
    XI=[X(1:N2); zeros(nfz,1); zeros(nfz,1); X(N-N2+1:N)];
else
    XI=[X(1:N2); zeros(nfz,1); X(N2+1); zeros(nfz,1); X(N-N2+1:N)];
end

xc=ifft(XI);
xi=real(ifft(XI));
NI=length(xi);
xi=xi*NI/N;