Вопрос

У меня есть сигнал в MATLAB и что рассчитать мгновенную фазу для определенной полосы. Я хочу отфильтровать сигнал в этот диапазон (с использованием полосового фильтра), а затем получить мгновенную фазу. Я знаю, что есть проблемы с использованием некоторых фильтров с нелинейными фазовыми ответами, есть ли способ обойти это? Я нашел некоторую информацию в Интернете о обратной фильтрации сигнала, но это все еще немного неясно. Я хотел бы избежать использования вейвлетов (они, вероятно, здесь излишни). Спасибо.

Это было полезно?

Решение

Если вы не прибегаете к некачественным методам (например, filtfilt предложено в комментарии Нибота), вы будете всегда иметь некоторое фазовое искажение. Линейные фазы FIRS с задержкой D добавят фазу 2*pi*f*d, в то время как нелинейная фаза IIR добавят фазу, которая не зависит от F.

В обоих случаях легко вычислить фазовое искажение (например, использовать freqz(num, den) для IIR) и объясняют это искажение при интерпретации полученного измерения. Конечно, у вас будут бессмысленные результаты, когда фаза значительно изменяется в диапазоне частот, который вас интересует, но это другая проблема.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top