在进行脑电分析的学习时对compute_psd这个函数有所疑惑,故作此文记录
import numpy as np
import mne
sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = (sample_data_folder / 'MEG' / 'sample' /
'sample_audvis_raw.fif')
raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False).crop(tmax=60)
print(raw.info)
'''
sfreq: 600.6 Hz
Effective window size : 0.426 (s)
一个窗口包括的数据点数量为255.8556,约为256,即默认fft点数
fft点数一般取2的n次方
而窗口大小要做到window_size * sfreq小于但尽量接近fft点数
'''
spectrum = raw.compute_psd(method='welch')
# spectrum = raw.compute_psd(method='welch', fmin=0, fmax=30)
print(spectrum.freqs.shape)
print(spectrum.freqs)
'''
生成频谱的范围是0到采样频率的一半(奈奎斯特频率)
Effective window size : 0.426 (s)
(129,)
故freqs最后一点为300.30749512
注释数据中:
Effective window size : 0.426 (s)
(13,)
'''
'''
结论:
compute_psd()得出的windows size只与原数据的采样频率相关
接近但小于设置的fft点数,而fft点数又为2的n次方,在该函数中的默认值为256
'''