Цитата(scifi @ Apr 17 2012, 10:00)

Видимо да, правильно.
Вот реальный работающий пример:
Код
arm_rfft_instance_f32 rffti;
arm_cfft_radix4_instance_f32 cffti;
arm_rfft_init_f32(&rffti, &cffti, 2048, 0, 1);
arm_rfft_f32(&rffti, f, g);
Запускаю так:
Код
arm_q15_to_float(testInput_q15_512, f, 512);
arm_rfft_instance_f32 rffti;
arm_cfft_radix4_instance_f32 cffti;
arm_rfft_init_f32(&rffti, &cffti, 2048, 0, 1);
arm_rfft_f32(&rffti, f, g);
arm_cmplx_mag_squared_f32(g, f, 512);
То есть делаю FFT для real f32, как привел пример scifi - все великолепно. Вижу хорошую палку на 10 индексе. Тестовые отсчеты сгенерированы в MatLab в формате q15. 512 - отсчетов, 10 периодов синуса, целочисленно укладывающихся в заданное окно. Размах от 0xC000 до 0x3FFF
Тоже самое пытаюсь сделать для real q15
Код
arm_rfft_instance_q15 rffti;
arm_cfft_radix4_instance_q15 cffti;
arm_rfft_init_q15( &rffti, &cffti, 512, 0, 1);
arm_rfft_q15( &MyS, testInput_q15_512, testOutput);
arm_cmplx_mag_q15(testOutput, amplitude_arr, 512);
- полный бред на выходе, больше похожий на белый шум.
Если задать третью строчку в коде так: arm_rfft_init_q15( &rffti, &cffti, 512, 1, 1); - то есть обратное преобразование
вместо прямого, то картина становится лучше. Появляется не очень внятный и размазанный пик на нужном месте
http://electronix.ru/forum/style_emoticons...t/smile3046.gif .
Тестовые отсчеты сгенерированы в MatLab в формате q15. 512 - отсчетов, 10 периодов синуса, целочисленно укладывающихся в заданное окно.
Голова сломана, выходные проходят бездарно! дошел до перекомпиляции последней версии CMSIS DSP. Результат тот же!
Направьте на истинный путь !