python/pp_im.py
changeset 0 0efde00f9229
equal deleted inserted replaced
-1:000000000000 0:0efde00f9229
       
     1 #!/usr/bin/python
       
     2 # 9.8
       
     3 import os, sys
       
     4 sys.path += [os.getcwdu() + os.sep + ".." + os.sep + "python"]
       
     5 
       
     6 import scipy as sp
       
     7 from polyfuncs import polmul
       
     8 from polyfuncs import polsplit3
       
     9 from zpowk import zpowk
       
    10 from xdync import xdync
       
    11 
       
    12 def pp_im(B, A, k, phi, Delta):
       
    13     Delta = sp.atleast_1d(Delta)
       
    14     # Setting up and solving Aryabhatta identity
       
    15     Ag, Ab = polsplit3(A)
       
    16     dAb = len(Ab) - 1
       
    17     Bg, Bb = polsplit3(B)
       
    18     dBb = len(Bb) - 1
       
    19     
       
    20     zk, dzk = zpowk(k)
       
    21     
       
    22     N, dN = polmul(Bb, dBb, zk, dzk)
       
    23     dDelta = len(Delta)-1
       
    24     D, dD = polmul(Ab, dAb, Delta, dDelta)
       
    25     dphi = len(phi)-1
       
    26     
       
    27     S1, dS1, R1, dR1 = xdync(N, dN, D, dD, phi, dphi)[:4]
       
    28 
       
    29     # Determination of control law
       
    30     R1 = sp.squeeze(R1)
       
    31     S1 = sp.squeeze(S1)
       
    32     Rc = sp.convolve(Bg, sp.convolve(R1, Delta))
       
    33     Sc = sp.convolve(Ag, S1)
       
    34     Tc = Ag
       
    35     gamm = phi.sum()/Bb.sum()
       
    36     return Rc, Sc, Tc, gamm
       
    37 
       
    38 if __name__ == "__main__":
       
    39     Ts = 1
       
    40     B = 0.63
       
    41     A = sp.array([1, -0.37])
       
    42     k = int(raw_input('Enter the delay as an integer: '))
       
    43 
       
    44     if k<=0:
       
    45         k = 1
       
    46         
       
    47     zk, dzk = zpowk(k)
       
    48         
       
    49     phi = sp.array([1, -0.5])
       
    50     delta = 1
       
    51         
       
    52     print pp_im(B, A, k, phi, delta)