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:
LinkedHashSet trong java
Guide to java.util.Formatter
Marker Interface trong Java
Creating Docker Images with Spring Boot
Extract links from an HTML page
Introduction to the Java NIO2 File API
Java Program to Implement Jarvis Algorithm
Java Program to Solve any Linear Equation in One Variable
Guide to CopyOnWriteArrayList
Java Program to Perform Deletion in a BST
Java Program to Implement PrinterStateReasons API
Java Program to Perform Uniform Binary Search
Java Program to Implement Binary Tree
Java Program to Implement Johnson’s Algorithm
LIKE Queries in Spring JPA Repositories
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Spring Boot: Customize the Jackson ObjectMapper
Hướng dẫn Java Design Pattern – Visitor
Java Program to Check whether Undirected Graph is Connected using BFS
Java Program to Perform String Matching Using String Library
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Spring RequestMapping
Send email with JavaMail
Java Program to Implement RoleUnresolvedList API
Spring MVC Tutorial
Working with Kotlin and JPA
Introduction to Spring Cloud OpenFeign
Spring Security Authentication Provider
Java Program to Implement Max-Flow Min-Cut Theorem
Hướng dẫn Java Design Pattern – Decorator
Binary Numbers in Java
Java Program to Use Dynamic Programming to Solve Approximate String Matching