Порядок записей изменился после DFT - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь понять, как работает дискретное преобразование Фурье (ДПФ).Я генерирую некоторые данные

 n<-5
 set.seed(100)
 x<-rnorm(n)

и ортогональную матрицу, которую я использую для расчета ДПФ

 omega<-exp(-2*pi*1i/n)
 E<-n^(-1/2)*omega^(0:(n-1)*matrix(0:(n-1),n,n,byrow=TRUE))
 round(Re(crossprod(E,Conj(E))),15)

ДПФ задается как

 x%*%t(E)

Действительно, мымогу проверить, что это совпадает с результатом, данным fft

 round(n^(-1/2)*fft(x),10)==round(x%*%t(E),10)

Теперь я смогу восстановить x, используя

 Re(colSums(c(x%*%t(E))*E))

, но это дает

[1] -0,50219235 0,11697127 0,88678481 -0,07891709 0,13153117

, в то время как x равно

[1] -0,50219235 0,13153117 -0,07891709 0,88678481 0,116971226

* * x но порядок записей изменен.Первая запись по-прежнему является первой, но другие записи смешаны.Кто-нибудь может объяснить, почему это происходит или что я делаю неправильно?

Любая помощь очень ценится!

1 Ответ

0 голосов
/ 05 октября 2018

Матрица DFT не ортогональна, поэтому транспонирование матрицы не равно обратному.Таким образом, вы не отменяете операцию умножением на транспонирование матрицы.

Поскольку матрица симметрична, а транспонирование идентично, то, что вы сделали, умножил вектор на квадрат матрицы.Квадрат этой матрицы оказывается ортогональным и, таким образом, действует как перевод координат (т. Е. Порядок записей изменяется).

round( Re( E %*% E ), 10)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    0    0    0    0    1
## [3,]    0    0    0    1    0
## [4,]    0    0    1    0    0
## [5,]    0    1    0    0    0

Эта матрица является симметричной и ортогональной, и поэтому она равнаего собственная транспонированная и обратная.

Ваш код и настройки верны;и для небольшого подтверждения, что это так, вы можете использовать встроенную функцию быстрого преобразования Фурье fft

Re(fft(fft(1:10)))/10
##  [1]  1 10  9  8  7  6  5  4  3  2

При двойном использовании для набора чисел он также меняет порядок в том жеобразом.

...