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

C++ प्रोग्राम: नाइव दृष्टिकोण का उपयोग करके डिस्क्रीट फूरियर ट्रांसफॉर्म की गणना करना


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

एल्गोरिदम

Begin
    एक वेरिएबल M लें और इसे किसी इंटीजर से इनिशियलाइज़ करें
    function[M] ऐरे घोषित करें
    i = 0 से M-1 तक करें
        function[i] = (((a * (double) i) + (b * (double) i)) - c)
    किया
    sine[M] फंक्शन घोषित करें
    cosine[M] फंक्शन घोषित करें
    i = 0 से M-1 तक करें
        cosine[i] = cos((2 * i * k * PI) / M)
        sine[i] = sin((2 * i * k * PI) / M)
    किया
    DFT_Coeff dft_value[k] घोषित करें
    j = 0 से k-1 तक करें
        i = 0 से M-1 तक करें
            dft_value.real += function[i] * cosine[i]
            dft_value.img += function[i] * sine[i]
        किया
    किया
    वैल्यू प्रिंट करें
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);
    }
    
    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++ प्रोग्राम का उपयोग करके प्रोग्राम कैसे लॉन्च करें? C++ प्रोग्राम का उपयोग करके प्रोग्राम कैसे लॉन्च करें?

    सिस्टम कमांड का उपयोग करके एप्लिकेशन लॉन्च करना यहां हम देखेंगे कि C++ प्रोग्राम का उपयोग करके नोटपैड जैसे किसी थर्ड-पार्टी एप्लिकेशन को कैसे शुरू किया जाए। यह प्रोग्राम बहुत सरल है; हम कमांड प्रॉम्प्ट कमांड का उपयोग करके यह कार्य कर सकते हैं। हम system() फ़ंक्शन के अंदर एप्लिकेशन नाम पास करेंगे। य

  1. C++ का उपयोग करके एलिप्स का क्षेत्रफल ज्ञात करना C++ का उपयोग करके एलिप्स का क्षेत्रफल ज्ञात करना

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

  1. - C++ में रिकर्सन का उपयोग करके G.C.D. (महत्तम समापवर्तक) खोजने का प्रोग्राम

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