python/pp_pid.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 zpowk import zpowk
       
     9 from xdync import xdync
       
    10 
       
    11 def pp_pid(B, A, k, phi, Delta):
       
    12     Delta = sp.atleast_1d(Delta)
       
    13     B = sp.atleast_1d(B)
       
    14     # Setting up and solving Aryabhatta identity
       
    15     dA = len(A) - 1
       
    16     dB = len(B) - 1
       
    17     
       
    18     zk, dzk = zpowk(k)
       
    19     
       
    20     N, dN = polmul(B, dB, zk, dzk)
       
    21     dDelta = len(Delta)-1
       
    22     D, dD = polmul(A, dA, Delta, dDelta)
       
    23     dphi = len(phi)-1
       
    24     
       
    25     Sc, dSc, R, dR = xdync(N, dN, D, dD, phi, dphi)[:4]
       
    26 
       
    27     R = sp.squeeze(R)
       
    28     Rc = sp.convolve(R, Delta)
       
    29 
       
    30     return Rc, Sc
       
    31 
       
    32 if __name__ == "__main__":
       
    33     Ts = 1
       
    34     B = 0.63
       
    35     A = sp.array([1, -0.37])
       
    36     k = 1
       
    37 
       
    38     zk, dzk = zpowk(k)
       
    39         
       
    40     phi = sp.array([1, -0.5])
       
    41     delta = 1
       
    42         
       
    43     print pp_pid(B, A, k, phi, delta)