/** * Construct a shift estimator with specified parameters. * When applied to multi-dimensional arrays, the estimator has half-width * sigma1 for the 1st dimension, half-width sigma2 for the 2nd dimension, * and half-width sigma3 for 3rd and higher dimensions. * @param sigma1 correlation window half-width for 1st dimension; * must not be less than 1. * @param sigma2 correlation window half-width for 2nd dimension; * must not be less than 1. * @param sigma3 correlation window half-width for 3rd and higher * dimensions; must not be less than 1. */ public LocalShiftFinder(double sigma1, double sigma2, double sigma3) { Check.argument(sigma1>=1.0,"sigma1>=1.0"); Check.argument(sigma2>=1.0,"sigma2>=1.0"); Check.argument(sigma3>=1.0,"sigma3>=1.0"); _lcfSimple = new LocalCorrelationFilter( LocalCorrelationFilter.Type.SIMPLE, LocalCorrelationFilter.Window.GAUSSIAN, sigma1,sigma2,sigma3); _si = new SincInterpolator(); _si.setExtrapolation(SincInterpolator.Extrapolation.CONSTANT); }
si.setExtrapolation(extrapolation);
yc[npad+nxu+ipad] = yc[npad+nxu-1]; si.setExtrapolation(SincInterpolator.Extrapolation.ZERO); si.interpolate(nxu,dxu,fxu,yi,nx,dx,fx,yo); si.interpolate(npad+nxu+npad,dxu,0.0,yz,nx,dx,fx,yt); for (int ix=0; ix<nx; ++ix) assertEquals(yo[ix],yt[ix],0.0); si.setExtrapolation(SincInterpolator.Extrapolation.CONSTANT); si.interpolate(nxu,dxu,fxu,yi,nx,dx,fx,yo); si.interpolate(npad+nxu+npad,dxu,0.0,yc,nx,dx,fx,yt);
int m1 = (nl1-1)/2+1; SincInterpolator si = new SincInterpolator(); si.setExtrapolation(SincInterpolator.Extrapolation.CONSTANT); for (int i2=0; i2<nl2; ++i2) { for (int i1=0; i1<nl1; ++i1) {
float[] zi = new float[nx]; float[] zc = new float[2*nx]; si.setExtrapolation(SincInterpolator.Extrapolation.ZERO); si.interpolate(nxu,dxu,fxu,yr,nx,dx,fx,zr); si.interpolate(nxu,dxu,fxu,yi,nx,dx,fx,zi); assertEquals(zi[ix],zc[2*ix+1],0.0); si.setExtrapolation(SincInterpolator.Extrapolation.CONSTANT); si.interpolate(nxu,dxu,fxu,yr,nx,dx,fx,zr); si.interpolate(nxu,dxu,fxu,yi,nx,dx,fx,zi);
yu[ixu] = (float)sweep(fmax,nmax,x); si.setExtrapolation(SincInterpolator.Extrapolation.CONSTANT);
float[] lo13 = zerofloat(m3); SincInterpolator si = SincInterpolator.fromErrorAndFrequency(0.001,0.4); si.setExtrapolation(SincInterpolator.Extrapolation.CONSTANT); for (int i3=0; i3<nl3; i3=i3+2) { j3 = i3/2;