Форум Херсона. Форум Херсонской молодежи.

Форум Херсона. Форум Херсонской молодежи. (http://forum.norma4.net.ua/)
-   Программирование (http://forum.norma4.net.ua/programmirovanie/)
-   -   Бытсрое преобразование Фурье (http://forum.norma4.net.ua/programmirovanie/18601-bytsroe-preobrazovanie-furuee.html)

Debian 07.12.2009 00:12

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

Вообщем надобно собрать большой...светодиодный спертроанализатор...
ну как в винампе...


Самый не геморойный способ это сделать быстрое преобразование фурье,
тоесть разложить входной сигнал на N-ое количество частот, и по амплитуде каждой двигать соответствующий столбик

вот вопрос собственно кто-то делал такое преобразования?
ато я чет в нете смотрел... примеры есть но я в них ничерта понять не могу...
даже книгу по матанализу достал...
только не помогло оно мне :no:
дайте алгоритм

надо что-то типа вот такого
http://www.youtube.com/watch?v=DrxaZ...eature=related
только лепить буду на светодиодах

ustas 07.12.2009 06:57

Жди Вована в теме, он шарит.

VoVaN 07.12.2009 08:10

Так это... А что в БПФ нипанятно? Примеров куча в инете для разных языков, хоть на той же википедии.
Вообще есть еще более быстрый и простой агоритм анализа, но я щас не могу вспомнить. У него вроде точность пониже, но тебе, думаю, сойдет для светодиодов. Если вспомню/найду в исходниках - отпишусь.

pingwinator 07.12.2009 12:02

Вложений: 1
Мяу :)

VoVaN 07.12.2009 15:03

upd.
эта. То что пытался вспомнить - пока не вспомнил, но вспомнилось другое. Есть еще прикольный метод вычисления коэффициента корреляции (т.е. грубо говоря берешь ЭН точек и суммируешь произведения входного сигнала с сигналом заданой частоты. Все составляющие за счет биений частот уходят в ноль, совпадающая частота остается и дает некий коээфициент). Плюс - никакой сложной математики, только суммирование и умножение. Минус - нужно для каждой частоты "синтезировать" опорный сигнал.

Впрочем, ни кто не говорит что он должен иметь больше двух уровней :) Т.е. в этом случае можно просто производить пару десятков раз замеры входного сигнала и суммировать в соответствующие ячейки (по значению периода "опорного" сигнала - он выступает как бы множителем, на "0" или на "1". Тогда и умножение не нужно). Т.е., допустим, меряешь сигнал с частотой 10кГц.
И нужна спектрограмма на четыре частоты - 1,2,3,5 кГц.
Каждое десятое измерение суммируешь в первую ячайку - это будет амплитуда по частоте 1кГц, каждое пятое - во вторую, это будет 2кГц, каждое третее - в третюю, это будет 3кГц, каждое второе - в четвертую, это 5кГц. Есессно, за один проход могут писаться несколько ячеек, так, например, результат 30-го измерения нужно прибавить во все четыре ячейки.

Всё очент просто, но нужно почитать литературу, тут есть еще какая-то фишка по поводу разности фаз коррелирующих функций - я уже не помню как оно. И вообще у меня по вышке всегда тройка была :) А по матметодам - четверка.

Debian 07.12.2009 18:36

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

я вообще матанализ прогуливал часто)

можно не синтезировать, можно сделать таблицу значений для делителя

Debian добавил 07.12.2009 в 20:17
//////
А я вот еще что подумал
можно сделать так:
мы знаем, что АЦП у нас делает, допустим, за каждые 20 миллисекунд 512 выборок
тоесть кадые 20 мс у нас есть новый массив в котором храниться 512 8ми битных значений (ну если разрядность АЦП 8 бит)
Далее мы знаем периоды частот интересующих нас спектров
опять таки для примера

20Гц - 50мс
50Гц - 20мс
100Гц - 10мс
500Гц - 2мс
1000Гц - 1мс
5000Гц - 200мкс

Делим эти периоды на 4, четверти периода нам в принципе хватит
а далее ходим по массиву с интересующим нас временным шагом, резутьтат делаем средним арифметическим...

хотя выходит примерно так как Ваван всглаголил)
ну, вот будем мне чем занять чип ADSP2181

Marchello 07.12.2009 20:23

Вложений: 2
Вот тут хорошая статейка:
http://www.codeproject.com/KB/audio-...waveInFFT.aspx
и функция FFT (fast FT), я попробовал заюзать, ну вроде правильно:
Вложение 121432 Вложение 121433
(тут правда с коэфициентами и хз в каком диапазоне)
только не знаю, не тяжеловато ли будет для той микросхемки.. (я в них не шарю :) ), да и смотрю вы уже нашли решение, но может кто захочет на компе побаловаться.

