Улучшение разрешения по частоте выходного БПФ путем ограничения диапазона частот? - PullRequest
7 голосов
/ 03 ноября 2010

Я новичок в БПФ и обработке сигналов, так что, надеюсь, этот вопрос имеет смысл и / или не глуп.

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

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

Однако, для моего предполагаемого применения, меня не волнует большая часть спектра. Мне нужна только информация о спектре для узкого частотного диапазона, скажем, от 100 до 1600 Гц. Есть ли способ изменить реализацию FFT так, чтобы я мог улучшить разрешение вывода в частотной области, сохраняя размер входного буфера постоянным (и небольшим)? Другими словами, могу ли я обменять выходную общую пропускную способность на выходное разрешение? Если да, то как это сделать?

Хотя я в лучшем случае слабо разбираюсь в математике, кажется, что заполнение входного буфера нулями может быть интересным, не так ли?

Заранее благодарим за любую помощь, которую вы можете предложить.

Ответы [ 6 ]

8 голосов
/ 03 ноября 2010

Вы не можете получить дополнительную информацию из ниоткуда, но вы можете уменьшить задержку , перекрывая последовательные БПФ.Для оценки спектра мощности в реальном времени обычно перекрывают последовательные входные окна на 50%.

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

3 голосов
/ 03 ноября 2010

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

Также ваша оконная функция расширит частотные пики в ваших результатах.

OTOH, если частота падает между двумя бинами FFT, можно получить лучшее разрешение, посмотрев на соотношение соседних бинов: http://www.tedknowlton.com/resume/FFT_Bin_Interp.html

Но это не работает для более сложных сигналов (со многими одновременными частотами).

  • Если вы хотите узнать, присутствуют ли определенные частоты, я бы посмотрел на фильтры и корреляцию.

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

Дополнение: Немного интуиции:

  1. Поскольку БПФ достаточно для реконструкции, существует в основном бесконечно много спектров с более высоким разрешением, которые приводят к одному и тому же вектору выборки, и ни один из них не является более корректным. Интерполяция бина по существу вычисляет другое («более подходящее») представление, чем у равномерно расположенных бинов Fast -Fourier-Transform.

  2. В дискретном квантованном случае, например 8 бит, подумайте о двух частотах, которые очень близки. Если разница достаточно мала, они дадут тех же , скажем 256, выборок. Но, глядя на большее количество образцов (возможно, 1024), вы заметите, что разница становится достаточно большой, чтобы ее можно было увидеть.

PS: фильтрация для передискретизации также может быть выполнена после БПФ, просто игнорируя более высокие бины.

3 голосов
/ 03 ноября 2010

Как говорит Марк, добавление нулей приведет к появлению гармоник (нежелательных частот).

Также, когда вы говорите «больше выборки», вы имеете в виду больше выборок или более высокую частоту дискретизации?Более высокая частота дискретизации приведет к большему количеству выборок в единицу времени, но казалось, что вы имели в виду больше выборок с фиксированной частотой выборки (т. Е. Анализируете большие фрагменты времени).

Вы упомянули верхнюю частоту1600 Гц, поэтому вам потребуется частота дискретизации по крайней мере 3200 Гц, т.е.Удвоение.

Что касается периода времени для обработки сразу: вам нужно будет торговать отзывчивостью (10-секундный буфер займет 10 с + время обработки, прежде чем вы получите результат) по сравнению с уменьшением шума.Меньшие буферы с большей вероятностью воспринимают сигналы побочных шумов.

Кроме того, на первый взгляд, размышления в частотной области могут быть сложными.Лучше всего для этого я нашел не классы прикладной математики, которые я посещал в униве, а класс кристаллографии.Кристаллическая дифракционная картина представляет собой всего лишь 2-мерное преобразование Фурье.Получение информации о том, как дифракционная картина визуально связана с кристаллической структурой, оказалось очень полезным, когда речь шла о работе с БПФ сейсмических данных в моей первой работе.

2 голосов
/ 03 ноября 2010

Можно выполнить низкочастотную фильтрацию данных с частотой 1600 Гц (или несколько выше, скажем, 2 кГц), а затем выполнить повторную выборку до более низкой частоты дискретизации (удвоенной частоты фильтра, например, 4 КБ), чтобы уменьшить количество выборок. Затем используйте заполнение нулями, чтобы увеличить разрешение по частоте.

0 голосов
/ 11 ноября 2010

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

0 голосов
/ 03 ноября 2010

Ваша заявленная цель несовместима с вашим вопросом.Высота звука не совпадает с разрешенным частотным пиком.Пожалуйста, прочтите обширную литературу по вокальной и музыкальной оценке высоты звука (которая относится ко многим другим типам звуков, которые имеют воспринимаемую высоту звука).Адаптивные / инкрементные / скользящие методы временной области могут дать вам меньшую задержку, чем методы на основе блоков частотной области.

Заполнение нулями вектора аудиосэмпла почти идентично с интерполяцией данных частотной области.Если шум или близкие помехи отсутствуют, вы можете найти более точное (более высокое «разрешение») положение пика частоты.Но вы не получите лучшего отклонения близлежащих спектральных пиков (разрешение разделения) или шума.

Окно данных (фон Ганна и т. Д.), Прежде чем ваше БПФ может помочь удалить часть шума, вызванного соседними,но не с двумя или двумя соседними частотами.

Добавлено: если ваш низкочастотный фильтр после выборки не является почти идеальным и имеет линейную фазу, вы можете фактически потерять разрешение по частоте вблизи границ желаемой полосы частот.,Фильтрация не добавляет никакой фактической информации в интересующую группу, поэтому не помогает в увеличении «разрешения».Оконное управление с большей вероятностью уменьшает помехи от других частот.

...