![]() |
|
Модераторы: bsa |
![]()
|
|
| unitto |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2009 Репутация: нет Всего: нет |
Доброго времени суток. Полтора часа насилования гугла не помогло найти теоретические сведенья для решения задачи:
Виконати чисельний спектральний аналіз і синтез періодичної функції f(t) (за n першими гармоніками розкладання в ряд Фур’є). Результат спектрального синтезу функції та вихідну функцію зобразити графічно. В частности меня интересует как в С++ можно заданую функцию разложить на гармоники ряда Фурье, если можно с сылками на источники. Заранее благодарен. Это сообщение отредактировал(а) unitto - 27.4.2010, 09:23 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
гугли FFT
|
|||
|
||||
| ToTToRo |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 19.4.2010 Репутация: нет Всего: нет |
google в помощь.
|
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
| unitto |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2009 Репутация: нет Всего: нет |
есть предложения по работе с формулами на этой странице в с++ ? |
|||
|
||||
| bilbobagginz |
|
|||
![]() Naughtius Maximus ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8813 Регистрация: 2.3.2004 Где: Israel Репутация: нет Всего: 317 |
unitto,
если ты не понимаешь математику этого действия, поищи готовые реализации DFT (и в частности FFT) в сети с открытым кодом, и попробуй понять как пример. надо понять общую идею перехода из измерения времени в измерение частоты, придется тебе читануть надо понять бесконечность ряда произвольной и непрерывной функции. надо понять ограниченность цифрового компьютера с т.з. количества значений, которые он может принимать по уровням и частотам, и то же самое по выходам. потом, в рамках данных ограничений отбросить наименее значимые гармоники. в принципе это и есть идея mp3 (только там еще вычисляют этот ряд кускам сигнала какой-то длинны. -------------------- Я ещё не демон. Я только учусь. |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
||||
|
||||
| unitto |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2009 Репутация: нет Всего: нет |
ок, пасибо Добавлено через 1 минуту и 42 секунды
не работал с комплексными числами в с++ и уверен что в этой работе можно обойтись без них... |
||||
|
|||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Преобразование Фурье делается в комплексных числах. Но если хочется самому написать всю арифметику комплексных чисел - флаг в руки
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Чисто случайно, мне удалось добыть фрагмент ультра секретного кода целочисленного FFT под кодовым названием "бабочка"
Добавлено через 2 минуты и 53 секунды Забыл упомянуть что массив im должен быть заполнен нулями перед вызовом функции. В нем будет возвращена комплексная часть спектра. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| unitto |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2009 Репутация: нет Всего: нет |
правильно ли я понял:
![]() наша заданая функция f(x) есть сума гармоник fn(x) тогда гармонику можно будет "изьять" "лобовым" делением на e^inx ? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Это аналитическая формула. Формула дискретного фурье выглядит так. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| unitto |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 28.12.2009 Репутация: нет Всего: нет |
я так понимаю делать надо с помощью простого фурье с плавающей точкой?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 4 Всего: 459 |
Это проще. Не нужно следить за выходом из диапазона. Собственно xvr уже представил алгоритм в наиболее простой и наглядной его форме. Чтобы получить амплитуды гармоник нужно взять модуль от каждого полученного комплексного числа. Тут 2 варианта. Либо использовать 2 массива чисел с плавающей точкой, либо 1 массив комплексных. С точки зрения математики нагляднее всего работать именно с комплексными числами, тем более что для вас производительность не играет совершенно ни какой роли. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Видите в формуле в показателе степени у 'e' стоит такая буква 'i'? Это мнимая единица. Так что с 'простой плавающей точкой' - облом. Не простая она, а комплексная Если хотите простоты - берите мой код, если скорости - код от Alexis, в нем комплексная арифметика расписанна явно (в виде операций отдельно над действительными и мнимыми частями) и измененн алгоритм (вычисляется не Дискретное Преобразование Фурье а Быстрое Преобразование Фурье, результат тот же, но быстрее и запутаннее) Добавлено через 8 минут и 47 секунд Да, если вам просто нужен спектр и не обязательно Фурье - делайте преобразование Хартли, оно без комплексных чисел |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |