EV6_HW_Imp/scripts/reflection.py

46 lines
1.2 KiB
Python

from matplotlib import pyplot as plt
from scipy import signal
import numpy as np
import reader
import helper
# load data
data_reader = reader.Reader()
data = data_reader.read_file(r".\data\T0004CH1.csv")
# slice empty space, start and end time is in seconds
data = helper.cut_time(data, -1e-7, 5e-7)
# find peaks, use max to find the highest, or a threshold
# adjust width to find the middle of a peak (width is in indices)
# peaks, _ = signal.find_peaks(data['CH1'], max(data['CH1']))
peaks, _ = signal.find_peaks(data['CH1'], 2, width=10)
# find throughs, comment away it finds too many throughs
# invert = [-x for x in data['CH1']]
# throughs, _ = signal.find_peaks(invert, max(invert))
# peaks = np.concatenate([peaks, throughs])
# store time step
step = data['TIME'][1] - data['TIME'][0]
# do some calcs
idx_diff = peaks[-1] - peaks[0]
tim_diff = idx_diff*step
print(f"Time between peaks: {tim_diff*1e9:.1f} ns")
c = 299792458
k = 0.66
c_coax = c * k
print(f"Measured distance: {(tim_diff/2)*c_coax:.2f} m")
# Plot data
plt.plot(data['TIME'], data['CH1'])
if len(peaks) > 0:
for peak in peaks:
plt.vlines(
peak*step+data['TIME'][0],
min(data['CH1']),
max(data['CH1']), 'red', 'dashed')
plt.grid()
plt.show()