Commit 84d931fb3d85d2a8df0488a1b3074753b53db527
1 parent
98e71dda5c
Exists in
master
.
Showing 1 changed file with 45 additions and 0 deletions Side-by-side Diff
ringdown.py
| 1 | +import matplotlib.pyplot as plt | |
| 2 | +import numpy as np | |
| 3 | +import csv, glob, sys | |
| 4 | +from scipy.optimize import curve_fit | |
| 5 | + | |
| 6 | +list_files = (glob.glob(sys.argv[1])) | |
| 7 | + | |
| 8 | +data = [] | |
| 9 | + | |
| 10 | +for f in list_files: | |
| 11 | + data_iter = csv.reader(open(f, 'r'), delimiter = ',', quotechar = '"') | |
| 12 | + for i in range(2): | |
| 13 | + data_iter.next() | |
| 14 | + #temp_data = [value for value in data_iter] #if ends with a number | |
| 15 | + temp_data = [value[:-1] for value in data_iter]#if ends with a comma | |
| 16 | + data.extend(temp_data) | |
| 17 | + | |
| 18 | +data = np.asarray(data, dtype = float) | |
| 19 | + | |
| 20 | +del(temp_data, list_files, value, f) | |
| 21 | + | |
| 22 | +plt.subplot(111) | |
| 23 | +plt.clf() | |
| 24 | + | |
| 25 | +plt.plot(data[data[:,0]>=0,0], data[data[:,0]>=0,1], label ='mes') | |
| 26 | + | |
| 27 | +def func(t, tau, A, w , a, b): | |
| 28 | + return A * np.exp(-t/tau) * np.sin((w+a*t)*t) + b | |
| 29 | + | |
| 30 | +popt, pcov = curve_fit(func, data[data[:,0]>=0,0], data[data[:,0]>=0,1], p0 = [1e-5, 1e-2, 1e5, 1e10, 1e-4], maxfev=10000) | |
| 31 | +yfit = func(data[data[:,0]>=0,0], *popt) | |
| 32 | + | |
| 33 | +tau = float(popt[0]) | |
| 34 | +Q = np.pi*299792458*tau/(2.*140e-3) | |
| 35 | + | |
| 36 | +#print(np.sqrt(np.diag(pcov))) | |
| 37 | +print(tau, Q) | |
| 38 | + | |
| 39 | +plt.plot(data[data[:,0]>=0,0], yfit, label ='fit') | |
| 40 | + | |
| 41 | +plt.xlabel('t') | |
| 42 | +plt.ylabel('Intensity') | |
| 43 | +plt.grid(which='both') | |
| 44 | +plt.legend() | |
| 45 | +plt.show() |