def wrapup(self): for name, readings in zip(('x', 'y', 'z'), self.counts): self.output.write(name + ":\n") for i, count in enumerate(readings): if count: self.output.write(" %d: %d\n" % (commands.signed(i), count)) self.output.write("%d: overruns\n" % self.num_overruns)
def process_time(self, time, delta, status, readings): self.output.write("%f(%f)ms: 0x%x " % (time, delta, status)) sep = '(' for i, reading in enumerate(readings): self.output.write("%s%d" % (sep, commands.signed(reading) - Offsets[i])) sep = ', ' self.output.write(")\n")
def process_time(self, time, delta, status, readings): self.time_since_output += delta if self.samples_seen > 1: dt = (self.last_delta + delta) / 2.0 a = [] adj = [] for i, reading in enumerate(self.last_readings): a_n = in_per_sec2(commands.signed(reading) - Offsets[i]) a.append(a_n) adj_n = -self.max_adj if self.v[i] >= 0 else self.max_adj if abs(adj_n) * dt > abs(self.v[i]): adj_n = -self.v[i] / dt adj.append(adj_n) self.v[i] += (a_n + adj_n) * dt self.s[i] += (self.v[i] + adj_n * dt) * dt self.report(time, dt, a, adj) self.last_delta = delta self.last_readings = readings
def avg(histogram): r''' >>> avg([3,2,3]) 1.0 >>> avg([0,2,0]) 1.0 >>> avg([2,0,0]) 0.0 >>> avg([0,0,2]) 2.0 >>> avg([0] * 128 + [2]) -128.0 >>> avg([0] * 255 + [2]) -1.0 ''' total_count = sum = 0 for i, count in enumerate(histogram): total_count += count sum += commands.signed(i) * count return sum / total_count