private static float[][] reverse(int n1, int n2, float[][] z, boolean copy) { if (copy) z = copy(n1,n2,z); for (int i2=0,j2=n2-1; i2<j2; ++i2,--j2) { float[] zt = z[i2]; z[i2] = z[j2]; z[j2] = zt; } for (int i2=0; i2<n2; ++i2) reverse(n1,z[i2],false); return z; }
/** * Computes the 1-D cross-correlation of specified sequences x and y. * @param lx the length of x. * @param kx the sample index of x[0]. * @param x array[lx] of x values. * @param ly the length of y. * @param ky the sample index of y[0]. * @param y array[ly] of y values. * @param lz the length of z. * @param kz the sample index of z[0]. * @param z array[lz] of z values. */ public static void xcor( int lx, int kx, float[] x, int ly, int ky, float[] y, int lz, int kz, float[] z) { boolean copy = x==y; x = reverse(lx,x,copy); kx = 1-kx-lx; conv(lx,kx,x,ly,ky,y,lz,kz,z); if (!copy) reverse(lx,x,false); }
private static float[][][] reverse( int n1, int n2, int n3, float[][][] z, boolean copy) { if (copy) z = copy(n1,n2,n3,z); for (int i3=0,j3=n3-1; i3<j3; ++i3,--j3) { float[][] zt = z[i3]; z[i3] = z[j3]; z[j3] = zt; } for (int i3=0; i3<n3; ++i3) reverse(n1,n2,z[i3],false); return z; } }