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

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

Коичи С. Накамура
источник