Цитата(Hoodwin @ Jun 22 2013, 13:26)

Пока что в голову приходит такой способ.
1) ФНЧ, оставить полосу порядка 200-300 Гц.
2) децимация сигнала на частоту работы полосового фильтра.
3) Полосовой фильтр вокруг частоты 50 Гц.
4) ресемплинг на исходную частоту оцифровки
5) Вычитание из входного сигнала выделенной составляющей
Вполне жизненный способ, только пункты 1 и 3 реализуются в пункте 2, и называться этот пункт будет просто «децимация сигнала».
Цитата(Hoodwin @ Jun 22 2013, 13:26)

...Однако вот попробовал синтезировать какие-то фильтры в MATLAB, смущает, что на шагах 1-3 составляющая приобретает сдвиг по фазе, и становится непригодна для простого вычитания из исходного сигнала. Причем если для одной частоты еще можно как-то подравнять ФЧХ на 0 именно для частоты фильтрации, то для полосы 50-60 Гц фаза довольно сильно изменяется в полосе пропускания...
Цитата(Hoodwin @ Jun 23 2013, 15:49)

...Насколько я понимаю, любой фильтр вносит задержку в сигнал. Если сигнал состоит из одной частоты, то можно так подобрать параметры фильтра, что задержка станет равна одному периоду, и сдвиг по фазе обнулится, так что сигнал станет пригоден для прямого вычитания. Если же фильтр выделяет совокупность частот, то период повторения совокупности уходит в бесконечность и подобрать параметрами фильтра нулевую задержку уже невозможно. Остается довольствоваться задержкой, какая есть...
Используйте КИХ фильтры с линейной фазой и счастье Вам гарантировано.
Вообще, Ваши трудности не совсем понятны и во многом надуманны. Вот для демонстрации Вашего же метода прикрепил картинку с моделью для немного упрощенной задачи. С фильтрами не заморачивался, для простоты взял все фильтры одного порядка (порядок честно взял от фонаря). В реальности это все можно и нужно оптимизировать и минимизировать.
Цитата(Hoodwin @ Jun 23 2013, 15:49)

… то это эквивалентно задержке на 15-18 тысяч отсчетов на основной частоте дискретизации видео. Мне вот жалко в ПЛИС столько памяти тратить на тупую задержку сигнала. То есть, вырезать спектр от 0 до 700 Гц не проще, чем от 50 до 60. Проще всего давить ровно одну частоту - 50 Гц. И так по одной и давить все неугодные помехи.
Задержка все равно будет нужна, как минимум на половину порядка эквивалентного фильтра. Но ее легко реализовать на блочной памяти.
И таки да, вырезать спектр от 0 до 700 Гц проще, чем от 50 до 60.
Цитата(Hoodwin @ Jun 23 2013, 15:49)

Еще вот такой вопрос. Если мне нужно выделить всего одну частоту 50 Гц из сигнала, оцифрованного на 50-60 МГц, то мне явно нужно где-то 5 порядков частоты сбросить. Во сколько ступеней лучше делать децимацию такого рода?
Наименее затратно (по ресурсам) делать децимацию (и интерполяцию), используя максимально возможное количество ступеней. Но зачастую можно пойти на компромиссы.