Удалить неизвестное смещение постоянного тока из непериодического дискретного сигнала времени - PullRequest
12 голосов
/ 09 августа 2011

Существует ли какой-либо процесс, который может определять / удалять неизвестное смещение постоянного тока из непериодического сигнала с дискретным временем?

Рассматриваемый сигнал имеет частоту дискретизации 25 Гц и интересующие гармоники между 0,25 и 3 Гц.

Я пытался использовать фильтры высоких частот, смешанные результаты, сначала я использовал гассиана 10-го порядкас Fc = 0 Гц, это хорошо сработало, удалив смещение, но оно также сильно ослабило переменный ток, хотя и не изменило форму сигнала, затем я использовал равноправный сигнал 168-го порядка со стоп-полосой на 0 Гц и полосой пропускания на 0,25 Гц, фазасдвиг был слишком сильным, а форма сигнала слишком искаженной, искажение, вероятно, могло бы быть уменьшено, если бы полоса пропускания была снижена до 0,1 Гц, но это лишь еще больше увеличило бы фазовый сдвиг, который мне нужно сохранить до минимума.

До и после применения x - LPF (x), в соответствии с предложением Пола Р.

enter image description here

Ответы [ 5 ]

10 голосов
/ 09 августа 2011

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

a = [1 , -0.98]; b = [1,-1];

y = filtfilt(b,a,x);

Чем ближе второе значение a к -1, тем уже будет ваша метка.

9 голосов
/ 09 августа 2011

Смещение постоянного тока означает, что к сигналу было добавлено некоторое постоянное значение (название происходит от добавления напряжения постоянного тока к аналоговому сигналу переменного тока). Если компонент постоянного тока действительно постоянен (и не изменяется очень медленно), то вам не нужно проектировать некоторые высокочастотные (и потенциально нестабильные) фильтры верхних частот - вы можете просто вычесть среднее значение вашего сигнала из сигнала - который, конечно, также является фильтром верхних частот (усреднение - это тип низкочастотного фильтра, а «1 минус среднее» - это high-apss) - но очень простой.

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

3 голосов
/ 09 августа 2011

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

y = HPF(x)

сделайте это:

y = x - LPF(x)

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

Единственное единственноепотенциальным недостатком является то, что, если смещение постоянного тока велико, у вас может быть достаточно длительное время первоначального установления, прежде чем оценка смещения постоянного тока будет точной (хотя это также верно для любой другой реализации, такой как прямой фильтр верхних частот, конечно).Если у вас есть априорное знание того, каким может быть значение смещения (например, если оно не сильно меняется от прогона к прогону, и вы знаете значение из предыдущего прогона), тогда вы можетеиспользуйте это, чтобы оптимизировать время установления, инициализируя переменные состояния LPF к подходящему значению, а не 0.

1 голос
/ 10 августа 2011

Вы можете создать симметричный FIR-фильтр в качестве фильтра нижних частот, который оценивает DC и затем вычитает выходной сигнал из вашего входного сигнала. Этот фильтр имеет постоянную групповую задержку.

1 голос
/ 09 августа 2011

Как уже говорили другие, чтобы удалить смещение постоянного тока, вы можете просто вычесть среднее. Ваш сигнал не обязательно должен быть периодическим, но он должен быть достаточно длинным, чтобы получить хорошую оценку компонента DC.

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

...