public Fourier correlation(Fourier four) { Fourier X = this.fft(1); Fourier Y_star = four.fft(1).conjugate(); return(X.multiply(Y_star).fft(-1)); }
public Fourier convolution(Fourier response) { Fourier U = this.fft(1); Fourier H = response.fft(1); Fourier convolution = H.multiply(U).fft(-1); return(convolution); }
public Fourier correlationNormalized(Fourier four) { Fourier X = this.fft(1); Fourier X_star = X.conjugate(); Fourier Y = four.fft(1); Fourier Y_star = Y.conjugate(); Fourier correlation = X.multiply(Y_star).fft(-1); Fourier autoCorrelationX = X.multiply(X_star).fft(-1); Fourier autoCorrelationY = Y.multiply(Y_star).fft(-1); Complex[] norm = new Complex[cArray.Length]; for (int i = 0; i < cArray.Length; i++) { norm[i] = new Complex(correlation.getZ()[i].getReal() / Math.Sqrt(autoCorrelationX.getZ()[0].getReal() * autoCorrelationY.getZ()[0].getReal()), 0); } return(new Fourier(norm)); }