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


15

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

Меня учили использовать butter(для разработки фильтра Баттерворта, известного как фильтр с максимально плоской величиной) и filtfilt(цифровая фильтрация нулевой фазы) полосовую фильтрацию сигналов ЭЭГ (электроэнцефалограмма) в автономном режиме MATLAB (т.е. после завершения записи). Таким образом, вы можете избежать неизбежной «задержки», вызванной цифровым фильтром (то есть фильтрацией нулевой фазы).

Затем кто-то спросил меня, почему мы не можем использовать fft(быстрое преобразование Фурье), чтобы получить представление сигнала в частотной области, а затем установить нулевую мощность нежелательных частот, а затем ifft(обратное быстрое преобразование Фурье), чтобы восстановить отфильтрованные данные во времени домен для той же цели. Это манипулирование в частотной области звучало для меня проще и разумнее, и я не мог ответить, почему.

Каковы преимущества и недостатки использования простого fft/ifftметода для полосовой фильтрации? Почему люди предпочитают использовать цифровые фильтры FIR или IIR?

Например, является ли fft/ifftметод более подверженным спектральной утечке или ряби по сравнению с установленными цифровыми фильтрами? Способ также страдает от задержки фазы? Есть ли способ визуализации импульсного отклика для этого метода фильтрации для сравнения?


Смежный (но не обязательно дублирующий) вопрос: electronics.stackexchange.com/questions/100348/why-use-a-filter/…
helloworld922

Использование БПФ для фильтрации сигнала абсолютно допустимо, но есть несколько вещей, на которые стоит обратить внимание. См. Этот аналогичный вопрос / ответ для получения дополнительной информации: stackoverflow.com/a/2949227/565542
sbell

5
Подобные вопросы могут быть более подходящими для сайта обработки сигналов .
Джейсон Р

2
Я думаю, что руководство для ученых и инженеров по цифровой обработке сигналов Стивеном В. Смитом есть ответ. Я думаю, что он говорит, что сэмплирование сэмплирования намного эффективнее с цифровым фильтром. Но есть минимальная ширина окна (64 выборки или больше, я точно не помню), когда более уместно задействовать преобразование FFT, где вы можете иметь кирпичный фильтр в домене freq. Эффективность не единственная проблема. Кирпичный фильтр подразумевает, что вам нужно использовать образцы из будущего, что невозможно в режиме реального времени.
Val

Спасибо, я искал что-то вроде сайта обработки сигналов, но не смог его найти.
Куичи С. Накамура

Ответы:


9

Основная причина того, что обработка в частотной области не выполняется напрямую, связана с задержкой. Чтобы сделать, скажем, БПФ для сигнала, вы должны сначала записать весь сигнал во временной области, от начала до конца, прежде чем сможете преобразовать его в частотную область. Затем вы можете выполнить обработку, преобразовать ее во временную область и воспроизвести результат. Даже если два преобразования и обработка сигнала в середине являются практически мгновенными, вы не получите первую выборку результата, пока не будет записана последняя входная выборка. Но вы можете получить «идеальные» результаты в частотной области, если вы готовы с этим мириться. Например, 3-минутная песня, записанная с частотой 44100 сэмплов / секунду, потребует от вас 8 миллионов точечных преобразований, но это не имеет большого значения для современного процессора.

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

Это происходит из-за допущений, которые подразумеваются в процессе, который преобразует между временной областью и частотной областью (и наоборот). Например, FFT и IFFT «предполагают», что данные являются циклическими; другими словами, эти блоки идентичных данных во временной области поступают до и после обрабатываемого блока. Так как это вообще не так, вы получаете артефакты.

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

(Это расширенная версия моего предыдущего ответа .)


1
Большое спасибо за подробный ответ в простых словах. Теперь я вижу, что в своем вопросе я должен был упомянуть, что моя работа в основном предназначена для анализа в автономном режиме, а не в режиме онлайн или в режиме реального времени. Я отредактирую вопрос. Ваша точка зрения совершенно ясна: поскольку БПФ требует всей продолжительности данных, вам нужно дождаться окончания записи.
Куичи К. Накамура

1
ОК, достаточно справедливо. Позвольте мне отметить еще одну вещь о фильтрации в частотной области, которая может или не может быть проблемой для вас: фильтры не будут причинно-следственной связи во временной области. Другими словами, их импульсные реакции распространяются как на положительное, так и на отрицательное время. Это может иметь некоторые неожиданные последствия, если вы не знаете об этом.
Дэйв Твид

Благодарю. Я посмотрел "Причинный фильтр" в Википедии. По определению, вагон FFT не заботится о времени, поэтому я вижу, что он не причинен. Эта природа объясняет, почему вы не можете использовать его для фильтрации в реальном времени.
Куичи К. Накамура

3
@DaveTweed: Ваше утверждение о требовании БПФ на 8 миллионов точек для фильтрации 3-минутной песни, сэмплированной с частотой 44,1 кГц, неверно. Алгоритмы свертки на основе БПФ на самом деле активно используются на практике. Такие методы, как overlap-save и overlap-add , используются так, что требуются более скромные размеры FFT (и, следовательно, задержка обработки). Эти методы делают именно то, что предлагает ваш второй абзац: используйте меньшие блоки, обрабатывая «краевые эффекты», возникающие между ними.
Джейсон Р

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

2

Вы, конечно, можете использовать идеальные фильтры «boxcar» в частотной области. Двойственность говорит, что это эквивалентно свертыванию с функцией sinc бесконечной длины. Чтобы уменьшить артефакты, связанные с ограничением длины, функция sinc часто умножается на окно. Возможно, вы слышали о Хэмминге, Ханнинге (на самом деле фон Ханн), о повышенном косинусе и других техниках окон. Свертка может быть вычислительно проще, чем подход fft / ifft, но ответы те же.

У каждого метода будут свои плюсы и минусы. Баттерворт - IIR, а вагоны - FIR. Баттерворты, вероятно, более плоские в полосе пропускания, но, вероятно, с менее крутым спадом, в зависимости от порядка БИХ и ширины КИХ. Фильтрфильт будет сложнее реализовать в режиме реального времени.


1
Чтобы получить действительно четкое объяснение работы с окнами и блочной фильтрацией, посмотрите книгу « Цифровые фильтры » Р. У. Хэмминга. Доступно в Дувре, поэтому по очень приятной цене. (Между прочим, Скотт, я думаю, что это именно то имя, по которому названо окно Хэмминга, а фон Ханн назвал свое имя в названии своего окна)
Фотон

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

1
Договорились об идеальной бесконечной длине, но не так уверены после усечения и обработки окон
Скотт Сейдман

@ThePhoton Спасибо за исправление Хэмминга / фон Ханна. Не могу правильно визуализировать мою книжную полку из дома.
Скотт Сейдман

@ Фотон; Спасибо за книгу цифровых фильтров Хэмминга . Я смотрел на это, и это казалось написанным специально для элементарных учеников. Я купил его с надеждой. :)
Kouichi C. Nakamura

0

Смежные вопросы

Почему плохая идея фильтровать, обнуляя ячейки БПФ? /signals/6220/why-is-it-a-bad-idea-to-filter-by-zeroing-out-fft-bins

Удаление значений из результата FFT так же, как фильтрация? /signals/11487/removing-values-from-fft-result-same-as-filtering?noredirect=1&lq=1

Почему мы используем окно во временной области, а не БПФ для изменения спектра, а не обратное БПФ /signals/8911/why-do-we-use-window-in-time-domain-rather -than-делать-FFT-изменение-The-спектр-и-т? noredirect = 1 & LQ = 1

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.