Перейти к содержанию
    

Оптимизация дискретного преобразования Фурье

Это хорошая идея, если коэффициент нормировки будет константой для всех вариантов. Ну или хотя бы зависеть только от исходного числа отсчётов (которое не есть степень двойки) и желаемого (степень двойки, например 512).

если буфер добить нулями и сделать FFT то при правильной нормировке (Sqrt[512/348]) разницы нет и быть собственно не должно.

небольшая разница есть только из-за того что точек всё-таки не сильно много, и сетки частот разные.

post-3954-1475056895_thumb.png

зелёный график - ДФТ посчитанное Герцелем с шагом 1Гц. синий(348 точек) и желтый (512 точек = 348 + нули) график просто берут из него точки по разным сеткам частоты 8000/348 = 23Гц и 8000/512 = 15.6Гц соответственно

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ну так, заранее вычислите эти коэффициенты и разместите их в таблице.

 

Я, наверное, неоптимально представляю, но для N отсчётов ДПФ требуется матрица размером N^2. Взяв по максимуму N=500 получим: 4*N^2=4*500^2/1024=976 КБ. Многовато.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) считайте ДПФ Герцелем - пример в предыдущем посте на картинке. там только один косинус для каждой частоты считать надо. и можно и без таблицы.

2) делайте FFT.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я, наверное, неоптимально представляю, но для N отсчётов ДПФ требуется матрица размером N^2. Взяв по максимуму N=500 получим: 4*N^2=4*500^2/1024=976 КБ

Ну прямо в лоб-то считать не надо. Ваша таблица по рядам (и по столбцам) будет многократно повторяться.

 

Лучше составьте таблицу одного периода синуса на N=500 точек (для двоичного ЦПУ практичнее брать число N степени двойки, например N=512).

Для первой палки считаете МАКи, беря синусы: 0,1,2,..,499 (всего 500), для второй палки берете каждый второй: 0,2,4,..,498,0,2,4,..,498 (всего 500).

Для третьей палки берете каждый третий:0,3,6,.. (всего 500) и так далее.

 

Ну и не надо считать компоненты спектра (пресловутые "палки") выше частоты Найквиста, поскольку амплитудный спектр симметричен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для обработки речи что ДПФ, что БПФ - всё едино, т.к. любой микропроцессор успевает.

Например, в телефонном вокодере по 200 выборкам делают автокорреляцию,

по автокорреляции строят АР-фильтр, через фильтр пропускают синусоиды разной частоты,

выбирают синусоиды, на которые фильтр хорошо окликается

и делают интерполяцию частоты речевого сигнала.

На все это и многое другое типа вычисление периода основного тона, подбор сигнала возбуждения

тратится всего 20 млн.оп./с.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

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

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...