Доброе время суток, уважаемый электронщик!
Это несколько узкая тема, но на целевом форуме Техасских Инструментов на него ответа пока нет, а тут, как я понимаю, есть знающие люди.
Собственно проблема в реализации обратного быстрого преобразования Фурье средствами родной библиотеки для плавающей точки C28x FPU Library Beta1. Документация по библиотеки - в приложении к сообщению.


Исходный сигнал


Результат БПФ


Результат повторного БПФ - пример 1


Результат повторного БПФ - пример 2


Как видите, присутствует изменение амплитуды сигнала. Почему это происходит, я не понимаю. Есть идеи?

Исходный код:

// Объявления
namespace measure
{
const Uint16 fftSize=8192;
const Uint16 fftStages=13;
RFFT_F32_STRUCT fft;
RFFT_F32_STRUCT ifft;
float32 bufferA[fftSize];
float32 bufferB[fftSize];
float32 bufferC[fftSize];
}

// Инициализация
void measure::init(){
fft.InBuf=bufferA;
fft.OutBuf=bufferB;
fft.CosSinBuf=bufferC;
fft.MagBuf=fft.InBuf;
fft.FFTSize=fftSize;
fft.FFTStages=fftStages;

ifft.InBuf=fft.OutBuf;
ifft.OutBuf=fft.InBuf;
ifft.CosSinBuf=fft.CosSinBuf;
ifft.MagBuf=ifft.InBuf;
ifft.FFTSize=fftSize;
ifft.FFTStages=fftStages;

RFFT_f32_sincostable(&fft);
}

...
RFFT_f32u(&fft); // Собственно БПФ
RFFT_f32u(&ifft); // Неудачная попытка ОБПФ
...