y2=fastinerp1(x1,y1,x2) replica of matlab interp1 function assume linear interpolation, assume sorted data, assume vector x inputs, vector or matrix y1 input (columns are datapoints). assume small sized vectors x assume no tricks (x2 within interval of existing data x1)
0001 function y2 = fastinterp1(x1,y1,x2); 0002 0003 % y2=fastinerp1(x1,y1,x2) replica of matlab interp1 function 0004 % assume linear interpolation, 0005 % assume sorted data, 0006 % assume vector x inputs, vector or matrix y1 input (columns are datapoints). 0007 % assume small sized vectors x 0008 % assume no tricks (x2 within interval of existing data x1) 0009 0010 N1=length(x1); 0011 N2=length(x2); 0012 M=size(y1,1); 0013 x1=x1(:)'; x2=x2(:)'; 0014 x2=max(min(x1),min(max(x1),x2)); 0015 0016 d1=max(1,min(N1,sum(repmat(x1',[1,N2])<=repmat(x2,[N1,1]),1))); 0017 d2=max(1,min(N1,d1+1)); 0018 r1=abs(x2-x1(d1))./(eps+abs(x1(d2)-x1(d1))); 0019 y2=y1(:,d1).*repmat(1-r1,[M,1]) + y1(:,d2).*repmat(r1,[M,1]); 0020 0021 0022