iFFT симметричного спектра

Я выполняю iFFT на симметричном спектре (используя Python). Почему результат не является действительным сигналом, а содержит комплексные значения?

# My symmetric spectrum
spectrum = numpy.array( [1+1j,2+2j,3+3j,3-3j,2-2j] )

# Perform the iFFT
print numpy.fft.ifft(spectrum)

Вывод:

(2.2+0.2j)
(-1.98979431354+0.2j)
(0.59464641547+0.2j)
(-0.74743281997+0.2j)
(0.942580718037+0.2j)

person user1177816    schedule 30.01.2012    source источник
comment
Ваш симметричный спектр сдвинут? Я имею в виду, что вы говорите, что спектр симметричен, когда он симметричен относительно 0. А постоянная мнимая часть обычно соответствует сдвигу.   -  person jimifiki    schedule 30.01.2012
comment
используйте 1+0j вместо 1+1j   -  person Pavan Yalamanchili    schedule 30.01.2012


Ответы (1)


Попробуйте это так:

# My symmetric spectrum
spectrum = numpy.array( [0+0j,1+1j,2+2j,3+3j,0+0j,3-3j,2-2j,1-1j] )

# Perform the iFFT
print numpy.fft.ifft(spectrum)

Обычно бин 0 соответствует DC, бин N/2 соответствует Найквисту, и оба эти значения действительны. Для остальных членов симметрия комплексно сопряжена относительно Найквиста.

С Octave (клон MATLAB) я получаю тот же результат, что и вы, для ваших исходных входных данных:

octave-3.4.0:1> x = [1+1j,2+2j,3+3j,3-3j,2-2j];
octave-3.4.0:2> y = ifft(x)
y =

   2.20000 + 0.20000i  -1.98979 + 0.20000i   0.59465 + 0.20000i  -0.74743 + 0.20000i   0.94258 + 0.20000i

тогда как с моими входными данными выше я получаю чисто реальный результат:

octave-3.4.0:3> x = [0+0j,1+1j,2+2j,3+3j,0+0j,3-3j,2-2j,1-1j];
octave-3.4.0:4> y = ifft(x)
y =

   1.50000  -1.56066   0.00000   0.14645  -0.50000   0.56066  -1.00000   0.85355

Я предполагаю, что numpy, вероятно, использует те же самые правила для упорядочения входных/выходных данных FFT/IFFT.

person Paul R    schedule 30.01.2012
comment
Я проверил это снова, и во время игры кажется, что DC должен быть реальной ценностью. Кроме того, если общее количество выборок (включая DC) равно N/2, выборка Найквиста также должна быть реальной. - person user1177816; 30.01.2012