реклама на сайте
подробности

 
 
> Оптимизация дискретного преобразования Фурье, Как уменьшить время вычисления ДПФ?
Olegas
сообщение Sep 26 2016, 11:25
Сообщение #1





Группа: Участник
Сообщений: 5
Регистрация: 28-11-15
Пользователь №: 89 496



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

Сейчас вычисляю ДПФ формулами по определению (формулы ниже, плюс ещё вычисление амплитуды). При обработке одного слова требуется выполнить 30 преобразований Фурье. Число отсчётов лежит в пределах 200 - 500 (конкретное значение заранее неизвестно), но одинаковое для всех тридцати преобразований.



В результате при реализации такого алгоритма на stm32f417 при частоте 168 МГц и арифметике с 32-битными float эти 30 преобразований (анализ одного произнесённого слова) вычисляются четыре-пять секунд, что составляет большую часть времени всех вычислений (80%).

Для вычисления коэффициентов ДПФ и квадратных корней использую функции DSP-ядра этого микроконтроллера (синус, косинус, квадратный корень). И большую часть времени (68%) занимает как раз вычисление этих самых коэффициентов.

Как ещё можно ускорить вычисление ДПФ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Olegas   Оптимизация дискретного преобразования Фурье   Sep 26 2016, 11:25
- - ViKo   Например, увеличить в 4 раза частоту выборок, и де...   Sep 26 2016, 11:32
- - andyp   Цитата(Olegas @ Sep 26 2016, 14:25) В рез...   Sep 26 2016, 11:34
- - _pv   FFT требует ~100 тактов на отсчёт, соответственно ...   Sep 26 2016, 13:49
- - Olegas   Дело в том, что для распознавания необходим весь с...   Sep 27 2016, 06:29
- - Александр77   Глядя на первый график (на котором представлены сп...   Sep 27 2016, 06:42
- - _pv   интерполировать надо нормально. от линейной интерп...   Sep 27 2016, 06:50
- - Olegas   То, что частоты сдвинуты - не страшно. Гораздо хуж...   Sep 27 2016, 07:24
|- - Александр77   Цитата(Olegas @ Sep 27 2016, 10:24) То, ч...   Sep 27 2016, 12:02
|- - Olegas   Цитата(Александр77 @ Sep 27 2016, 15:02) ...   Sep 27 2016, 19:35
- - ViKo   Так вы не интерполируйте свой файл, тем более, лин...   Sep 27 2016, 07:33
- - _pv   этот файл "1.wav" сюда прикрепите   Sep 27 2016, 07:56
- - x893   Когда то для ускорения использовали только uint16 ...   Sep 27 2016, 12:25
|- - _pv   Цитата(x893 @ Sep 27 2016, 18:25) Когда т...   Sep 27 2016, 12:55
- - =GM=   Цитата(Olegas @ Sep 26 2016, 11:25) Для в...   Sep 28 2016, 08:01
|- - Olegas   Цитата(=GM= @ Sep 28 2016, 11:01) Ну так,...   Sep 28 2016, 17:13
|- - =GM=   Цитата(Olegas @ Sep 28 2016, 16:13) Я, на...   Sep 30 2016, 06:52
- - _pv   ЦитатаЭто хорошая идея, если коэффициент нормировк...   Sep 28 2016, 09:31
- - _pv   1) считайте ДПФ Герцелем - пример в предыдущем пос...   Sep 28 2016, 17:46
- - анатолий   Для обработки речи что ДПФ, что БПФ - всё едино, т...   Oct 5 2016, 15:34


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 17:32
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016