Поскольку обсуждение в существующих ответах и комментариях было сосредоточено главным образом на том, чем на самом деле являются фильтры Савицкого-Голея (что было очень полезно), я постараюсь добавить к существующим ответам, предоставив некоторую информацию о том, как на самом деле выбрать фильтр сглаживания, который Насколько я понимаю, о чем на самом деле идет речь.
Прежде всего, я хотел бы повторить то, что выяснилось в дискуссии, порожденной другими ответами: категоризация сглаживающих фильтров в вопросе на линейные и не зависящие от времени (LTI) FIR / IIR фильтры, с одной стороны, и Фильтры Савицкого-Голея, с другой стороны, вводят в заблуждение. Фильтр Савиткзи-Голея - это просто стандартный КИХ-фильтр, разработанный в соответствии с определенным критерием (приближение локального полинома). Таким образом, все фильтры, упомянутые в вопросе, являются фильтрами LTI.
Остается вопрос, как выбрать сглаживающий фильтр. Если вычислительная сложность и / или память являются проблемой, фильтры БИХ могут быть предпочтительнее, чем фильтры КИХ, потому что они, как правило, достигают сравнимого подавления шума (т.е. затухания в полосе задерживания) с гораздо более низким порядком фильтра, чем фильтры КИХ. Но обратите внимание, что если необходима обработка в реальном времени, одним из возможных недостатков БИХ-фильтров является то, что они не могут иметь точно линейную фазовую характеристику. Таким образом, желаемый сигнал будет испытывать некоторые фазовые искажения. При автономной обработке можно избежать фазовых искажений даже с помощью БИХ-фильтров, применяя фильтрацию нулевой фазы .
Помимо соображений, обсуждаемых в предыдущем абзаце, важен, главным образом, критерий проектирования, а не столько, если фильтр является FIR или IIR, потому что любой (стабильный) фильтр IIR может быть аппроксимирован с произвольной точностью с помощью фильтра FIR, и любой КИХ-фильтр может быть аппроксимирован БИХ-фильтром, хотя последний может быть намного сложнее. Соответствующий критерий проектирования, очевидно, зависит от свойств данных и шума. Когда дело доходит до сглаживания, мы обычно предполагаем достаточно передискретизированные (то есть сглаженные) данные. Если шум имеет в основном высокочастотные составляющие, т. Е. Если имеется небольшое спектральное перекрытие между данными и шумом, мы хотим максимизировать затухание в полосе пропускания или минимизировать энергию в полосе подавления, при этом максимально сохраняя требуемый сигнал. В этом случае мы могли бы выбрать линейно-фазовый КИХ-фильтр, разработанный в соответствии с минимаксным критерием с использованием алгоритма Паркс-Макклеллана. Мы также могли бы минимизировать энергию полосы останова (то есть минимизировать мощность шума в полосе останова), выбрав метод наименьших квадратов. Сочетание двух критериев (минимакс и наименьших квадратов) возможно, выбравконструкция с наименьшими квадратами с ограничениями , которая минимизирует энергию зоны останова, одновременно ограничивая максимальную ошибку аппроксимации в полосе пропускания.
Если спектр шума существенно перекрывается со спектром сигнала, требуется более осторожный подход, и затухание методом "грубой силы" не будет работать должным образом, потому что либо вы оставляете слишком много шума (выбирая слишком высокую частоту среза), либо искажаете желаемое Слишком сильный сигнал. В этом случае фильтры Savitzky-Golay (SG) могут быть хорошим выбором. Ценой, которую нужно заплатить, является посредственное затухание в полосе пропускания, но одно преимущество состоит в том, что некоторые свойства сигнала сохраняются очень хорошо. Это связано с тем, что фильтры SG имеют плоскую полосу пропускания, т.е.
dkH(ejω)dωk|ω=0=0k=1,2,…,r(1)
где r - порядок аппроксимирующего полинома, а H(ejω) - частотная характеристика фильтра. Свойство ( 1 ) гарантирует, что первые р моментов входного сигнала сохраняются на выходе, что означает, что ширина и высота пиков в требуемом сигнале хорошо сохраняются.
Конечно, существует также компромисс между двумя типами сглаживающих фильтров, которые обсуждались выше (высокое затухание в полосе пропускания и SG). Мы могли бы разработать КИХ-фильтр с определенной степенью плоскостности при ω = 0 и использовать оставшиеся степени свободы, чтобы максимизировать затухание в полосе пропускания или минимизировать энергию в полосе задержания. В случае КИХ-фильтров результирующая проблема проектирования является достаточно простой (и выпуклой), и общие процедуры оптимизации, доступные в нескольких пакетах программного обеспечения, могут использоваться для получения оптимального фильтра для данного приложения.
Для тех, кто интересуется теорией фильтров SG, наиболее подходящие ссылки, которые я могу порекомендовать, следующие:
НОТА
мой предыдущий ответ (перед этим редактированием), в котором было указано, что фильтр Савицкого-Голея (SG) является нелинейной изменяющейся во времени зависимой от входных данных, был неверным из-за преждевременной неверной интерпретации того, как фильтр Савицкого-Голея (SG) вычисляет свои выходные данные по предоставленной вики-ссылке. Так что теперь я исправляю это для тех, кто также увидит, как фильтры SG реализуются фильтрацией FIR-LTI. Благодаря @MattL. за его исправление, за отличную связь, которую он обеспечил, и за терпение, которое он имел (что я никогда не мог проявить) во время моего исследования проблемы. Хотя я бы честно предпочел более подробные возражения, которые, тем не менее, явно не нужны. Также обратите внимание, что правильный ответ - другой, этот только для дополнительного разъяснения свойства LTI фильтров SG.
Теперь неудивительно, что когда кто-то (кто никогда раньше не использовал эти фильтры) сталкивается с определением фильтра SG как полиномиального соответствия LSE низкого порядка с данными, он / она сразу же приходит к выводу, что они зависят от данных, нелинейны и изменяющиеся во времени (смены), адаптивные фильтры.
Тем не менее, процедура полиномиальной подгонки грамотно интерпретируется самими SG, так что она обеспечивает полностью независимую от данных линейную фильтрацию, не зависящую от времени, и, следовательно, делает SG в качестве фиксированного фильтра LTI-FIR.
Ниже приведена краткая сводка по ссылке, предоставленной MattL. По поводу каких-либо подробностей, которые, по-видимому, отсутствуют, обратитесь к оригинальному документу или попросите уточнить. Но я не хотел бы перепечатывать весь документ здесь.
Теперь для тех, кто знаком с процедурой полифизики LSE, я просто напишу полученное матричное уравнение (по ссылке), которое определяет оптимальный набор коэффициентов:
Теперь давайте на мгновение откинемся назад и обсудим вопрос здесь.
... Это (полифит LSE) может повторяться для каждой выборки входных данных, каждый раз создавая новый многочлен и новое значение выходной последовательности y [n] ...
Так как же нам преодолеть этот удивительный сюрприз? Путем интерпретации и определения вывода фильтра SG следующим образом:
КОММЕНТАРИЙ
MATLAB / OCTVE CODE
Выход:
Надеюсь, что это проясняет проблему.
источник