2 Created on Feb 26, 2014 7 from numpy
import r_, c_, dot
8 from pickle
import FALSE
11 size = np.shape(time)[0]
12 result = np.zeros(np.shape(data))
15 for i
in range(1, size):
16 dt = time[i] - time[i-1]
17 integral += data[i] * dt
23 size = np.shape(time)[0]
24 result = np.zeros(np.shape(data))
25 for i
in range(delta, size-delta):
26 dt = time[i+delta] - time[i-delta]
28 result[i] = (data[i+delta] - data[i-delta]) / dt
36 size = np.shape(time)[0]
37 result = np.zeros(np.shape(data))
38 for i
in range(delta, size):
39 dt = time[i] - time[i-delta]
41 result[i] = (data[i] - data[i-delta])/dt
51 return smooth(der, avgdelta)
57 size = np.shape(data)[0]
58 result = np.copy(data)
59 mul = 1/(delta*2.0 + 1.0)
60 for i
in range(delta, size-delta):
62 for j
in range(1,delta+1):
63 result[i] += data[i-j] + data[i+j]
70 size = np.shape(data)[0]
71 size2 = int(size/step)
74 mul = 1/(delta*2.0 + 1.0)
75 for i
in range(delta, size-delta):
80 for j
in range(1,delta+1):
81 result[k] += data[i-j] + data[i+j]
84 result[-1] = result[-2]
89 def lpf(data, cornerFreqHz, dt=None, time=None, initVal=None):
90 size = np.shape(data)[0]
92 if dt
is None and time
is None:
93 print(
"Error: both dt and time are None")
97 if time
is None and dt
is None:
98 dt = np.mean( time[1:] - time[0:-1] )
101 result = np.copy(data)
102 alpha = dt*cornerFreqHz / (1.0 + dt*cornerFreqHz)
105 if initVal
is not None:
108 for i
in range(1,size):
109 result[i] = beta*result[i-1] + alpha*data[i]
114 def lpfNoDelay(data, cornerFreqHz, dt=None, time=None, initVal=None):
115 size = np.shape(data)[0]
117 if dt
is None and time
is None:
118 print(
"Error: both dt and time are None")
122 if time
is not None and dt
is None:
123 dt = np.mean( time[1:] - time[0:-1] )
126 result = np.copy(data)
127 result2 = np.copy(data)
128 alph = dt*cornerFreqHz / (1.0 + dt*cornerFreqHz)
131 if initVal
is not None:
132 result[0,:] = initVal
134 result[0,:] = np.mean(result, axis=0)
136 for i
in range(1,size):
137 result[i,:] = beta*result[i-1,:] + alph*data[i,:]
140 result2[-1,:] = result[-1,:]
143 for i
in range(size-1,0,-1):
144 result2[i-1,:] = beta*result2[i,:] + alph*result[i-1,:]
149 def o1lpf(data, cornerFreqHz, dt=None, time=None, initVal=None):
150 size = np.shape(data)[0]
152 if dt
is None and time
is None:
153 print(
"Error: both dt and time are None")
157 if time
is not None and dt
is None:
158 dt = np.mean( time[1:] - time[0:-1] )
162 time = np.arange(0, dt*size, dt)
164 alph = dt*cornerFreqHz / (1 + dt*cornerFreqHz)
167 result = np.copy(data)
170 c1 = (data[1] - data[0])/(time[1] - time[0])
172 for i
in range(1,size):
175 dt = time[i] - time[h]
193 c1 = beta*c1 + alph*( (data[i] - result[h])/dt )
197 result[i] = beta*(result[h] + c1*dt) + alph*data[i]
205 if np.shape(s)[0] == 1:
209 wide = np.shape(meas)[1]
211 size = np.shape(meas)[0]
212 est = np.zeros(np.shape(meas))
220 A = r_[ c_[ np.ones(wide), np.zeros(wide) ] ]
221 Z = r_[ c_[ meas[0,:], np.ones(wide)] ].T
226 for i
in range(0, size-1):
228 err = meas[i] - est[i]
231 A = dot( X, dot( Z.T, np.linalg.inv( dot(Z,Z.T) ) ) )
238 est[i+1,:] = dot( A, Z ).T
GeneratorWrapper< T > range(T const &start, T const &end, T const &step)