Недавно я работал с данными, отобранными с высокой частотой дискретизации (1M и выше).
Я пытаюсь написать эффективный многофазный фильтр (на основе кода, видимого здесь)
Мои скорости прореживания близки к 10000, поэтому частота Найквиста для фильтрации составляет ~ 100 Гц.
После некоторой отладки я понял, что при представлении моих отводов фильтра с помощью scipy.signal.freqz разрешение ограничено примерно 1000 Гц, это не меняется при увеличении порядка фильтра fir.
Я не смог найти документацию по этому вопросу, как я могу наблюдать за своим фильтром с более высоким разрешением?
Разрешение scipy.signal.freqz
ограничено количеством частотных точек worN
по формуле fs/2/worN
для половинного спектра (или fs/worN
для полного спектра). Поскольку worN
по умолчанию равно 512, с частотой дискретизации вашего сигнала 1 МГц вы получите разрешение примерно 1000000 Гц/2/512 ~ 1000.
Чтобы увеличить разрешение freqz
на вашем filterCoefficients
(в вашем случае полученном firwin
), просто увеличьте worN
. Например, с чем-то вроде:
w,h = freqz(filterCoefficients, worN=2048, fs=fs)
минимальный воспроизводимый пример поможет нам помочь вам