Я пытаюсь вычислить DFT для этого массива x_1
. Он должен быть мертвым простым, но мои ценности слишком низки. Что случилось с моим кодом?DFT (дискретное преобразование Фурье) с C++ STL
нет ссылки на другие примеры - просто поиск исправления для моего собственного кода.
#include <iostream>
#include <complex>
#include <cassert>
int main()
{
const unsigned int N = 20;
const double x_1[N] = {0, 0.3, 0.6, 0.8, 1, 1, 0.9, 0.7, 0.5, 0.2, 0.2, 0.5, 0.7, 0.9, 1, 1, 0.8, 0.6, 0.3, 0};
for(unsigned int k = 0; k < N; k++)
{
std::complex<double> sum(0.0,0.0);
for(unsigned int j = 0; j < N; j++)
{
int integers = -2*j*k;
std::complex<double> my_exponent(0.0, M_PI/N*(double)integers);
sum += x_1[j] * std::exp(my_exponent);
}
std::cout << abs(sum)/N << std::endl;
}
return 0;
}
Вы знаете, какие ожидаемые выходные значения для данного входа? – sergico
Да, я знаю их, и они намного выше. Поэтому я должен быть неправ. 11-е значение должно быть около 0,48. – Johannes