Вместо непосредственного применения фильтра верхних частот (который может быть довольно сложным для очень низких частот - в итоге вы получаете большое количество коэффициентов и различные проблемы со стабильностью и пульсацией полосы пропускания и т. Д.), Вы можете вместо этого рассмотреть возможность реализациифильтр нижних частот, который даст вам оценку значения смещения постоянного тока, а затем вычтет это отфильтрованное смещение из вашего сигнала, т.е. вместо:
y = HPF(x)
сделайте это:
y = x - LPF(x)
Фильтр нижних частот, вероятно, может быть довольно простым фильтром с относительно небольшим количеством терминов.Большим преимуществом этой реализации является то, что ваши высокочастотные компоненты не должны иметь никаких нежелательных артефактов из-за фазы, пульсации и т. Д., Поскольку все, что вы делаете, это вычитаете из выборок почти постоянное значение постоянного тока.
Единственное единственноепотенциальным недостатком является то, что, если смещение постоянного тока велико, у вас может быть достаточно длительное время первоначального установления, прежде чем оценка смещения постоянного тока будет точной (хотя это также верно для любой другой реализации, такой как прямой фильтр верхних частот, конечно).Если у вас есть априорное знание того, каким может быть значение смещения (например, если оно не сильно меняется от прогона к прогону, и вы знаете значение из предыдущего прогона), тогда вы можетеиспользуйте это, чтобы оптимизировать время установления, инициализируя переменные состояния LPF к подходящему значению, а не 0.