www.pudn.com > CELP.ZIP > interpolate.m


function [ x, y ] = interpolate( x, start, n, d, m ) 
 
global TRUE FALSE nfrac 
 
global dfrac twelfth wsinc FirstComp dlysize dlyml dlymh szsubf 
 
y = zeros( 1, szsubf ); 
kmin = dlyml; 
kmax = kmin + dlysize - 1; 
 
% Get hamming windowed sinc interpolating function for each fraction. 
if FirstComp == TRUE 
    hwin = hamming( (12*dlysize) + 1 )'; 
    for i = 1:nfrac 
        wsinc( i,1:dlysize ) = sinc( dfrac(i) + (kmin:kmax) ) .* ... 
                                  hwin( 12*(0:dlysize-1) + twelfth(i) + 1 ); 
    end 
    FirstComp = FALSE; 
end 
 
% find the corresponding index 
indx=find(abs(dfrac-d)<10e-4); 
 
% resample 
for i = 0:n-1 
    x( start + i ) = sum( x( start - m + i + (kmin:kmax) ) .* ... 
                          wsinc(indx,(1:dlysize))); 
end 
 
y( 1:n ) = x( start:start+n-1 ); 
x( start:start+n-1 ) = zeros( 1, n );