periodogram
вычисляется с использованием БПФ (быстрого преобразования Фурье), которое реализует ДПФ (дискретное преобразование Фурье). ДПФ сигнала периода c имеет дискретные частоты, все кратные основной частоте, согласующиеся с длительностью кадра T
: f_0=1/T
.
Как следствие, чтобы получить те же частоты, длительности кадра должны быть одинаковыми, по крайней мере, кратными друг другу:
len(signal1)/fs1 = k*len(signal2)/fs2
Может потребоваться усечение одного из массивов. Аргумент nfft
из scipy.signal.periodgram()
также может быть использован, требование становится следующим:
nfft1/fs1 = k*nfft2/fs2
Если длительность кадра не соответствует фактическому периоду сигнала, или если сигнал не периодический c, оконный может ограничивать эффекты спектральной утечки. Это настолько полезно, что оно интегрируется в scipy.signal.periodgram()
в качестве аргумента. Вы можете попробовать значения 'hann'
или 'parzen'
, как указано здесь .
Если частоты дискретизации не похожи, может потребоваться повторная дискретизация сигнала. Для этого можно применить scipy.signal.resample () . Он также содержит аргумент window
и использует FFT для повторной выборки, что позволяет избежать некоторых ошибок, которые могут возникнуть при линейной интерполяции.