फास्ट फूरियर ट्रांसफॉर्म (FFT) एक एल्गोरिदम है जो डिस्क्रीट फूरियर ट्रांसफॉर्म (DFT) और इसके व्युत्क्रम की गणना करता है। मूल रूप से फूरियर विश्लेषण समय (या स्थान) को फ्रीक्वेंसी में और इसके विपरीत बदलता है। एक FFT DFT मैट्रिक्स को स्पार्स (ज्यादातर शून्य) कारकों के उत्पाद में फैक्टराइज़ करके तेजी से ट्रांसफॉर्मेशन की गणना करता है।
एल्गोरिदम
Begin
ऐरे का आकार घोषित करें
ऐरे के एलिमेंट्स लें
तीन ऐरे घोषित करें
height = ऐरे का आकार और width = ऐरे का आकार इनिशियलाइज़ करें
आउटपुट डेटा पर इटरेट करने के लिए दो बाहरी लूप बनाएं
इनपुट डेटा पर इटरेट करने के लिए दो बाहरी लूप बनाएं
रियल, इमेजिनरी और एम्प्लीट्यूड की गणना करें।
End
उदाहरण कोड
#include <iostream>
#include <math.h>
using namespace std;
#define PI 3.14159265
int n;
int main(int argc, char **argv) {
cout << "Enter the size: ";
cin >> n;
double Data[n][n];
cout << "Enter the 2D elements ";
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
cin >> Data[i][j];
double realOut[n][n];
double imgOut[n][n];
double ampOut[n][n];
int height = n;
int width = n;
for (int yWave = 0; yWave < height; yWave++) {
for (int xWave = 0; xWave < width; xWave++) {
for (int ySpace = 0; ySpace < height; ySpace++) {
for (int xSpace = 0; xSpace < width; xSpace++) {
realOut[yWave][xWave] += (Data[ySpace][xSpace] * cos(2 * PI * ((1.0 * xWave * xSpace / width) + (1.0 * yWave * ySpace / height)))) / sqrt(width * height);
imgOut[yWave][xWave] -= (Data[ySpace][xSpace] * sin(2 * PI * ((1.0 * xWave * xSpace / width) + (1.0 * yWave * ySpace / height)))) / sqrt(width * height);
ampOut[yWave][xWave] = sqrt(realOut[yWave][xWave] * realOut[yWave][xWave] + imgOut[yWave][xWave] * imgOut[yWave][xWave]);
}
}
cout << realOut[yWave][xWave] << " + " << imgOut[yWave][xWave] << " i (" << ampOut[yWave][xWave] << ")\n";
}
}
}
आउटपुट
Enter the size: 2 Enter the 2D elements 4 5 6 7 4.5 + 6.60611e-310 i (4.5) 11 + 6.60611e-310 i (11) -0.5 + -8.97448e-09 i (0.5) -1 + -2.15388e-08 i (1) 4.5 + 6.60611e-310 i (4.5) -2 + -2.33337e-08 i (2) -0.5 + -8.97448e-09 i (0.5) 0 + 5.38469e-09 i (5.38469e-09)