How to Compute a Discrete-Fourier Transform Coefficients Directly in Java?

19 Nov, 2021
The Discrete Fourier Transform (DFT) generally varies from 0 to 360. There are basically N-sample DFT, where N is the number of samples. It ranges from n=0 to N-1. We can get the co-efficient by getting the cosine term which is the real part and the sine term which is the imaginary part. 
The formula of DFT:
Example :
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)
Approach:
First, let us declare the value of N is 10
We know the formula of DFT sequence is X(k)= e^jw ranges from 0 to N-1
Now we first take the inputs of a, b, c, and then we try to calculate in “ax+by=c” linear form
We try to take the function in an array called ‘newvar’.
newvar[i] = (((a*(double)i) + (b*(double)i)) -c);
Now let us take the input variable k, and also declare sin and cosine arrays so that we can calculate real and imaginary parts separately.
cos[i]=Math.cos((2*i*k*Math.PI)/N);
sin[i]=Math.sin((2*i*k*Math.PI)/N);
Now let us take real and imaginary variables
Calculating imaginary variables and real variables like
real+=newvar[i]*cos[i];
img+=newvar[i]*sin[i];
Now we will print this output in a+ ib form
Implementation:
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)");    }}
Enter the values of simple linear equation
ax+by=c
Enter the k DFT value
(-35.00000000000003) - (-48.17336721649107i)
 
prachisoda1234
surinderdawra388
Picked
Technical Scripter 2020
Java
Java Programs
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
Factory method design pattern in Java
Java Program to Remove Duplicate Elements From the Array