Я пытаюсь написать немного кода, который будет прогнозировать время, затраченное на выполнение дискретного преобразования Фурье на данном n-мерном массиве, но я изо всех сил пытаюсь разобраться в вычислительной сложности n-мерного FFTs.
Как я понимаю:
-
1D БПФ вектора длины
N
должен приниматьk*(N*log(N))
, гдеk
- некоторая постоянная времени -
Для матрицы
M*N
двумерный БПФ должен принимать:N*(k*M*log(M)) + M*(k*N*log(N)) = k*M*N*(log(M)+log(N))
поскольку для каждой строки и столбца требуется 1D БПФ,
Как это обобщается на случай ND? Из этого следует, что это должно быть k*prod(dimensions)*sum(log(dimensions))
?