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

C++ প্রোগ্রাম: DFT কোএফিশিয়েন্ট সরাসরি কম্পিউট করা

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

অ্যালগরিদম

শুরু
  তিনটি ভেরিয়েবল ডিক্লেয়ার করুন যেগুলো লিনিয়ার ইকুয়েশন এবং ম্যাক্স ভ্যালুর কোএফিশিয়েন্ট
  ভেরিয়েবলগুলো পড়ুন
  real, img ভেরিয়েবলসহ একটি ক্লাস ডিফাইন করুন
  একটি কনস্ট্রাক্টর তৈরি করুন এবং real, img কে শূন্য সেট করুন
  একটি ভেরিয়েবল M নিন এবং এটিকে কিছু ইন্টিজার দিয়ে ইনিশিয়ালাইজ করুন
  function[M] তৈরি করুন
  For i=0 to M do
    function[i] = (((a * (double) i) + (b * (double) i)) - c)
  function sine[M] ডিক্লেয়ার করুন
  function cosine[M] ডিক্লেয়ার করুন
  for i = 0 to M do
    cosine[i] = cos((2 * i * k * PI) / M)
    sine[i] = sin((2 * i * k * PI) / M)
  for i = 0 to M do
    dft_value.real += function[i] * cosine[i]
    dft_value.img += function[i] * sine[i]
  ভ্যালু প্রিন্ট করুন
শেষ

উদাহরণ কোড

#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 coeff 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;
    cout << "The coeffs are: ";
    for (int i = 0; i < M; i++) {
        dft_value.real += function[i] * cosine[i];
        dft_value.img += function[i] * sine[i];
    }
    cout << "(" << dft_value.real << ") - " << "(" << dft_value.img << " i)";
}

আউটপুট

Enter the coeff of simple linear function:
ax + by = c
4 6 7
Enter the max K value: 4
The coeffs are: (-50) - (-16.246 i)
  1. বাইনারি সার্চ C++ প্রোগ্রামে

  2. C++ প্রোগ্রাম: LCM (লঘুতম সাধারণ গুণিতক) নির্ণয়

  3. C++ প্রোগ্রাম: GCD (মহত্তম সাধারণ ভাজক) নির্ণয়

  4. C++ হ্যালো ওয়ার্ল্ড (Hello World) প্রোগ্রাম