psilogic: (pingpong)
psilogic ([personal profile] psilogic) wrote2006-08-02 01:04 am

Быстрое преобразование Фурье (халява)

Все-таки Википедия рулит. Надыбал там то, о чем давно мечтал:
математические выкладки, позволяющие делать преобразование Фурье за время порядка N log(N). Причем, для произвольного N, а не только для степени двойки.

Поковырявшись с ними, поразбиравшись, пооптимизировав, родил описалово, как, что и почему, а главное - файлец на C++ с готовым работающим модулем, который не требует никаких специальных библиотек.

http://psi-logic.shadanakar.org/fft/fftf.htm

Можете юзать - ибо халява :)

[identity profile] odinokov.livejournal.com 2006-08-01 09:41 pm (UTC)(link)
а паскакалем не замутишь? 8)

[identity profile] psilogic.livejournal.com 2006-08-01 09:52 pm (UTC)(link)
Паскаль ацтой! :o)))
*смущенно* Да и забыл я яго нафик :)

[identity profile] odinokov.livejournal.com 2006-08-01 09:54 pm (UTC)(link)
ох...
а мне ему ещё детишек учить8))

[identity profile] psilogic.livejournal.com 2006-08-01 10:36 pm (UTC)(link)
Надо же: паскаль почти умер, а детишек ему все еще учат...

Дельфи живы...

[identity profile] sanitareugen.livejournal.com 2006-08-02 07:32 am (UTC)(link)
А это Object Pascal + кое-что ещё...

Re: Дельфи живы...

[identity profile] psilogic.livejournal.com 2006-08-02 08:31 am (UTC)(link)
Не знаю, не знаю... после того, как Борланд стал подыхать, дельфи как-то тоже стали резко терять популярность...

[identity profile] metaclass.livejournal.com 2006-08-02 08:16 am (UTC)(link)
В ипостали Object Pascal/Delphi он еще долго существовать будет. На нем написано достаточно немаленькое количество всяких учетных и около того систем, в основном заказных.

[identity profile] psilogic.livejournal.com 2006-08-02 08:31 am (UTC)(link)
То, что уже написано - да, но как насчет новых программ? Детишкам ведь это будет в 1 очередь важно.

[identity profile] metaclass.livejournal.com 2006-08-02 08:51 am (UTC)(link)
По хорошему, надо учить неким общим принципам и давать направления, куда копать для разных языков и технологий. А то если обучить строго одному языку - потом либо переучиваться придется, либо сидеть всю жизнь на нем, никуда не развиваясь.

[identity profile] odinokov.livejournal.com 2006-08-02 08:58 am (UTC)(link)
паскаль вполне не плох в качестве учебного языка, и перескочить с дельфей на сибилдер особых сложностей не представляет - главное, шоп в универе пихали то, что надо.

А в школе - достаточно просто познакомиться с основами архитектуры и структуры программ.

Так что, по имхе, изучение голого (дельфийского) паскаля - не сильно отличается от изучения общих принципов и т.д.

И паскаль - не такой уж и архиязык, шоп с него было сложно куда-то переучиться8)

[identity profile] psilogic.livejournal.com 2006-08-02 09:54 am (UTC)(link)
Все равно какой-то язык должен быть в качестве живого примера. И желательно не такой язык, который потом никогда не встретится - ну просто ради экономии времени.

[identity profile] cybister.livejournal.com 2006-08-02 03:19 am (UTC)(link)
Я тож забыл, но далеко не отстой.
Недвано девушка мне сказала что ей потнесли си-ди со скринсеверами,
и там мой скринсевер (кажися фигуры лисажу в3д... что-то типа).
Под винду ! 4.5кб !!!
На Борланд паскакале. (На турбо кажись при навешивании соответствующих либ тоже пахало).Такие вот пирожки.
Если нужно - поищу, где-то валялось.

[identity profile] ex-neo-is-fl156.livejournal.com 2006-08-02 12:41 am (UTC)(link)
У меня где-то валялось на паскале. Могу посмотреть, если надо.

P.S. FYI: Счастливые читатели Д. Кнута "Искусство Программирования" т.3. могли реализовывать FFT за O(NlogN) ещё задолго до того, как Википедия появилась на свет ;)

[identity profile] psilogic.livejournal.com 2006-08-02 07:13 am (UTC)(link)
Только для числа отсчетов, равного степени двойки. Знаменитый алгоритм Кули-Тьюки. Здесь не о нем.

[identity profile] sanitareugen.livejournal.com 2006-08-02 07:31 am (UTC)(link)
Поищите ещё Винограда.
Есть в Гольденберг, Матюшкин, Поляк. "Цифровая обработка сигналов".

[identity profile] ex-neo-is-fl156.livejournal.com 2006-08-02 07:57 am (UTC)(link)
Да, не обратил внимание вначале.
Тогда это действительно ценно. Спасибо.

У меня к Вам два вопроса (чисто из любопытства)

1. Для какого приложения Вы заинтересовались FFT в данный момент?

2. Что означает слово "freeware", написанное Вами в исходниках - это в смысле GPL / Open Source, или в смысле "делайте что хотите бесплатно" (в т.ч. можно копирайтить derived code, зарабатывать миллиарды, используя этот код, ни копейки Вам не заплатив, и т.п.)?

[identity profile] psilogic.livejournal.com 2006-08-02 08:29 am (UTC)(link)
Кстати, заглянул в 3-й том и увидел, что вы меня наипали. Не видно там вообще упоминания Фурье. Разве что я плохо искал.

[identity profile] ex-neo-is-fl156.livejournal.com 2006-08-02 04:48 pm (UTC)(link)
У меня нет под рукой Кнута. Похоже, я просто ошибся томом. Думаю, FFT должен быть во втором томе ("получисленные алгоритмы") где-то в разделе про быстрое умножение длинных чисел.

[identity profile] odinokov.livejournal.com 2006-08-02 09:31 am (UTC)(link)
срочности нет, просто интерес8)

[identity profile] ex-neo-is-fl156.livejournal.com 2006-08-03 05:16 pm (UTC)(link)
Похоже, у меня только тот вариант, который для случая степени двойки - со скоростью NlogN, и для любого случая, но N2. Так что пользуйтесь предложенным вариантом на C...

[identity profile] metaclass.livejournal.com 2006-08-02 08:53 am (UTC)(link)
Перевести что ли на дельфи, все равно ж когда-нибудь понадобится самому...

[identity profile] odinokov.livejournal.com 2006-08-02 08:59 am (UTC)(link)
вот и грю8))

[identity profile] ex-neo-is-fl156.livejournal.com 2006-08-03 05:16 pm (UTC)(link)
А вдруг никогда не понадобится? Лишний work?