Отфильтруйте частоту питания из сигнала с низкой частотой дискретизации

У меня есть некоторый записанный сигнал с частотой дискретизации 100 Гц. Я хочу отфильтровать частоту 60 Гц из сигнала. Я использую butter() фильтр от signal пакет в R. Но это не позволяет нам отфильтровывать частоты, превышающие частоту Найквиста. Поэтому, когда я пытаюсь применить фильтр Баттерворта

butter(5,W=c(58,62)/100*2,type="stop")

Я получаю

Error in butter.default(5, W = c(58, 62)/100 * 2, type = "stop") : 
  butter: critical frequencies must be in (0 1)

На странице руководства по фильтрам Чебышева упоминается то же требование к отфильтрованным частотам.

Могу ли я сделать что-нибудь здесь, не повышая частоту сигнала? Какие другие фильтры я могу использовать?

1 ответ

Решение

Вы не можете отфильтровать частоту 60 Гц, потому что в сэмплированном сигнале такой частоты нет из-за теоремы Найквиста.

Однако то, что вы можете найти в сэмплированном сигнале, это псевдоним частоты 60 Гц. Он расположен на частоте 40 Гц из-за эффекта свертывания на частоте 50 Гц (половина частоты дискретизации). Вы можете отфильтровать эту частоту, но вы также потеряете информацию об исходной частоте 40 Гц.

Другие вопросы по тегам