This is the java implementation of performing Discrete Fourier Transform using Fast Fourier Transform algorithm. This class finds the DFT of N (power of 2) complex elements, generated randomly, using FFT. The input to the class is a two dimensional array of sequence.
Here is the source code of the Java Perform to a 2D FFT Inplace Given a Complex 2D Array. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a sample program to perform 2D FFT inplace import java.util.Scanner; public class TwoD_FFT { static void twoDfft(double[][] inputData, double[][] realOut, double[][] imagOut, double[][] amplitudeOut) { int height = inputData.length; int width = inputData[0].length; // Two outer loops iterate on output data. for (int yWave = 0; yWave < height; yWave++) { for (int xWave = 0; xWave < width; xWave++) { // Two inner loops iterate on input data. for (int ySpace = 0; ySpace < height; ySpace++) { for (int xSpace = 0; xSpace < width; xSpace++) { // Compute real, imag, and ampltude. realOut[yWave][xWave] += (inputData[ySpace][xSpace] * Math .cos(2 * Math.PI * ((1.0 * xWave * xSpace / width) + (1.0 * yWave * ySpace / height)))) / Math.sqrt(width * height); imagOut[yWave][xWave] -= (inputData[ySpace][xSpace] * Math .sin(2 * Math.PI * ((1.0 * xWave * xSpace / width) + (1.0 * yWave * ySpace / height)))) / Math.sqrt(width * height); amplitudeOut[yWave][xWave] = Math .sqrt(realOut[yWave][xWave] * realOut[yWave][xWave] + imagOut[yWave][xWave] * imagOut[yWave][xWave]); } System.out.println(realOut[yWave][xWave] + " + " + imagOut[yWave][xWave] + " i"); } } } } public static void main(String args[]) { System.out.println("Enter the size: "); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); double[][] input = new double[n][n]; double[][] real = new double[n][n]; double[][] img = new double[n][n]; double[][] amplitutude = new double[n][n]; System.out.println("Enter the 2D elements "); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) input[i][j] = sc.nextDouble(); twoDfft(input, real, img, amplitutude); sc.close(); } }
Output:
$ javac TwoD_FFT.java $ java TwoD_FFT Enter the size: 2 Enter the 2D elements 2 3 4 2 2.5 + 0.0 i 5.5 + 0.0 i -0.5 + -1.8369701987210297E-16 i 0.5 + -3.0616169978683826E-16 i 2.5 + 0.0 i -0.5 + -3.6739403974420594E-16 i -0.5 + -1.8369701987210297E-16 i -1.5 + -1.8369701987210297E-16 i
Related posts:
HttpClient 4 Cookbook
Guide to BufferedReader
Spring WebClient Requests with Parameters
How to Iterate Over a Stream With Indices
Spring Cloud Connectors and Heroku
Java Program to Find the Longest Path in a DAG
Java Program to Implement Levenshtein Distance Computing Algorithm
Một số ký tự đặc biệt trong Java
The “final” Keyword in Java
Java Stream Filter with Lambda Expression
Java Program to Implement the One Time Pad Algorithm
Java Program to Implement Adjacency List
HTTP Authentification and CGI/Servlet
Java Program to Construct an Expression Tree for an Infix Expression
Spring Boot Change Context Path
Java Program to Show the Duality Transformation of Line and Point
Java Program to Implement PriorityBlockingQueue API
Java Program to Implement Binomial Heap
Java Program to Represent Linear Equations in Matrix Form
Disable Spring Data Auto Configuration
Giới thiệu Swagger – Công cụ document cho RESTfull APIs
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Constructor Dependency Injection in Spring
Java Program to Implement Binary Tree
The XOR Operator in Java
Java Program to Implement Sorted Vector
Checking for Empty or Blank Strings in Java
Getting Started with Forms in Spring MVC
Spring Boot - Tracing Micro Service Logs
Overview of the java.util.concurrent
Java Program to Implement Shunting Yard Algorithm
An Introduction to ThreadLocal in Java