Example usage for org.apache.commons.math3.transform FastFourierTransformer transform

List of usage examples for org.apache.commons.math3.transform FastFourierTransformer transform

Introduction

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

Prototype

public Complex[] transform(final Complex[] f, final TransformType type) 

Source Link

Document

Returns the (forward, inverse) transform of the specified complex data set.

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();// ww w. ja  v  a  2  s .  c om

        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.bleedobsidian.datawave.utils.Sinewave.java

/**
 * Calculate the frequency of sine wave from sound data.
 * //www .  j  a  va 2s .c  o  m
 * @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: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 2 s  . com
        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:br.prof.salesfilho.oci.util.OCIUtils.java

public static Complex[] fft(double[] input, TransformType type) {
    FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
    Complex[] resultComplex = fft.transform(input, type);
    return resultComplex;
}

From source file:br.prof.salesfilho.oci.util.OCIUtils.java

public static Complex[] fft(Complex[] input, TransformType type) {
    FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
    Complex[] resultComplex = fft.transform(input, type);
    return resultComplex;
}

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());
    }//www .  j a v a2  s . co m
    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   w w  w  .  j  a v a 2  s  .  co  m*/
    return input;
}

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   ww  w  .  j a  v a  2 s . com
    }
}

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]);//  w w w  . jav a 2 s. co m
        w[i] = Math.PI / n * i;
    }

}

From source file:br.prof.salesfilho.oci.service.ImageDescriptorService.java

/**
 * @param signal/*  w w  w  . ja v  a 2  s . c om*/
 * @param channel RGB and grayscale (1 = RED, 2 = GREEN, 3 = BLUE and 4 =
 * GRAYSCALE, diferent value GRAYSCALE is returned)
 * @return array of abs FFT
 */
public double[] fft(double[] signal, int channel) {
    double[] result = new double[signal.length];

    FastFourierTransformer fft = new FastFourierTransformer(DftNormalization.STANDARD);
    Complex[] complexTransInput = fft.transform(signal, TransformType.FORWARD);
    for (int i = 0; i < complexTransInput.length; i++) {
        result[i] = complexTransInput[i].getReal() + complexTransInput[i].getImaginary();
    }
    return result;
}