কম্পিউটার টিউটোরিয়াল

C++ প্রোগ্রাম: নেইভ আপরোচ ব্যবহার করে ডিসক্রিট ফুরিয়ে ট্রান্সফরম কম্পিউট করা

ডিসক্রিট ফুরিয়ে ট্রান্সফরম (DFT)-এ, একটি ফাইনাইট লিস্ট সমানভাবে স্পেসড একটি ফাংশনের স্যাম্পল থেকে কনভার্ট করা হয় কমপ্লেক্স সাইনসয়েডের একটি ফাইনাইট কোম্বিনেশনের কোএফিশিয়েন্ট লিস্টে। সেগুলো তাদের ফ্রিকোয়েন্সি অনুযায়ী অর্ডার করা থাকে, যাতে সেই সেম স্যাম্পল ভ্যালু থাকে, স্যাম্পল্ড ফাংশনকে এর অরিজিনাল ডোমেন (প্রায়শই টাইম বা একটি লাইন এর langs পজিশন) থেকে ফ্রিকোয়েন্সি ডোমেনে কনভার্ট করতে।

অ্যালগরিদম

শুরু
  একটি ভেরিয়েবল M নিন এবং এটিকে কিছু ইন্টিজার দিয়ে ইনিশিয়ালাইজ করুন
  একটি অ্যারে function[M] ডিক্লেয়ার করুন
  For i = 0 to M-1 do
    function[i] = (((a * (double) i) + (b * (double) i)) - c)
  Done
  function sine[M] ডিক্লেয়ার করুন
  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
  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
  ভ্যালু প্রিন্ট করুন
শেষ

উদাহরণ কোড

#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. সি++ প্রোগ্রাম দিয়ে অন্য প্রোগ্রাম লঞ্চ করা

  2. C++ ব্যবহার করে এলিপসের এরিয়া বের করা

  3. ম্যাট্রিক্সের ডিটারমিন্যান্ট বের করার C++ প্রোগ্রাম

  4. রিকার্সন ব্যবহার করে GCD (Greatest Common Divisor) বের করার C++ প্রোগ্রাম