Java Program to Compute Discrete Fourier Transform Using Naive Approach

This is the java implementation of Naive DFT approach over function. Formula for calculating the coefficient is X(k) = Sum(x(n)*cos(2*PI*k*n/N) – iSum(x(n)*sin(2*PI*k*n/N)) over 0 to N-1. This approach tries to many transforms using different values of k from 0 to N-1.

Here is the source code of the Java Program to Compute Discrete Fourier Transform Using Naive Approach. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.

//This is a java program to perform the DFT using naive approach
import java.util.Scanner;
 
public class DFT_Naive_Approach 
{
    double real,  img;
    public DFT_Naive_Approach() 
    {
        this.real = 0.0;
        this.img = 0.0;
    }
    public static void main(String args[])
    {
        int N = 10;
        Scanner sc = new Scanner(System.in);
        System.out.println("Disd=crete Fourier Transform using naive method");
        System.out.println("Enter the coefficient of simple linear funtion:");
        System.out.println("ax + by = c");
        double a = sc.nextDouble();
        double b = sc.nextDouble();
        double c = sc.nextDouble();
 
        double []function = new double[N];
        for(int i=0; i<N; i++)
        {
            function[i] = (((a*(double)i) + (b*(double)i)) - c);
        }
 
        System.out.println("Enter the max K value: ");
        int k = sc.nextInt();
 
        DFT_Naive_Approach []dft_val = new DFT_Naive_Approach[k];
 
        System.out.println("The coefficients are: ");
        for(int j=0; j<k; j++)
        {            
            dft_val[j] = new DFT_Naive_Approach();            
            for(int i=0; i<N; i++)
            {
                dft_val[j].real += function[i] * Math.cos((2 * i * j * Math.PI) / N);;
                dft_val[j].img += function[i] * Math.sin((2 * i * j * Math.PI) / N);;            
            }
            System.out.println("("+dft_val[j].real + ") - " + "("+dft_val[j].img + " i)");
        }
        sc.close();
    }
}

Output:

$ javac DFT_Naive_Approach.java
$ java DFT_Naive_Approach
 
Discrete Fourier Transform using naive method
Enter the coefficient of simple linear funtion:
ax + by = c
1 2 3
Enter the max K value: 
20
The coefficients are: 
(105.0) - (0.0 i)
(-15.00000000000001) - (-46.1652530576288 i)
(-15.00000000000001) - (-20.6457288070676 i)
(-15.000000000000005) - (-10.898137920080407 i)
(-15.000000000000004) - (-4.873795443493586 i)
(-15.0) - (1.4695761589768243E-14 i)
(-14.999999999999996) - (4.873795443493611 i)
(-15.000000000000103) - (10.898137920080355 i)
(-14.999999999999968) - (20.64572880706762 i)
(-14.999999999999922) - (46.16525305762871 i)
(105.0) - (-1.7634913907721884E-13 i)
(-15.00000000000012) - (-46.16525305762882 i)
(-15.000000000000053) - (-20.645728807067577 i)
(-14.999999999999911) - (-10.898137920080416 i)
(-15.000000000000037) - (-4.87379544349373 i)
(-15.0) - (1.0803613098771371E-13 i)
(-14.999999999999984) - (4.873795443493645 i)
(-14.99999999999996) - (10.89813792008029 i)
(-14.999999999999677) - (20.645728807067492 i)
(-14.999999999999769) - (46.16525305762875 i)

Related posts:

Java Program to Find Nearest Neighbor for Dynamic Data Set
Java Program to Perform the Unique Factorization of a Given Number
Java Program to implement Array Deque
Java Program to Check Whether a Given Point is in a Given Polygon
Java Program to Implement Strassen Algorithm
Filtering a Stream of Optionals in Java
Login For a Spring Web App – Error Handling and Localization
Java Program to Implement Queue using Linked List
Using Java Assertions
Instance Profile Credentials using Spring Cloud
Java 14 Record Keyword
Running Spring Boot Applications With Minikube
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Java Program to implement Circular Buffer
Java Program to Find Whether a Path Exists Between 2 Given Nodes
Java Program to Implement the Binary Counting Method to Generate Subsets of a Set
Java Program to Construct an Expression Tree for an Postfix Expression
Lập trình đa luồng trong Java (Java Multi-threading)
Spring WebClient Filters
Java Program to Implement Hash Tree
Java Program to Implement LinkedHashSet API
Thao tác với tập tin và thư mục trong Java
SOAP Web service: Upload và Download file sử dụng MTOM trong JAX-WS
How to Return 404 with Spring WebFlux
Upload and Display Excel Files with Spring MVC
Java 8 – Powerful Comparison with Lambdas
Check If Two Lists are Equal in Java
Java Program to Implement Quick Sort with Given Complexity Constraint
A Custom Data Binder in Spring MVC
A Guide to HashSet in Java
Mapping a Dynamic JSON Object with Jackson
Finding Max/Min of a List or Collection