Python3中快速傅里叶变换(FFT)与连续小波变换(CWT)的差异

2024-04-19 07:33:20 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here

因此,我使用Pywavelet包对我的EEG数据集进行时频分析,下面是我的结果(CWT分析):

但根据FFT,我的脑电图应该不止这些,这是我的FFT分析:

enter image description here

在FFT中,我看到在我的数据集中,我还得到了峰值150,250和350赫兹的频率,以及更多的4-50赫兹的频率。你知道吗

我的问题是为什么我的CWT分析不能捕捉到以上频率的信号,它假设是我的程序的错误?你知道吗

这是我的CWT代码:

import pandas as pd
import numpy as np
from numpy import math
import matplotlib.pyplot as plt
import pywt

P = pd.read_csv('P.CSV', skiprows = 0, usecols = np.arange(1, 17))
P = P.to_numpy()
P = P[:, 0]

Fs = 2000
dt = 1/Fs

wavelet = 'morl'

t = np.arange(0, len(P)) / Fs
scales = np.arange(4, 3250,100)

coefs, freq = pywt.cwt(P, scales, wavelet, sampling_period = dt)
plt.figure
plt.contour(t, freq, np.abs(coefs) ** 2)        
plt.title('CWT Analysis')
plt.xlabel('Time (s)')
plt.ylabel('Frequency (Hz)')
plt.grid
plt.show()  

请注意,我的兴趣频率是0.5到400(赫兹),所以我选择4到3250的范围。你知道吗


Tags: 数据importfftnumpyasnpdtplt