% ------------------------------------------------------------------------------------------------- % 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;