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

Re: Быстрое преобразование Фурье на Си

Сб ноя 03, 2018 18:28:22

Сможете легко перенести программу скажем с PIC16 на STM32? :)))

Ну я могу представить себе что вон тот Гёрцель писаный под AVR с гитхаба и на STM32 взлетит без особых изменений. Единственное что там придется поменять - как/откуда он сэмплы берет. Однако ж сам Гёрцель останется тем же самым. Правда в конкретно с тем кодом так делать не рекомендуется, автор очень в духе гитхаба лицензию указать вообще забыл и формально любой кто так сделает - как бы пират.

Re: Быстрое преобразование Фурье на Си

Сб ноя 03, 2018 22:41:11

О-о-о! Смотрите, коллеги, что я нашел!

Реализация целочисленного БПФ на процессорах с архитектурой ARM

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 14:57:51


Что "О-о-о"? Что там такого интересного? К тому же - для устаревшего ядра...

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 16:34:13

Ну, человек просил пример кода под ARM с целочисленной арифметикой - вот, ровно оно. Код будет выполняться и на M3, они совместимы.

А так по FFT много хороших публикаций есть. Вот, в частности.

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 16:49:40

Ну, человек просил пример кода под ARM с целочисленной арифметикой - вот, ровно оно. Код будет выполняться и на M3, они совместимы.

Пример кода чего он просил? Видимо БПФ. А там что? Где там БПФ?
К тому же он просил для Cortex-M0, а не для ARM7.

А так по FFT много хороших публикаций есть.

Вот и почитайте хотя-бы сами, чтобы знать что такое БПФ.
И гуглом думаю все умеют пользоваться.....

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 18:27:21

Истеричка заявилась. Как обычно, ни одной полезной мысли, только вопли и визги.

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 20:15:00

А там что?


А там - пример реализации ядра БПФ, элемента вычисления под названием "бабочка". Это, собственно, самый интересный этап БПФ.

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 22:10:13

А там - пример реализации ядра БПФ, элемента вычисления под названием "бабочка". Это, собственно, самый интересный этап БПФ.

Ну так это - малая часть. Да и не особо оптимально написанная. А всё остальное, как пишет автор - на си.
Если хочется ассемблера, можно взять любой пример на си, скомпилить его для нужного ядра с максимальной оптимизацией, взять листинг и дальше допиливать оптимизировать его вручную.

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 23:01:46

а в конце концов -- в дурку, лечить таки шизофрению.

Re: Быстрое преобразование Фурье на Си

Пн ноя 05, 2018 23:05:50

Ну так это - малая часть.


Хехе, вот теперь я посоветую вам почитать хотя бы тот труд, ссылку на который я приводил. Производительность БПФ в основном определяется как раз реализацией "бабочки". Это основная часть.

можно взять любой пример на си, скомпилить его для нужного ядра с максимальной оптимизацией, взять листинг и дальше допиливать оптимизировать его вручную.


Ну удачи, удачи... :)

Re: Быстрое преобразование Фурье на Си

Ср ноя 07, 2018 23:01:28

И вот интересно - среди кидания ссылок, требований подтянуть матчасть, обвинений друг друга в некомпетентности и других забавных проявлений человеческих недостатков кто-нибудь осмелится представить кусок кода на Си, т.е. подпрограммку, которая будет рассчитывать ДПФ целочисленного массива 12-битных данных, длинной хотя бы в 128 отсчётов.
Это не претензия.
Просто много говорится о ДПФ, обсуждаются возможности оптимизации, целочисленной реализации, бит-реверсной адресации какой-то абстрактной химеры, которой по-факту еще и нет.
Вот я, много ненужных сообщений назад, представил код, в котором есть такая подпрограммка - DFT.
Может попробует её совершенствовать, а не болтать без дела. Авось кому-нибудь и поможем.
Код компьютерный, писался для научных целей, но возможностей для оптимизации - вагон. Да еще и основная идея явно проглядывается.
Заодно посмотрим, кто в языке Си и ДПФ разбирается.
Ваши предложения, коллеги!

Re: Быстрое преобразование Фурье на Си

Чт ноя 08, 2018 10:45:15

Repytw, уже готовое но перенос с авр, со всеми ляпами/костылями/соплями http://we.easyelectronics.ru/reptile/8- ... 030f4.html

Re: Быстрое преобразование Фурье на Си

Чт ноя 08, 2018 12:48:39

Код компьютерный, писался для научных целей, но возможностей для оптимизации - вагон.
Если мне не изменяет память, одна из классический лаб по матану на 2-м курсе это запрограммировать ДПФ и БПФ, измерить разницу в скорости вычисления. Всё уже изобретено до нас.

Re: Быстрое преобразование Фурье на Си

Пт ноя 09, 2018 23:37:49

Если эта тема еще кому-то интересна.
Пример реализации 128-точечного ДПФ для 12-битных данных (по задумке от АЦП). Без float и double.
Пример опять-таки для ПК, но перенести его для приложений на ARM не составляет проблемы.

Re: Быстрое преобразование Фурье на Си

Сб ноя 10, 2018 03:38:33

Да вы издеваетесь? Кто ж ДПФ в лоб считает?

Re: Быстрое преобразование Фурье на Си

Сб ноя 10, 2018 09:15:27

VladislavS писал(а):Да вы издеваетесь?

Нет. :dont_know:

VladislavS писал(а):Кто ж ДПФ в лоб считает?

Те, кто хотят понять алгоритм.

dosikus писал(а):Всё уже изобретено до нас.

Ждём Ваших усовершенствований))) :write:

Re: Быстрое преобразование Фурье на Си

Сб ноя 10, 2018 09:56:16

Я это не писал...

Re: Быстрое преобразование Фурье на Си

Сб ноя 10, 2018 10:35:57

dosikus писал(а):Я это не писал...

Это случайно вышло. Редактор косячит.

VladislavS писал(а):Всё уже изобретено до нас

Re: Быстрое преобразование Фурье на Си

Сб ноя 10, 2018 11:11:17

Те, кто хотят понять алгоритм.


Эээ, весь вопрос в этой теме (как я его понимаю) - в эффективной реализации быстрого преобразования Фурье.

Алгоритм обычного дискретного преобразования Фурье элементарен, там и понимать особо нечего - это просто расчет скалярных произведений входного сигнала на набор опорных частот, для каждой в двух вариантах, сдвинутых на 90° (синус и косинус, чтобы знать фазу).

Фактически это набор проекций сигнала на оси в некотором пространстве, ортами которого выступают ортогональные функции. Точно так же можно раскладывать хоть по функциям Уолша. Внезапно, из прямоугольников можно синтезировать синус!

Так что с обычным ДПФ все просто. А вот как реализуются ускоренные алгоритмы - это неочевидно и предмет для дискуссий.
Ответить