List of usage examples for org.apache.commons.math3.transform TransformType FORWARD
TransformType FORWARD
To view the source code for org.apache.commons.math3.transform TransformType FORWARD.
Click Source Link
From source file:com.mycompany.semconsolewebapp.FFT.java
public static double[] forward(double[] data) { FastFourierTransformer f = new FastFourierTransformer(DftNormalization.STANDARD); Complex[] fftC = f.transform(data, TransformType.FORWARD); for (int i = 0; i < data.length; i++) { data[i] = fftC[i].abs();/* www .ja va 2 s .com*/ if (Double.isNaN(data[i])) { System.out.println("C " + fftC[i].getReal() + " + i" + fftC[i].getImaginary()); System.out.println("D " + data[i]); break; } } return data; }
From source file:com.fpuna.preproceso.util.Util.java
public static double[] transform(double[] input) { //double[] tempConversion = new double[input.length]; double[] tempConversion = new double[2048]; FastFourierTransformer transformer = new FastFourierTransformer(DftNormalization.STANDARD); try {//from w ww .j a v a 2s.c o m Complex[] complx = transformer.transform(input, TransformType.FORWARD); for (int i = 0; i < complx.length; i++) { double rr = (complx[i].getReal()); double ri = (complx[i].getImaginary()); tempConversion[i] = Math.sqrt((rr * rr) + (ri * ri)); } } catch (IllegalArgumentException e) { System.out.println(e); } return tempConversion; }
From source file:com.bleedobsidian.datawave.utils.Sinewave.java
/** * Calculate the frequency of sine wave from sound data. * //from ww w . j a v a2s. c om * @param sampleRate Sample rate. * @param samples Samples. * * @return Frequency. */ public static double calculateFrequency(double sampleRate, double[] samples) { FastFourierTransformer transformer = new FastFourierTransformer(DftNormalization.STANDARD); Complex[] complex = transformer.transform(samples, TransformType.FORWARD); double real; double im; double mag[] = new double[complex.length]; for (int i = 0; i < complex.length; i++) { real = complex[i].getReal(); im = complex[i].getImaginary(); mag[i] = Math.sqrt((real * real) + (im * im)); } double peak = 0.2; int index = -1; for (int i = 0; i < complex.length; i++) { if (peak < mag[i]) { index = i; peak = mag[i]; } } return ((sampleRate * index) / Audio.SAMPLE_BUFFER_SIZE) * 2; }
From source file:br.prof.salesfilho.oci.util.OCIUtils.java
public static double[] fft_forward_double(double[] input) { FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); Complex[] complexTransInput = fft.transform(input, TransformType.FORWARD); double[] result = new double[complexTransInput.length]; for (int i = 0; i < complexTransInput.length; i++) { result[i] = (complexTransInput[i].getReal()); }//ww w .j a v a 2s . c om return result; }
From source file:br.prof.salesfilho.oci.util.OCIUtils.java
public static double[] fft_magnitude(double[] input) { FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); Complex[] complexTransInput = fft.transform(input, TransformType.FORWARD); for (int i = 0; i < complexTransInput.length; i++) { double real = (complexTransInput[i].getReal()); double img = (complexTransInput[i].getImaginary()); input[i] = (Math.pow(real, 2) + Math.pow(img, 2)); }/*from ww w .ja v a 2 s . com*/ return input; }
From source file:kip.utils.PowerUtils.java
/** * Performs a FFT over the data//from w w w. j a va 2 s . com * @param samples samples to perform FFT over * @return transformed voltage */ public static double[] voltageTransform(int[] samples) { double[][] data = new double[2][samples.length]; for (int i = 0; i < data[0].length; i++) { data[0][i] = i; data[1][i] = 0; } FastFourierTransformer.transformInPlace(data, DftNormalization.STANDARD, TransformType.FORWARD); //System.out.println(java.util.Arrays.toString(samples) + "\n"); //System.out.println(java.util.Arrays.toString(data[0]) + "\n"); return data[0]; }
From source file:net.sf.dsp4j.octave.packages.signal_1_0_11.Freqz.java
public Freqz(double[] b, double[] a, int n) { FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); Complex[] hb = fft.transform(Arrays.copyOf(b, 2 * n), TransformType.FORWARD); Complex[] ha = fft.transform(Arrays.copyOf(a, 2 * n), TransformType.FORWARD); H = new Complex[n]; w = new double[n]; for (int i = 0; i < H.length; i++) { H[i] = hb[i].divide(ha[i]);/*from w w w . j a v a2 s. co m*/ w[i] = Math.PI / n * i; } }
From source file:net.sf.dsp4j.octave.packages.signal_1_0_11.Freqz.java
public Freqz(double[] b, int n) { FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); Complex[] hb = fft.transform(Arrays.copyOf(b, 2 * n), TransformType.FORWARD); H = Arrays.copyOfRange(hb, 0, n); w = new double[n]; for (int i = 0; i < H.length; i++) { w[i] = Math.PI / n * i;/*from w w w .jav a2 s . c om*/ } }
From source file:experiment.FastCosineTransformer_bug.java
/** * {@inheritDoc}//from ww w .j a v a2 s . c om * * @throws MathIllegalArgumentException if the length of the data array is * not a power of two plus one */ public double[] transform(final double[] f, final TransformType type) throws MathIllegalArgumentException { if (type == TransformType.FORWARD) { if (normalization == DctNormalization.ORTHOGONAL_DCT_I) { final double s = FastMath.sqrt(2.0 / (f.length - 1)); return TransformUtils.scaleArray(fct(f), s); } return fct(f); } final double s2 = 2.0 / (f.length - 1); final double s1; if (normalization == DctNormalization.ORTHOGONAL_DCT_I) { s1 = FastMath.sqrt(s2); } else { s1 = s2; } return TransformUtils.scaleArray(fct(f), s1); }
From source file:gedi.util.math.stat.distributions.PoissonBinomial.java
private void preprocess() { int n = pp.length; m = n + 1;//from w ww . ja va2 s. c o m int nextPowerOf2 = Integer.highestOneBit(m); if (nextPowerOf2 != m) nextPowerOf2 <<= 1; m = nextPowerOf2; n = m - 1; int ins = 0; int start = 0; for (int i = 1; i < pp.length; i++) { if (Math.abs(pp[i] - pp[start]) > 1E-10) { if (i - start > 1) { double p = pp[start]; pp[ins++] = -(i - start); pp[ins++] = p; } else { pp[ins++] = pp[i - 1]; } start = i; } } if (pp.length - start > 1) { double p = pp[start]; pp[ins++] = -(pp.length - start); pp[ins++] = p; } else { pp[ins++] = pp[pp.length - 1]; } double delta = 2 * Math.PI / m; z = new Complex[m]; z[0] = new Complex(1, 0); for (int i = 1; i <= Math.ceil(n / 2.0); i++) { double tt = i * delta; // for(int j=0;j<pp.length;j++) // { // double pj=j<opp.length?opp[j]:0; // double ax=1-pj+pj*Math.cos(tt); // double bx=pj*Math.sin(tt); // double tmp1=Math.sqrt(ax*ax+bx*bx); // double tmp2=Math.atan2(bx,ax); //atan2(x,y) // c1o+=Math.log(tmp1); // c2o+=tmp2; // } double c1 = 0.00; double c2 = 0.00; for (int j = 0; j < ins; j++) { double pj = pp[j]; double f = 1; if (pj < 0) { f = -pj; pj = pp[++j]; } double ax = 1 - pj + pj * Math.cos(tt); double bx = pj * Math.sin(tt); double tmp1 = Math.sqrt(ax * ax + bx * bx); double tmp2 = Math.atan2(bx, ax); //atan2(x,y) c1 += Math.log(tmp1) * f; c2 += tmp2 * f; } z[i] = new Complex(Math.exp(c1) * Math.cos(c2), Math.exp(c1) * Math.sin(c2)); z[z.length - i] = z[i].conjugate(); } FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD); z = fft.transform(z, TransformType.FORWARD); }