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

C++ प्रोग्राम असतत फूरियर रूपांतरण की गणना करने के लिए Naive दृष्टिकोण का उपयोग करना

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

एल्गोरिदम

Begin
   Take a variable M and initialize it to some integer
   Declare an array function[M]
   For i = 0 to M-1 do
      function[i] = (((a * (double) i) + (b * (double) i)) - c)
   Done
   Declare function sine[M]
   Declare function cosine[M]
   for i =0 to M-1 do
      cosine[i] = cos((2 * i * k * PI) / M)
      sine[i] = sin((2 * i * k * PI) / M)
   Done
   Declare DFT_Coeff dft_value[k]
   for j = 0 to k-1 do
      for i = 0 to M-1 do
         dft_value.real += function[i] * cosine[i]
         dft_value.img += function[i] * sine[i]
      Done
   Done
   Print the value
End

उदाहरण कोड

#include<iostream>
#include<math.h>
using namespace std;
#define PI 3.14159265
class DFT_Coeff {
   public:
   double real, img;
   DFT_Coeff() {
      real = 0.0;
      img = 0.0;
   }
};
int main(int argc, char **argv) {
   int M= 10;
   cout << "Enter the coefficient of simple linear function:\n";
   cout << "ax + by = c\n";
   double a, b, c;
   cin >> a >> b >> c;
   double function[M];
   for (int i = 0; i < M; i++) {
      function[i] = (((a * (double) i) + (b * (double) i)) - c);
      //System.out.print( " "+function[i] + " ");
   }
   cout << "Enter the max K value: ";
   int k;
   cin >> k;
   double cosine[M];
   double sine[M];
   for (int i = 0; i < M; i++) {
      cosine[i] = cos((2 * i * k * PI) / M);
      sine[i] = sin((2 * i * k * PI) / M);
   }
   DFT_Coeff dft_value[k];
   cout << "The coefficients are: ";
   for (int j = 0; j < k; j++) {
      for (int i = 0; i < M; i++) {
         dft_value[j].real += function[i] * cosine[i];
         dft_value[j].img += function[i] * sine[i];
      }
      cout << "(" << dft_value[j].real << ") - " << "(" << dft_value[j].img <<" i)\n";
   }
}

आउटपुट

Enter the coefficient of simple linear function:
ax + by = c
4 5 6
Enter the max K value: 10
The coefficients are:
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)
(345) - (-1.64772e-05 i)

  1. C++ प्रोग्राम का उपयोग करके प्रोग्राम कैसे लॉन्च करें?

    यहां हम देखेंगे कि कुछ तृतीय-पक्ष एप्लिकेशन जैसे नोटपैड या सी ++ प्रोग्राम का उपयोग करके कुछ भी कैसे शुरू किया जाए। यह प्रोग्राम बहुत सरल है, हम इस कार्य को करने के लिए कमांड प्रॉम्प्ट कमांड का उपयोग कर सकते हैं। हम सिस्टम () फ़ंक्शन के अंदर एप्लिकेशन का नाम पास करेंगे। यह उसके अनुसार खुल जाएगा। उद

  1. C++ का प्रयोग करके दीर्घवृत्त का क्षेत्रफल ज्ञात करने का कार्यक्रम

    यहां हम देखेंगे कि C++ का उपयोग करके दीर्घवृत्त का क्षेत्रफल कैसे प्राप्त करें। अंडाकार के अलग-अलग हिस्से होते हैं। ये नीचे की तरह हैं। मुख्य बिंदु विवरण केंद्र दीर्घवृत्त का केंद्र। यह रेखा खंडों का भी केंद्र है जो दो फ़ॉसी को जोड़ता है। प्रमुख अक्ष दीर्घवृत्त का सबसे लंबा व्यास nmemb यह तत्व

  1. सी ++ प्रोग्राम रिकर्सन का उपयोग करके जीसीडी खोजने के लिए

    दो संख्याओं का सबसे बड़ा सामान्य भाजक (GCD) उन दोनों को विभाजित करने वाली सबसे बड़ी संख्या है। उदाहरण के लिए:मान लें कि हमारे पास निम्नलिखित दो संख्याएँ हैं:45 और 27 63 = 7 * 3 * 3 42 = 7 * 3 * 2 So, the GCD of 63 and 42 is 21 रिकर्सन का उपयोग करके दो नंबरों के जीसीडी को खोजने का कार्यक्रम इस प्रक