Commit f27e91828c8845706a48e89f123fdd436906fe69

Authored by mer0m
Committed by GitHub
1 parent 9259d78054
Exists in master

Add files via upload

Showing 2 changed files with 119 additions and 0 deletions Inline Diff

File was created 1 # -*- coding: utf-8 -*-
2 """
3 Created on Wed Mar 16 10:22:54 2016
4
5 @author: Baptiste Marechal
6 """
7
8 import csv, time, glob, datetime, os
9 import matplotlib.pyplot as plt
10 import matplotlib.dates as md
11
12 #from scipy import signal
13 #from scipy.optimize import curve_fit
14
15 tic = time.time()
16
17 os.chdir('/home/user/sicav_data/Manip/2016/2016-03/')
18
19 def getColumn(filename, column):
20 results = []
21 for dat_file in sorted(glob.glob(filename)):
22 file_result = csv.reader(open(dat_file), delimiter='\t')
23 results = results + map(float,[result[column] for result in file_result])
24 return results
25
26 t = getColumn('*-lakeshore.dat', 0)
27 T1 = getColumn('*-lakeshore.dat', 2)
28 T2 = getColumn('*-lakeshore.dat', 3)
29 T3 = getColumn('*-lakeshore.dat', 4)
30 T4 = getColumn('*-lakeshore.dat', 5)
31
32 """
33 n = 400
34 t = [t[n*i] for i in range(len(t)/n)]
35 T1 = [T1[n*i] for i in range(len(T1)/n)]
36 T2 = [T2[n*i] for i in range(len(T2)/n)]
37 T3 = [T3[n*i] for i in range(len(T3)/n)]
38 T4 = [T4[n*i] for i in range(len(T4)/n)]
39
40 def func(U, a0, b1, b2, y0):
41 sys = signal.lti([a0],[b2, b1, 1])
42 y = sys.output(U, t, y0)
43 return y[1]
44
45 print('Fitting...')
46 popt, cov = curve_fit(func, T1, T4)
47 print(popt)
48 Yfit = func(T1, *popt)
49 """
50 timetamps = [datetime.datetime.fromtimestamp(ti) for ti in t]
51 datenums=md.date2num(timetamps)
52
53 plt.subplots_adjust(bottom=0.35)
54 plt.xticks(rotation=90)
55 ax=plt.gca()
56 xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S')
first_order_ident.py
File was created 1 # -*- coding: utf-8 -*-
2 """
3 Created on Fri Mar 11 11:04:35 2016
4
5 @author: Baptiste Marechal
6 """
7
8 from scipy import signal, linspace, pi, randn, ones
9 from scipy.optimize import curve_fit
10 import matplotlib.pyplot as plt
11 import time
12
13 tic = time.time()
14
15 '''function to optimize'''
16 def func(u, K, tau, y0):
17 sys = signal.lti(K, [tau, 1])
18 y = sys.output(u, t, y0)
19 return y[1]
20
21 '''input square signal'''
22 global t
23 t = linspace(0, 20, 1000)
24 Umes = -0.5*(signal.square(2*pi*0.1*t)+ones(len(t)))+ones(len(t))+randn(len(t))/50
25
26 '''noisy output signal'''
27 p = [1, 1, 0]
28 Ymes = func(Umes, *p)+randn(len(Umes))/50
29
30 '''input and output signals plot'''
31 plt.plot(t, Umes, label = 'Umes')
32 plt.plot(t, Ymes, label = 'Ymes')
33
34
35 '''optimization with non-linear least squares method'''
36 popt, cov = curve_fit(func, Umes, Ymes)
37 print(p)