Debian 07.12.2009 20:24

40 MIPS
ну я думаю 40 лимонов достаточно будет тем более процессор DSP

Debian 15.12.2009 08:39

Вложений: 1
пока такие теоретические рассуждения

VoVaN 15.12.2009 10:01

В root мне логи, Дебиан Блейн! Остановись, демон!11

Debian 15.12.2009 17:01

так а че уж там...
все равно нифига мне не ясно пока что...
особенно с комплексной формой записи :-(

шока 15.12.2009 21:01

Цитата:

Сообщение от Debian (Сообщение 479993)
Вообщем надобно собрать большой...светодиодный спертроанализатор...

может лучше светодиодный спиртоанализатор? пожгёшь ведь всё. этот дискатечный йорк круче
http://www.youtube.com/watch?v=0d9_K...eature=related
http://disco-panel.com/

VoVaN 16.12.2009 00:37

Цитата:

Сообщение от Debian (Сообщение 483571)
так а че уж там...
все равно нифига мне не ясно пока что...
особенно с комплексной формой записи :-(

Ты б это... Сходил на кафедру высшей математики и там у бывшего своего препода али еще кого спросил, с объяснением специфики конкретной задачи (т.е., к примеру, максимум целочисленной метематики, уход от команд деления - в общем исходя из того что нужно для оптимизации под конкретный камень), пусть бы посоветовали оптимальные для такой ситуации численные методы. Может не Фурье, а корреляцию разъяснят.
Я так и делал )

Debian 17.12.2009 23:14

Вложений: 2
Ура!!!!!!
победил :)

написал на дельфях, вверху - произведение 3-х гармонических колебаний
снизу их спектрограмма
частоты
50Гц
200Гц
900Гц
1500Гц
3000Гц
5000Гц
10000Гц
......................................
с зеркальным эффектом не боролся
если будет время попробую сделать алгоритм Radix-2
а пока то, что получилось, загоним в проц )

Debian 18.12.2009 19:00

при реал тайм обработке проц умер от непосильного количества арифметических операций...больше всего его напугала аццкая тригонометрия...
с простыми колебаниями он справляется...


http://www.youtube.com/watch?v=CAtRErdmW4c

Marchello 18.12.2009 20:41

Цитата:

Сообщение от Debian (Сообщение 484932)
при реал тайм обработке проц умер от непосильного количества арифметических операций...

Не знаю, не знаю. Есть такая аудио-либа BASS, так там в ней есть риал-тайм FFT, ну то есть, файл играет, а либа отдает FT сигнала.
Она отдает до 256 сэмплов (в смысле выборок), и если это дело поместить в цикл рисования 3D графики - так я даже не замечаю падение фпс (то есть, все происходит очень быстро), так что Debian, оптимизируй :)
ps. к тому же я так понял тебе не нужна мега точность.

Debian 18.12.2009 20:46

Вложений: 1
та не, на ПК все работает, аж свист
я говорю за микроконтроллер
20MIPS
8Кб памяти =)

Marchello 18.12.2009 20:54

Аа, ну я так и подозревал :) Теперь понятно.
Да, тут конечно потяжелей будет..

Debian 21.12.2009 17:43

Вложений: 2
нашел старое табло светодиодное
16*32 светодиода
будет прототипом
как раз 32 полосы частот должно смотреться очень даже красиво

Debian 08.01.2010 15:32

гы-гы-гы

воплотил на ЖКИ
вроде нормально
только паходу точности там вообще нету но дергаетсо прикульно!!!
http://www.youtube.com/watch?v=3fY60goFcpc
или так
http://www.youtube.com/user/Debian1987

VoVaN 08.01.2010 21:42

Молоток ) Но на быстрых мелодиях чувствуется что малось не хватает скорости.

ПС Знакосинтезирующий?! Да в, батенька, знаете толк в извращениях )) Хотя большая инерционность матрицы создает прикольный эффект.

Debian 08.01.2010 22:49

нормально ny_diki_tanci*
то еще мобилка так сняла... в реальности все смотрится мегаофигенно
если разделить сигнал на НЧ+СЧ и ВЧ составляющие, тогда можно обрабатывать ВЧ в 2 раза чаще чем НЧ+СЧ будет еще правдоподобнее

щас на LM 324 спаяюу предварительный усилитель
и будет еще сильнее гуд


Время на сервере: 22:50.

vBulletin 3, Copyright © 2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co