コード例 #1
0
if lapl:
    x = x.dot(montage.make_laplacian_proj('EEG'))
del df

x *= 1e6

x_split = np.split(x[:x.shape[0] - x.shape[0] % 10], 10)

X_split = []
Y_split = []

delay = 0
n_taps = 200
band = (8, 12)
for x in x_split:
    X, Y = get_XY(x, band_hilbert(x[:, channels.index('P4')], fs, band),
                  n_taps, delay)
    X_split.append(X)
    Y_split.append(Y)

del x

corrs = np.zeros((10 - 3 - 2) * 3)
mses = np.zeros((10 - 3 - 2) * 3)

corrs_one = np.zeros((10 - 3 - 2) * 3)
mses_one = np.zeros((10 - 3 - 2) * 3)
for k in range(5):
    X_train = np.concatenate(X_split[k:3 + k])
    Y_train = np.concatenate(Y_split[k:3 + k])
コード例 #2
0
corrs_fir = np.zeros((len(indx) - 1, len(delays))) * np.nan
corrs_cfir_f = np.zeros((len(indx) - 1, len(delays))) * np.nan
corrs_cfir_wf = np.zeros((len(indx) - 1, len(delays))) * np.nan
corrs_cfir_t = np.zeros((len(indx) - 1, len(delays))) * np.nan
corrs_hilbert = np.zeros((len(indx) - 1, len(delays))) * np.nan
corrs_rls = np.zeros((len(indx) - 1, len(delays))) * np.nan
min_phase_delays = np.zeros((len(indx) - 1, len(delays))) * np.nan
corrs_min_phase = np.zeros((len(indx) - 1, len(delays))) * np.nan

for k, kk in enumerate(indx[1:]):
    print('****', k)
    x_train = x[indx[k - 1]:indx[k - 1] + int(step)]
    x_std = x_train.std()
    x_mean = x_train.mean()
    x_train = (x_train - x_mean) / x_std
    y_train = band_hilbert(x_train, 500, band)
    x_test = x[kk:kk + int(step)] / x_std
    x_test = (x_test - x_mean) / x_std
    y_test = band_hilbert(x_test, 500, band)

    freq, time, spec = stft(x_train,
                            fs,
                            nperseg=n_fft,
                            return_onesided=False,
                            noverlap=int(n_fft * 0.9))
    mask = np.abs(spec).mean(1)

    w = np.diag(mask)

    for j, d in enumerate(delays):
        print('delay', d)
コード例 #3
0
F = np.array([
    np.exp(-2j * np.pi / n_fft * k * np.arange(n_taps))
    for k in np.arange(n_fft)
])

fig, axes = plt.subplots(3, 2, sharex=True, sharey=True)

for j, d in enumerate([200, 0, 100, -50, 50, 'rand']):
    if d != 'rand':
        #if d<999:
        #plt.close()
        H = get_ideal_H(n_fft, fs, band, d)
        b_cfir_f = cLS(F, H, 0)

        X_train, Y_train = get_XY(x[:fs * 60 * 2],
                                  band_hilbert(x[:fs * 60 * 2], fs, (8, 12)),
                                  n_taps, d)
        b_cfir_f = cLS(X_train, Y_train, 0)
        if d > 0:
            b_fir_band = firwin(d, band / fs * 2, pass_zero=False)
            b_fir_smooth = firwin(d, 2 / fs * 2)
            rec_fir = lfilter(b_fir_smooth, [1],
                              np.abs(lfilter(b_fir_band, [1], x)))
        #plt.plot(b_cfir_f)
        #plt.show()

        #plt.plot(x)

        rec = np.abs(lfilter(b_cfir_f, [1], x))
    else:
        rec = np.random.normal(size=len(x))
コード例 #4
0
ファイル: minphase_fir.py プロジェクト: nikolaims/pinfb
from data.loaders import load_alpha_delay_subjects
from models import SWAnalyticFilter2, RLS
import pylab as plt
from helpers import band_hilbert, get_ideal_H, cLS, get_XY
import numpy as np
from scipy.signal import firwin, lfilter, filtfilt, stft, minimum_phase

x = load_alpha_delay_subjects()
fs = 500
band = (8, 12)
n_fft = 2000
n_taps = 500
d = 100

x_test = x[:fs * 60 * 2]
y_test = band_hilbert(x_test, 500, band)
tar = np.abs(y_test)

delays = np.arange(10, 300, 10)
min_phase_delays = np.zeros_like(delays)
corrs_min_phase = np.zeros_like(delays) * 0.

fir_delays = np.zeros_like(delays)
corrs_fir = np.zeros_like(delays) * 0.
for j, d in enumerate(delays):
    print('delay', d)
    b_fir_band = minimum_phase(
        firwin(d, [8 / fs * 2, 12 / fs * 2], pass_zero=False))
    b_fir_smooth = minimum_phase(firwin(d, 2 / fs * 2))
    rec_fir = lfilter(b_fir_smooth, [1],
                      np.abs(lfilter(b_fir_band, [1], x_test)))