Example usage for org.apache.commons.math3.transform TransformType FORWARD

List of usage examples for org.apache.commons.math3.transform TransformType FORWARD

Introduction

In this page you can find the example usage for org.apache.commons.math3.transform TransformType FORWARD.

Prototype

TransformType FORWARD

To view the source code for org.apache.commons.math3.transform TransformType FORWARD.

Click Source Link

Document

The type to be specified for forward transforms.

Usage

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);
}