-
Notifications
You must be signed in to change notification settings - Fork 0
/
plots.py
43 lines (38 loc) · 1.17 KB
/
plots.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from scipy.signal import stft
from scipy import ndimage
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np
from load import load_train
train, train_meta = load_train(6)
train.info()
train_meta.info()
Fs = 40000000
n = int(Fs / 10000)
overlap = None
fig, ax = plt.subplots(3, 1, figsize=(15, 15))
for i in range(3):
f, t, z = stft(train.iloc[:, i].values, fs=Fs, nperseg=n, noverlap=overlap)
ax[i].pcolormesh(t, f[:10], np.abs(z)[:10, :], vmin=0)
ax[i].set_xlabel("Time[seconds]")
ax[i].set_ylabel("Frequency[Hz]")
ax[i].set_title(f"Phase {i}")
ax2 = ax[i].twinx()
ax2.plot([j / Fs for j in range(800000)], train.iloc[:, i], c="r")
downsampled = signal.resample(train.iloc[:, 4], 800000 // 2 // 1600)
k = 24
widths = [2 ** (j / k) for j in range(1, 101)]
z = signal.cwt(downsampled, signal.ricker, widths)
z_filt = z
plt.figure(figsize=(10, 10))
plt.pcolormesh(
[1600 * j / (Fs / 2) for j in range(250)],
[1 / (Fs / 2) * (j) for j in widths],
z_filt,
)
plt.ylabel("window width[seconds]")
plt.xlabel("time")
plt.colorbar()
ax2 = plt.twinx()
ax2.plot([j / Fs for j in range(800000)], train.iloc[:, 4], c="r")
ax2.set_ylabel("Voltage")