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

C++ एक जटिल 2D सरणी को देखते हुए 2D FFT इनप्लेस पर प्रदर्शन करें

फास्ट फूरियर ट्रांसफॉर्म (एफएफटी) असतत फूरियर ट्रांसफॉर्म (डीएफटी) और इसके व्युत्क्रम की गणना करने के लिए एक एल्गोरिथ्म है। मूल रूप से फूरियर विश्लेषण समय (या स्थान) को आवृत्ति में परिवर्तित करता है और इसके विपरीत। एक एफएफटी तेजी से डीएफटी मैट्रिक्स को विरल (ज्यादातर शून्य) कारकों के उत्पाद में बदल कर परिवर्तनों की गणना करता है।

एल्गोरिदम

Begin
   Declare the size of the array
   Take the elements of the array
   Declare three arrays
   Initialize height =size of array and width=size of array
   Create two outer loops to iterate on output data
   Create two outer loops to iterate on input data
   Compute real, img and amp.
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++ में स्ट्रिंग्स की एक सरणी को कैसे परिभाषित किया जाए। जैसा कि हम जानते हैं कि सी में कोई तार नहीं था। हमें कैरेक्टर ऐरे का उपयोग करके स्ट्रिंग्स बनाना है। इसलिए स्ट्रिंग्स की कुछ सरणी बनाने के लिए, हमें वर्णों की एक 2-आयामी सरणी बनानी होगी। प्रत्येक पंक्तियाँ उस मैट्रिक्स

  1. सी++ में छँटाई

    इस खंड में हम देखेंगे कि C++ में सॉर्टिंग एल्गोरिथम कैसे किया जाता है। एक क्रमबद्ध सरणी एक सरणी है जिसमें प्रत्येक तत्व को किसी क्रम में क्रमबद्ध किया जाता है जैसे संख्यात्मक, वर्णानुक्रम आदि। संख्यात्मक सरणी को सॉर्ट करने के लिए कई एल्गोरिदम हैं जैसे कि बबलसॉर्ट, इंसर्शन सॉर्ट, सेलेक्शन सॉर्ट, मर्ज

  1. सी++ प्रोग्राम जटिल संख्या गुणा करने के लिए

    जटिल संख्याएं वे संख्याएं हैं जिन्हें a+bi के रूप में व्यक्त किया जाता है जहां i एक काल्पनिक संख्या है और a और b वास्तविक संख्याएं हैं। सम्मिश्र संख्याओं के कुछ उदाहरण हैं - 2+3i 5+9i 4+2i सम्मिश्र संख्या गुणन करने का कार्यक्रम इस प्रकार है - उदाहरण #include<iostream> using namespace std; int