Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ प्रोग्राम: कॉम्प्लेक्स 2D ऐरे दिए जाने पर 2D FFT इनप्लेस करना


फास्ट फूरियर ट्रांसफॉर्म (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)

  1. - C++ में स्ट्रिंग्स की सरणी

    इस खंड में हम देखेंगे कि C++ में स्ट्रिंग्स की सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि C में कोई स्ट्रिंग्स नहीं थीं। हमें कैरेक्टर सरणी का उपयोग करके स्ट्रिंग्स बनानी पड़ती थीं। इसलिए कुछ स्ट्रिंग्स की सरणी बनाने के लिए, हमें कैरेक्टर्स की 2-आयामी सरणी बनानी पड़ती थी। प्रत्येक पंक्

  1. - C++ में सॉर्टिंग

    इस सेक्शन में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिदम कैसे निष्पादित करें। एक सॉर्टेड ऐरे एक ऐरे है जिसमें प्रत्येक एलिमेंट किसी क्रम में सॉर्टेड होते हैं जैसे न्यूमेरिकल, अल्फाबेटिकल आदि। एक न्यूमेरिकल ऐरे को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे बबल सॉर्ट, इन्सर्शन सॉर्ट, सिलेक्शन सॉर्ट, मर्ज स

  1. - C++ प्रोग्राम: सम्मिश्र संख्या गुणन

    सम्मिश्र संख्याएं सम्मिश्र संख्याएं a+bi के रूप में व्यक्त की जाती हैं, जहां i काल्पनिक इकाई है (i² = -1) और a, b वास्तविक संख्याएं हैं। उदाहरण 2+3i, 5+9i, 4+2i गुणन सूत्र (a+bi) × (c+di) = (ac - bd) + (ad + bc)i C++ प्रोग्राम उदाहरण #include <iostream> using namespace std; int main() {