scipy Welch功率谱密度窗口参数的正确使用

busg9geu  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(158)

我试图计算特定频带上的Welch功率谱密度,用于EEG信号处理($\增量$(0-4赫兹),$\θ $(4-8赫兹),(8-13赫兹),$\beta$(13-30赫兹),(30-60赫兹),以及(60-90 Hz))。我想我可以通过将具有所需频率仓的整数数组传递给“window”参数来实现这一点,但这并不像预期的那样工作。不幸的是,这个参数的特定用例没有很好的文档记录,所以我很难理解如何修改代码以至少接近上面提到的bin。
目前,我正在执行以下操作:

bands = [0,4,8,13,30,60,90]
frequency_bins, psd = welch(sample, fs=256, window=bands)

但是,frequency_bins==[0, 36.57142857, 73.14285714, 109.71428571]。有谁能解释一下window参数在这种情况下完成了什么,以及是否有可能以某种方式使frequency_bins输出等于bands

9nvpjoqh

9nvpjoqh1#

我想这段代码可能对你有帮助。


# Frequency bands !

frequencies_bandes = {"delta" : [0,4],
                    "theta" : [4,8],
                    "alpha" : [8, 13],
                    "beta" : [13,35],
                    "gamma" : [30, 40]}

# Welch method to get spectrums estimation check parameters in the begining of this file

freq , spectrum = signal.welch(your_signal,sf,nperseg=nperseg,nfft=nfft,scaling='density')

# Geting frequencies indexes

frequencies_indexes = [np.logical_and(freq >= band[0], freq <= band[1]) for band in frequencies_bandes.values()]

# Getting mean power_energy per frequency band

mean_power_per_band_per_channel += [np.mean(spectrum[idx]) for idx in frequencies_indexes]

相关问题