


y=resample_interp1(x,p,q,method) - Resample using interp1 (no antialiasing)
y: resampled signal
x: data to resample
p,q: resample to p/q original sampling rate (p,q can be non-integer)
method: interpolation method [default: 'spline']
From interp1:
'linear' - linear interpolation
'nearest' - nearest neighbor interpolation
'next' - next neighbor interpolation
'previous' - previous neighbor interpolation
'spline' - piecewise cubic spline interpolation (SPLINE)
'pchip' - shape-preserving piecewise cubic interpolation
'cubic' - same as 'pchip'
'v5cubic' - the cubic interpolation from MATLAB 5, which does not
extrapolate and uses 'spline' if X is not equally
spaced.
'makima' - modified Akima cubic interpolation
NoiseTools

0001 function y=nt_resample_interp1(x,p,q,method) 0002 %y=resample_interp1(x,p,q,method) - Resample using interp1 (no antialiasing) 0003 % 0004 % y: resampled signal 0005 % 0006 % x: data to resample 0007 % p,q: resample to p/q original sampling rate (p,q can be non-integer) 0008 % method: interpolation method [default: 'spline'] 0009 % 0010 % From interp1: 0011 % 'linear' - linear interpolation 0012 % 'nearest' - nearest neighbor interpolation 0013 % 'next' - next neighbor interpolation 0014 % 'previous' - previous neighbor interpolation 0015 % 'spline' - piecewise cubic spline interpolation (SPLINE) 0016 % 'pchip' - shape-preserving piecewise cubic interpolation 0017 % 'cubic' - same as 'pchip' 0018 % 'v5cubic' - the cubic interpolation from MATLAB 5, which does not 0019 % extrapolate and uses 'spline' if X is not equally 0020 % spaced. 0021 % 'makima' - modified Akima cubic interpolation 0022 % 0023 % NoiseTools 0024 nt_greetings; 0025 0026 if nargin < 4|| isempty(method); method='spline'; end 0027 if nargin<3; error('!'); end 0028 0029 nsamples=size(x,1); 0030 querypoints=1+(0:q/p:nsamples-1); 0031 y=interp1((1:nsamples)',x,querypoints(:),method); 0032 0033 0034 % tests 0035 if 0 0036 % regular --> regular, different sampling rate 0037 N=45; 0038 t=(0:N)'/N; 0039 x=sin(2*pi*t); 0040 y=nt_resample_interp1(x,10,9,'spline'); 0041 figure(1); clf; 0042 plot(t,x, '.-'); 0043 hold on 0044 plot(linspace(0,1,size(y,1)),y, '.-'); 0045 end 0046