|
БПФ, может есть у кого исходник? |
|
|
|
Mar 14 2009, 20:10
|
Группа: Новичок
Сообщений: 5
Регистрация: 2-11-08
Пользователь №: 41 326

|
Всем добрый вечер. Хочу реализовать простенький анализатор спектра на AVR. Микроконтроллер пока не выбрал. Может есть у кого программа быстрого преобразования фурье на С? Поделитесь пожалуйста...
Сообщение отредактировал Pianist - Mar 14 2009, 20:11
|
|
|
|
|
Mar 15 2009, 19:26
|
Группа: Новичок
Сообщений: 5
Регистрация: 2-11-08
Пользователь №: 41 326

|
Спасибо. Но все же хочется самому попробовать. Насколько я понял без операции умножения мне далеко не уехать, а из микроконтроллеров AVR аппаратное умножение появилось только у АтМега128?
|
|
|
|
|
Mar 16 2009, 05:15
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(klen @ Mar 15 2009, 13:55)  тут все уже сделано, используются инструкции арифметики дробная фиксированой запятой http://elm-chan.org/works/akilcd/report_e.html+5 на чистом Си для AVR можно и не начинать - скорости не хватит для реального времени  не могу удержаться... вот что с помощью этой либы сделал
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Mar 16 2009, 08:18
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата мое мнение о нехватке производительности относилось к реализации на Си БПФ для AVR. Ну вот в теме про распознование голоса мы делали DHT, правда, 32хточечный. На чистом Си. Не померли  2000 тактов. Цитата на счет вашего варианта не могу сказать ничего, хотя сомнения все-таки есть... особенно если эти фильтры так же на чистом Си делать... Да нефиг там делать. Все просто, как стол.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 16 2009, 09:06
|

Профессионал
    
Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581

|
Цитата(Rst7 @ Mar 16 2009, 11:18)  Ну вот в теме про распознование голоса мы делали DHT, правда, 32хточечный. На чистом Си. Не померли  2000 тактов. гм... нашел ваши исходники... все-таки ваш код можно назвать "чистым Си" с весьма большой натяжкой - там все сделано не только в виде оптимизации алгоритма, но и специально заточено на IAR... в сущности, доказывать, что при глубоком знании особенностей компилятора и умелом их использовании можно получить очень близкий к чисто ассемблерному варианту код - бессмысленно. я же имел ввиду под чистым Си, когда возведение в степень так и делается long result = var * var;  т.е. ваше решение "не в лоб", а я говорил о "лобовой атаке"  все расставлено по своим местам. а вот по поводу полосовых фильтров - увы, в ЦОС не шибко силен... считаете, что 10 цифровых полосовых фильтров будут быстрее БПФ?
--------------------
Я бы взял частями... но мне надо сразу.
|
|
|
|
|
Mar 16 2009, 09:13
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата но и специально заточено на IAR... IAR пока является наиболее оптимальным компилятором для AVR (несмотря на некоторые свои забобоны). Так что имею право. А если бы тут был ARM, то функции, помеченные как hard-coded функции заменяеются на прямой код без извращений и все нормально работает. Т.е. например Код //Hardcoded for AVR, return (var*c)>>8; #pragma inline=forced static int FDMUL(int var, UREG c) { int v=__multiply_signed_with_unsigned(var>>8,c); unsigned int v2=__multiply_unsigned(var,c); v+=v2>>8; return v; } заменяется на Код #pragma inline=forced static int FDMUL(int var, UREG c) {return (var*c)>>8;} И всем славно. Цитата считаете, что 10 цифровых полосовых фильтров будут быстрее БПФ? Конечно. Потому что отсчетов для БПФ надо брать намного больше - необходимые полосы на каждой интересующей частоте разной ширины - это легко решается в случае фильтров.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 16 2009, 09:31
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата больше 32? Ну и как тогда получить с частотами Цитата 32, 64, 125, 250, 500 Гц и 1, 2, 4, 8, 15,5 правильные полосы? 32 точки с нижней частотой в 32Гц имеют верхнуюю полосу в 1024Гц. А никак не 15.5.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|