Как я могу использовать быструю свертку на основе FFT для реализации LPF, если быстрая свертка требует LPF? - PullRequest
5 голосов
/ 16 ноября 2011

Я опытный инженер-программист с небольшим знанием DSP колледжа.Я работаю над приложением для смартфона для обработки данных сигнала, таких как микрофон (с частотой дискретизации 44100 Гц) и акселерометр (с частотой дискретизации 32-50 Гц).Моими приложениями могут быть, например, детекторы основного тона и т. Д.

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

Вот моя аргументация:

  1. Я читаю сигнал и хочу использовать LPF для сглаживания (удаления псевдонимов).

  2. Для реализацииLPF на моем смартфоне, я решил применить FIR-фильтр (а именно, оконную функцию sinc) к сигналу во временной области.Пусть x [n] будет моим сигналом, а f [n] будет коэффициентами моего ядра фильтра.Поэтому я хочу выполнить свертку между x [n] и f [n], где x [n] имеет длину N (обычно 512), а f [n] имеет длину M (обычно 256).

  3. Я реализовал простую одномерную свертку на своем смартфоне (Android и iPhone).Алгоритм является типичной версией вложенного цикла и работает в O (NM).На смартфоне он работает слишком медленно для N = 512 и M = 256.

  4. Затем я посмотрел на алгоритм быстрой свертки , который использует FFT и работает в O(N lgN).В частности, отфильтрованный сигнал имеет вид: отфильтрованный x [n] = IFFT (FFT (x). * FFT (f)), где FFT - это fft, IFFT - обратное FFT, а. * - поэлементное умножение.из двух массивов.

  5. Однако в этом процессе я нахожу противоречие: IFFT ( FFT (x) . * FFT (f)).Это требует, чтобы я взял FFT x [n], но x [n] может иметь псевдонимы.Это именно моя начальная проблема с шага 1!

Итак, как мне разрешить это противоречие?Как я могу использовать быструю свертку для реализации ФНЧ, если для внутренней свертки требуется ФНЧ?

ПРИМЕЧАНИЕ. Некоторые ребята из EE сказали мне, что в некоторые микрофоны встроен аппаратный LPF, но я не уверен в этом с микрофоном смартфона или акселерометром.

Ответы [ 5 ]

4 голосов
/ 17 ноября 2011

Проще говоря: : вычисление FFT (x) не приводит к наложению псевдонимов.

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

Скажите, что на частоте 30 кГц был ложный тон (например): он должен быть отвергнут аппаратным обеспечением смартфона. Когда у вас есть эти сэмплы 44,1 кГц, вы застряли с любыми продуктами-псевдонимами, полученными через сэмплер. Вы не можете отменить псевдонимы после выборки (это не совсем верно, но это верно для сигналов основной полосы частот, с которыми вы имеете дело). Вы должны пойти дальше и предположить, что дизайнеры телефонов поняли это правильно, и вам не придется беспокоиться о псевдонимах продуктов с содержанием сигнала выше ~ 20 кГц.

Что подводит нас ко второму этапу отбора проб. Вы совершенно правы, что вам нужно применить другой фильтр сглаживания, прежде чем вы уменьшите. Любое содержимое сигнала ниже 20 кГц, но выше 2x вашей частоты пониженной дискретизации будет иметь псевдоним на выходе, если вы сначала не ослабите его. Ключ в том, что вы рассчитываете FFT (x) ПЕРЕД понижающей дискретизацией, затем применяете фильтр, а затем понижаете. Это то, что позволяет вам получать выходные данные с защитой псевдонимов.

Скорее всего, смартфон оснащен дельта-сигма-АЦП, который использует относительно мягкий аналоговый фильтр сглаживания, либо 1, либо 2 полюса, затем с высокой частотой дискретизации (64 * 44,1 кГц или выше), а затем применяет цифровые фильтры. в процессе понижающей выборки. МЭМС-акселерометры также имеют встроенную защиту от псевдонимов. Если вы хотите проверить это, используйте источник синусоидальной волны, подключенный к электродинамическому шейкеру (или мускулистому конусу сабвуфера), и встряхните телефон с частотой несколько кГц. Вы не должны видеть выходной сигнал акселерометра. Затем запустите твитер с частотой 30 кГц и посмотрите, показывает ли микрофон что-либо.

3 голосов
/ 16 ноября 2011

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

1 голос
/ 18 ноября 2011

Фильтр нижних частот должен быть размещен перед АЦП, т.е. он должен быть какой-то аналоговой схемы.Вы не можете удалить псевдонимы из сэмплированного сигнала, потому что вы не знаете, какая часть сэмплированного сигнала вызвана алиасами, и в этом весь смысл алиасинга.

0 голосов
/ 17 ноября 2011

Нет противоречий. X имеет высокие частоты. Y = X*F больше не имеет высоких частот, потому что F отфильтровывает (то есть умножает) их.

0 голосов
/ 16 ноября 2011

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

...