Skip to content

Instantly share code, notes, and snippets.

@mlsteele
Created March 16, 2013 02:48
Show Gist options
  • Select an option

  • Save mlsteele/5174711 to your computer and use it in GitHub Desktop.

Select an option

Save mlsteele/5174711 to your computer and use it in GitHub Desktop.
from lib601.sm import *
def LTISM(cCoeffs, dCoeffs):
def parallelAddMany(machines):
return reduce(lambda a,b: ParallelAdd(a,b), machines, Gain(0))
def CascadeMany(machines):
return reduce(lambda a,b: Cascade(a,b), machines, Gain(1))
def RPower(power):
return CascadeMany([R(0) for _ in xrange(power)])
def delayArray(gains):
return parallelAddMany([Cascade(Gain(gain), RPower(i)) for (gain,i) in zip(gains, xrange(len(gains)))])
cArray = delayArray(cCoeffs)
dArray = delayArray([0] + dCoeffs)
return Cascade(cArray, FeedbackAdd(Gain(1), dArray))
if __name__ == "__main__":
# print parallelAddMany([Gain(1), Gain(1)]).transduce([0,1,1,0])
# print RPower(4).transduce([1,0,0,0,0,0,0,0])
# print RPower(0).transduce([1,0,0,0,0,0,0,0])
# print delayArray([1,2,2]).transduce([1,0,0,0,0,0,0,0])
# print LTISM([1],[2]).transduce([1,0,0,0,0,0,0,0])
# print LTISM([0,2],[1]).transduce([1,0,0,0,0,0,0,0])
# print LTISM([4, 1], [4, 3]).transduce([1,2,3,4])
unit_sample_signal = [1,0,0,0,0,0,0,0,0,0]
m = LTISM([3, 3, 4, 5],[3, 4, 1, 4])
m.start()
m.step(1)
m.step(2)
# print m.getNextValues(m.startState(),0)
print m.getNextValues(m.startState,0)
# o = [m.getNextValues(m.startState,i)[1] for i in unit_sample_signal]
# print o
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment