记录小波变换在脑电数据上的频率区间显示问题。
看到了关于小波分析应用在脑电分析的两段不同代码,想了解下区别,发现我对频率区间设置方面不懂,特此记录下。
我之前一直以为totalscal的设置就是频率区间的大小,
如:totalscal设置45,以为显示的频率区间会是1~45HZ,但不是。
其实显示的是0~125HZ
才知道totalscal=45其实把频率段分成45份。显示的频率区间其实和脑电的采样频率有关,即如上面的fs=250,显示的区间是0~fs/2。
totalscal=45只是将0~fs/2分割为45份,要想显示8到30.5HZ范围的脑电有两种方法,一是:改变scales的区间设置,如下图将区间设为2.88到10.98,共有45个数,
频率区间显示为8-30.5HZ
其中2.88的由来是你期望的频率区间的开始 * totalscal/(fs/2),假如我想设置显示的频率在8HZ开始,频率区间设为45份,即totalscal=45,fs=250HZ,则8 * 45 /125的值为2.88。另一种方法就仿照下面的这个程序。改下面的np.arange(8,30.5,0.5)中的8,30.5即可
fs=250
escalas=pywt.scale2frequency('cmor3-3',np.arange(8,30.5,0.5))/(1/fs)
sig=x_train.iloc[0,0:1000]
coef,freqs=pywt.cwt(sig,escalas,'cmor3-3',sampling_period=(1/fs))
t=np.arange(0,4.0,1.0/250.0)
plt.contourf(t,freqs,abs(coef))
由于卷积神经网络(CNN)输入的图片有些是某个频率区间的小波变换图,所以得到某一区间的频率图就显得很重要。