¿Cómo calcular los coeficientes de transformada discreta de Fourier directamente en Java?

La transformada discreta de Fourier (DFT) generalmente varía de 0 a 360. Básicamente, hay DFT de N muestras, donde N es el número de muestras. Va de n=0 a N-1. Podemos obtener el coeficiente obteniendo el término coseno que es la parte real y el término seno que es la parte imaginaria. 

La fórmula de DFT:

Ejemplo :

Input:

Enter the values of simple linear equation
ax+by=c
3
4
5
Enter the k DFT value
2


Output:

(-35.00000000000003) - (-48.17336721649107i)

Input:

Enter the values of simple linear equation
ax+by=c
2
4
5
Enter the k DFT value
4

Output:

(-30.00000000000001) - (-9.747590886987172i)

Acercarse:

  • Primero, declaremos que el valor de N es 10
  • Sabemos que la fórmula de la secuencia DFT es X(k)= e^jw varía de 0 a N-1
  • Ahora primero tomamos las entradas de a, b, c, y luego tratamos de calcular en forma lineal «ax+by=c»
  • Intentamos tomar la función en una array llamada ‘newvar’.
newvar[i] = (((a*(double)i) + (b*(double)i)) -c);
  • Ahora tomemos la variable de entrada k, y también declaremos arrays de seno y coseno para que podamos calcular las partes real e imaginaria por separado.
cos[i]=Math.cos((2*i*k*Math.PI)/N);
sin[i]=Math.sin((2*i*k*Math.PI)/N);
  • Ahora tomemos variables reales e imaginarias
  • Cálculo de variables imaginarias y variables reales como
real+=newvar[i]*cos[i];
img+=newvar[i]*sin[i];
  • Ahora imprimiremos esta salida en forma a+ ib

Implementación:

Java

// Java program  to Compute a Discrete-Fourier
// Transform Coefficients Directly
 
import java.io.*;
import java.util.Scanner;
 
class GFG {
 
    public static void main(String[] args)
    {
 
        // Size of the N value
        int N = 10;
 
        // Enter the values of simple linear equation
        System.out.println(
            "Enter the values of simple linear equation");
        System.out.println("ax+by=c");
 
        // We declare them in data_type double..
        double a = 3.0;
        double b = 4.0;
        double c = 5.0;
 
        // Here newvar function array is declared in size
        // N..
        double[] newvar = new double[N];
 
        // Now let us loop it over N and take the function
        // Now the newvar array will calculate the function
        // ax+by=c for N times
 
        for (int i = 0; i < N; i++) {
            // This is the way we write that,
            // We are taking array A as of 'a'x
            // array B as of 'b'y
            newvar[i]
                = (((a * (double)i) + (b * (double)i)) - c);
        }
 
        System.out.println("Enter the k DFT value");
 
        // Here we declare the variable k
        int k = 2;
 
        // Here we take 2 terms cos and sin arrays
        // which will be useful to calculate the real and
        // imaginary part The size of both arrays will be 10
 
        double[] cos = new double[N];
        double[] sin = new double[N];
 
        // Iterating it to N
        // Now let us calculate the formula of cos and sin
 
        for (int i = 0; i < N; i++) {
 
            // Here cos term is real part which is
            // multiplied into 2ikpie/N
            cos[i] = Math.cos((2 * i * k * Math.PI) / N);
 
            // Here sin term is imaginary part which is also
            // multiplied into 2ikpie/N
            sin[i] = Math.sin((2 * i * k * Math.PI) / N);
        }
 
        // Now to know the value of real and imaginary terms
        // First we declare their respective variables
        double real = 0, img = 0;
 
        // Now let us iterate it till N
 
        for (int i = 0; i < N; i++) {
 
            // real part  can be calculated by adding it
            // with newvar and multiplying it with cosine
            // array
            real += newvar[i] * cos[i];
 
            // Imaginary part is calculated by adding it
            // with newvar and multiplying it with sine
            // array
            img += newvar[i] * sin[i];
        }
 
        // Now real and imaginary part can be written in
        // this equation form
        System.out.println("(" + real + ") - "
                           + "(" + img + "i)");
    }
}
Producción

Enter the values of simple linear equation
ax+by=c
Enter the k DFT value
(-35.00000000000003) - (-48.17336721649107i)

Publicación traducida automáticamente

Artículo escrito por saransh9342 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *