Trong phép biến đổi Fourier rời rạc (DFT), một danh sách hữu hạn được chuyển đổi các mẫu cách đều nhau của một hàm thành danh sách các hệ số của một tổ hợp hữu hạn các hình sin phức tạp. Họ sắp xếp thứ tự theo tần số của mình, có cùng các giá trị mẫu đó, để chuyển đổi hàm được lấy mẫu từ miền gốc của nó (thường là thời gian hoặc vị trí dọc theo một đường) sang miền tần số.
Thuật toán
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
Mã mẫu
#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"; } }
Đầu ra
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)