Я хочу получить дельта, тета, альфа, бета и гамма-волны из набора сигналов.И вот как до сих пор я делаю это: -
fs = 256
data=copy.deepcopy(features[:100])
data=np.reshape(data,(len(data),256,64))
# Get real amplitudes of FFT (only in postive frequencies)
fft_vals=[]
for d in data:
fft_vals.append(np.absolute(np.fft.fft2(d)))
fft_vals = np.array(fft_vals)
print(fft_vals.shape)
# Get frequencies for amplitudes in Hz
fft_freq = np.fft.fftfreq(len(data), 1.0/fs)
print(fft_freq.shape) #(100)
# Define EEG bands
eeg_bands = {'Delta': (0, 4),
'Theta': (4, 8),
'Alpha': (8, 12),
'Beta': (12, 30),
'Gamma': (30, 45)}
delta=[]
theta=[]
alpha=[]
beta=[]
gamma=[]
delta_labels=[]
theta_labels=[]
alpha_labels=[]
beta_labels=[]
gamma_labels=[]
delta_real=[]
theta_real=[]
alpha_real=[]
beta_real=[]
gamma_real=[]
# Take the mean of the fft amplitude for each EEG band
eeg_band_fft = dict()
for band in eeg_bands:
freq_ix = np.where((fft_freq >= eeg_bands[band][0]) &
(fft_freq <= eeg_bands[band][1]))[0]
print(freq_ix.shape) #prints first value of shape of each wave
if band=='Delta':
delta_real=data[freq_ix]
delta_labels=labels[freq_ix]
delta=fft_vals[freq_ix]
elif band=='Theta':
theta_real=data[freq_ix]
theta_labels=labels[freq_ix]
theta=fft_vals[freq_ix]
elif band=='Alpha':
alpha_real=data[freq_ix]
alpha_labels=labels[freq_ix]
alpha=fft_vals[freq_ix]
elif band=='Beta':
beta_real=data[freq_ix]
beta_labels=labels[freq_ix]
beta=fft_vals[freq_ix]
elif band=='Gamma':
gamma_real=data[freq_ix]
gamma_labels=labels[freq_ix]
gamma=fft_vals[freq_ix]
eeg_band_fft[band] = np.mean(fft_vals[freq_ix])
print(delta.shape)
print(theta.shape)
print(alpha.shape)
print(beta.shape)
print(gamma.shape)
Но я получаю это как вывод как вывод формы всех волн: -
(2,256,64)
(2,256,64)
(1,256,64)
(7,256,64)
(6,256,64)
ТАК почемуя получаю только 18 значений, где мои данные имеют 100 значений?Я видел масло, которое стоило бы получить все 5 волн, но оно также не работает должным образом, поэтому я уверен, что я не понимаю его правильно, может кто-нибудь сказать мне, как я могу получить 5 волн, когда набор данных сигналов пропущен?Любая помощь будет высоко ценится.
Диапазон моих исходных данных почти от -19 до +30.И после применения fft2 он идет от 0-30K и т. Д. Я действительно запутался, как я могу получить эти 5 волн из моих данных.