STM32F4 и FFT
11 года 10 мес. назад #3890
от Demax
Demax создал тему: STM32F4 и FFT
Коллеги, у кого есть примеры по сабжу?
Пример от ST очень скудный, гугл результатов не дает.
Интересует реализация полосового фильтра на FFT с использованием оконных функций
Пример от ST очень скудный, гугл результатов не дает.
Интересует реализация полосового фильтра на FFT с использованием оконных функций
11 года 9 мес. назад #3923
от Demax
Demax ответил в теме Re: STM32F4 и FFT
Пытаюсь сделать прямое и обратное преобразование Фурье - проверить что данные на входе и на выходе совпадают. Делаю так:
q15_t ADC_input[512];
q15_t RFFT_output[1024];
arm_rfft_instance_q15 S;
arm_cfft_radix4_instance_q15 S_CFFT;
// заполняем массив ADC_input насчитанными значениями
...
// прямое преобразование
arm_rfft_init_q15(&S, &S_CFFT, 512, 0, 1);
arm_rfft_q15(&S, ADC_input, RFFT_output);
// имеем комплексные отсчеты в RFFT_output, тут все нормально
// делаем обратное преобразование
S.ifftFlagR = 1u;
arm_rfft_q15(&S, RFFT_output, ADC_input);
Данные, полученные в ADC_input никак не совпадают с тем, что было на входе((
Что я делаю не так?
q15_t ADC_input[512];
q15_t RFFT_output[1024];
arm_rfft_instance_q15 S;
arm_cfft_radix4_instance_q15 S_CFFT;
// заполняем массив ADC_input насчитанными значениями
...
// прямое преобразование
arm_rfft_init_q15(&S, &S_CFFT, 512, 0, 1);
arm_rfft_q15(&S, ADC_input, RFFT_output);
// имеем комплексные отсчеты в RFFT_output, тут все нормально
// делаем обратное преобразование
S.ifftFlagR = 1u;
arm_rfft_q15(&S, RFFT_output, ADC_input);
Данные, полученные в ADC_input никак не совпадают с тем, что было на входе((
Что я делаю не так?
- Денис Ягов
- Посетитель
11 года 9 мес. назад #3931
от Денис Ягов
Денис Ягов ответил в теме Re: STM32F4 и FFT
Добрый день.
До конца не уверен в причине несовпадения результатов прямом и обратном БПФ, но есть такое обстоятельство смены формата данных типа q15_t*
У вас это как раз по коду переменная RFFT_output.
Сначала она используется как выходные данные, а потом как входные для функций БПФ.
В зависимости направления (входные/выходные) данные формат - меняется (картинка приложена).
Т.е. для приведения в соответствие прямое-обратное преобразование вам требуется "переформатировать" данные под вход.
До конца не уверен в причине несовпадения результатов прямом и обратном БПФ, но есть такое обстоятельство смены формата данных типа q15_t*
У вас это как раз по коду переменная RFFT_output.
Сначала она используется как выходные данные, а потом как входные для функций БПФ.
В зависимости направления (входные/выходные) данные формат - меняется (картинка приложена).
Т.е. для приведения в соответствие прямое-обратное преобразование вам требуется "переформатировать" данные под вход.
- Денис Ягов
- Посетитель
11 года 9 мес. назад #3932
от Денис Ягов
Денис Ягов ответил в теме Re: STM32F4 и FFT
Ну и до кучи .....
функция arm_rfft_init_q15 возвращает параметр arm_status, который имеет значения:
ARM_MATH_SUCCESS или ARM_MATH_ARGUMENT_ERROR
неплохо бы знать, чем всё таки закончилась инициализация.
где у вас прописаны параметры структуры arm_cfft_radix4_instance_q15 S_CFFT?
именно по её параметрам заполняется структура arm_rfft_instance_q15 S (после успешного выполнения функции arm_rfft_init_q15 )
Может быть поставленные вопросы приведут вас к решению проблемы.
Описания взяты из стандартной библиотеки DSP функций:
\STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\index.htm
функция arm_rfft_init_q15 возвращает параметр arm_status, который имеет значения:
ARM_MATH_SUCCESS или ARM_MATH_ARGUMENT_ERROR
неплохо бы знать, чем всё таки закончилась инициализация.
где у вас прописаны параметры структуры arm_cfft_radix4_instance_q15 S_CFFT?
именно по её параметрам заполняется структура arm_rfft_instance_q15 S (после успешного выполнения функции arm_rfft_init_q15 )
Может быть поставленные вопросы приведут вас к решению проблемы.
Описания взяты из стандартной библиотеки DSP функций:
\STM32F4xx_DSP_StdPeriph_Lib_V1.0.0\Libraries\CMSIS\index.htm
Время создания страницы: 0.042 секунд