Цитата(sigmaN @ Sep 19 2009, 08:06)

Чё-то тут не сходится по-моему
Согласно доке - формат выходного буфера:
OutBuf[0] = real[0]
OutBuf[1] = real[1]
OutBuf[2] = real[2]
………
OutBuf[N/2] = real[N/2]
OutBuf[N/2+1] = imag[N/2-1]
………
OutBuf[N-3] = imag[3]
OutBuf[N-2] = imag[2]
OutBuf[N-1] = imag[1]
Всё это хорошо.
imag[0] всегда == 0 его выводить в буфер не имеет смысла
а вот как быть с real[N/2].
real[0]!=0 потому что cos(0)==1 и тут получается DC offset
A real[N/2] по логике должен быть == 0, потому что cos(pi/2)==0 но у меня он !=0 и мне не совсем понятно why?
Хотя скорее всего я что-то не догоняю, потому что вывод всё-таки соответствует KISS FFT и тут не может быть ошибки.
real[0] - постоянная составляющая может быть ллюбой, OutBuf[N/2] = real[N/2] также может быть любой. imag[0] =imag[N/2] = 0. В буфере real занимает адреса с 0 до N/2 всего N/2+1 значение, а imag c OutBuf[N/2+1] до OutBuf[N-1] всего N/2-1 значение при этом imag[0] =imag[N/2] = 0 не присутсвуют в буфере.