Created
March 16, 2013 02:48
-
-
Save mlsteele/5174711 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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