Пример #1
0
 def _ensure_filter(self, symbolic):
     self._ensure_parser(symbolic=symbolic, for_filter=True)
     if len(self.parser.get_nonlin_funcs()) > 0:
         if symbolic:
             raise CircuitException("ciruit is nonlinear: symbolic formula generation not supported")
         p = dk_simulator.Parser(self.S, self.V, self.FS, not self.backward_euler)
         sim = dk_simulator.SimulatePy(dk_simulator.EquationSystem(p), self.solver, self.dc_method)
         J = sim.jacobi()
     else:
         J = None
     self.sim_filter = dk_simulator.LinearFilter(self.parser, J)
Пример #2
0
 def check(self, name, args):
     p = dk_simulator.Parser(self.S,
                             self.V,
                             self.FS,
                             not args.backward_euler,
                             create_filter=True,
                             symbolic=False)
     p1 = dk_simulator.Parser(self.S, self.V, self.FS,
                              not args.backward_euler)
     sim = dk_simulator.SimulatePy(dk_simulator.EquationSystem(p1),
                                   self.solver)
     J = sim.jacobi()
     f = dk_simulator.LinearFilter(p, J)
     b, a = f.get_z_coeffs(samplerate=48000,
                           subst_var=f.convert_variable_dict({}))
     res = np.array([[float(v) for v in b], [float(v) for v in a]])
     if np.allclose(res, self.result):
         return "Ok"
     else:
         return "Fail"
Пример #3
0
 def _ensure_eq(self):
     if self.eq is None:
         self._ensure_parser()
         self.eq = dk_simulator.EquationSystem(self.parser, opts=self.transform_opts)