Числовое многомерное быстрое преобразование Фурье - как работают параметры s и оси? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь использовать numpy.fft.fftn для выполнения многомерного преобразования Фурье (в основном двумерного), но я не понимаю, как работает параметр s и axes даже после прочтения руководства.

https://www.numpy.org/devdocs/reference/generated/numpy.fft.fftn.html

Если я правильно понял, s просто означает длину выходного массива в каждом измерении, так что выходной массив усекается до требуемой формы?

Может кто-нибудь объяснить, как "оси, по которым вычисляется БПФ", связаны с преобразованием Фурье в математике? И как понять различия между двумя преобразованиями Фурье, использованными в следующем коде?

>>> a = np.mgrid[:3, :3, :3][0]
>>> np.fft.fftn(a, axes=(1, 2))
array([[[ 0.+0.j,   0.+0.j,   0.+0.j], # may vary
        [ 0.+0.j,   0.+0.j,   0.+0.j],
        [ 0.+0.j,   0.+0.j,   0.+0.j]],
       [[ 9.+0.j,   0.+0.j,   0.+0.j],
        [ 0.+0.j,   0.+0.j,   0.+0.j],
        [ 0.+0.j,   0.+0.j,   0.+0.j]],
       [[18.+0.j,   0.+0.j,   0.+0.j],
        [ 0.+0.j,   0.+0.j,   0.+0.j],
        [ 0.+0.j,   0.+0.j,   0.+0.j]]])
>>> np.fft.fftn(a, (2, 2), axes=(0, 1))
array([[[ 2.+0.j,  2.+0.j,  2.+0.j], # may vary
        [ 0.+0.j,  0.+0.j,  0.+0.j]],
       [[-2.+0.j, -2.+0.j, -2.+0.j],
        [ 0.+0.j,  0.+0.j,  0.+0.j]]])
...