Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

преобразование фурье

Вс окт 29, 2017 19:38:23

Добрый день.
Разбираюсь с преобразованием для аудио-спектрометра, нужна консультация по коду и по функциям.
Может чегото не хватает или делаю не так.
Контроллер STM32f407. Математическую библиотеку "arm_math.h" подключил
Код большой, приведу главные функции:
//обьявляем размер FFT
#define FFT_SIZE 32
//для теста - массив чисел, для обычной синусоиды
const uint16_t aSine12bit[32] = {
2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, 4095, 4056,
3939, 3750, 3495, 3185, 2831, 2447, 2047, 1647, 1263, 909,
599, 344, 155, 38, 0, 38, 155, 344, 599, 909, 1263, 1647};
В начале функции локальные переменные
int16_t fft_Sbuff[FFT_SIZE] = {0};
int16_t fft_Dbuff[FFT_SIZE*2] = {0};

По таймеру, раз в секунду:
Копируем во входной массив для fft "тестовый" синус.
for (i=0; i<FFT_SIZE; i++) {
fft_Sbuff[i]=aSine12bit[i];}
Делаем преобразование(раз в секунду)
arm_rfft_instance_q15 S;
status = arm_rfft_init_q15(&S, FFT_SIZE, 0, 1);//функция инициализации необходима для БФП
if(status == ARM_MATH_SUCCESS)
{
arm_rfft_q15(&S,fft_Sbuff, fft_Dbuff);//выполнение БФП
arm_cmplx_mag_q15(fft_Dbuff, fft_Sbuff, FFT_SIZE);//вычисляем амплитуды гармоник
}
Вывожу график вертикальными линиями
for (i=0; i<FFT_SIZE; i++) {
LCD_vline(i,100, fft_Sbuff[i]);}//аргументы: LCD_vline(x,y, len);
В выходном массиве fft_Sbuff находятся амплитуды гармоник 32 частотных под_диапазонов?
На графике должна быть одна линия.
Как сделать преобразование для реального сигнала? Каким образом подобрать частоту оцифровки?

Re: преобразование фурье

Сб ноя 04, 2017 09:20:14

http://cvs.aiq.ru/stm32f303-2_2/stm32f303-2_2.html
viewtopic.php?p=3198737#p3198737

Re: преобразование фурье

Вс ноя 05, 2017 18:56:49

Давно я так не обламывался.
Решил на халяву посмотреть исходник по http://cvs.aiq.ru/stm32f103-2_2/stm32f4103-2_2.html ссылке, а там каша без переноса строк...
И ведь непонятно, то-ли комментарий // на текст, то-ли на часть кода в тени.

Re: преобразование фурье

Вс ноя 05, 2017 22:29:58

Другой кнопкой мыши - сохранить как - и сохранить с расширением .c

Во вторник могу на яндекс диск бросить....

Вот код вместе с логарифмом и выводом на экран:

Re: преобразование фурье

Пн ноя 06, 2017 17:19:49

а там каша без переноса строк

там она с *nix-овыми переносами. Ваш редактор не умеет их понимать, или хотя бы автоформатирование кода?)

main.c: https://pastebin.com/sNhVNwWp

Re: преобразование фурье

Пн ноя 06, 2017 20:32:14

Я все в Кейл запульнул и нормально
Ответить