как оценить (мощность сигнала на данной частоте) в зависимости от времени в питоне - PullRequest
3 голосов
/ 10 февраля 2011

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

Мое текущее «решение» - этоиспользовать функцию Matlab.specgram () из Matplotlib, которая возвращает 2-мерный массив мощности, и я просто разрезаю его.Однако меня это не устраивает, потому что я не полностью доверяю функции mab.specgram (), поскольку для вычисления спектрограммы по разным сигналам требуется разное время (даже если они имеют одинаковую длину).

1 Ответ

7 голосов
/ 10 февраля 2011

Существует множество способов сделать это.Один грубый, но эффективный способ - применить полосовой фильтр (на частоте 50 Гц), тем самым исключив все остальные сигналы, а затем вычислить среднеквадратичную мощность последних N выборок.на самом деле не FFT - просто посчитайте желаемую корзину.Окно может быть любым, что вы хотите (например, Кайзер с альфа-8).ДПФ одного бина - это просто сумма произведений сигнала с e ^ (i * n * w) (где w - 50 Гц при вашей частоте дискретизации, а n - итератор).пути, чем это.Это зависит от того, к чему вы пытаетесь быть устойчивым, как быстро движется сигнал и ожидаете ли вы шума или других сигналов в миксе.Если вы не пытаетесь извлечь сигнал из какофонии других, вам не нужно идти на все.

...