python/pp_pid.py
author Puneeth Chaganti <punchagan@fossee.in>
Fri, 27 May 2011 14:24:59 +0530
changeset 0 0efde00f9229
permissions -rw-r--r--
Initial commit.

#!/usr/bin/python
# 9.8
import os, sys
sys.path += [os.getcwdu() + os.sep + ".." + os.sep + "python"]

import scipy as sp
from polyfuncs import polmul
from zpowk import zpowk
from xdync import xdync

def pp_pid(B, A, k, phi, Delta):
    Delta = sp.atleast_1d(Delta)
    B = sp.atleast_1d(B)
    # Setting up and solving Aryabhatta identity
    dA = len(A) - 1
    dB = len(B) - 1
    
    zk, dzk = zpowk(k)
    
    N, dN = polmul(B, dB, zk, dzk)
    dDelta = len(Delta)-1
    D, dD = polmul(A, dA, Delta, dDelta)
    dphi = len(phi)-1
    
    Sc, dSc, R, dR = xdync(N, dN, D, dD, phi, dphi)[:4]

    R = sp.squeeze(R)
    Rc = sp.convolve(R, Delta)

    return Rc, Sc

if __name__ == "__main__":
    Ts = 1
    B = 0.63
    A = sp.array([1, -0.37])
    k = 1

    zk, dzk = zpowk(k)
        
    phi = sp.array([1, -0.5])
    delta = 1
        
    print pp_pid(B, A, k, phi, delta)