Commit 84d931fb3d85d2a8df0488a1b3074753b53db527

Authored by bmarechal
1 parent 98e71dda5c
Exists in master

.

Showing 1 changed file with 45 additions and 0 deletions Side-by-side Diff

  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()