Пусть x
будет (реальным) массивом длины N. Я сделал некоторые изменения (фильтрацию и т. Д.) В частотной области на X=fft(x)
.Заполните половину массива fft (x) с конъюгатом до ifft
, прежде чем делать inverseFFT (y=ifft(X)
), хотелось бы, что вторая половина из X
заполнена конъюгата в первой половине X
, в обратном порядке. Зачем ? Потому что это должно быть так для реальных сигналов! (см.: http://en.wikipedia.org/wiki/Fast_Fourier_transform#FFT_algorithms_specialized_for_real_and.2For_symmetric_data)
Как я могу это сделать с помощью Python? Должно ли это быть чем-то вроде этого?
X[N/2:N] = np.conjugate(X[N/2::-1])
Почему бы вам просто не внести изменения в обе половины? –
Я делаю много испытаний модификаций методом проб и ошибок, поэтому сделать модификации проще только в первой половине и повторить вторую половину 'fft' в конце. – Basj
uhm, почему бы просто не использовать [реальные трансформации] (http://docs.scipy.org/doc/numpy/reference/routines.fft.html)? Это именно то, для чего они предназначены (а именно, оптимизация для известных реальных данных). –