DSPRelated.com
Forums

Convert Analog Transfer Function to Digital?

Started by Chris Barrett February 24, 2007
Let's say I have the analog transfer function


         b(1)s^n + b(2)s^(n-1) + b(3)s^(n-2)
H(s) = --------------------------------------
         a(1)s^m + a(2)s^(m-1) + a(3)s^(m-2)


Can I convert this to a digital transfer function in a straight forward 
manner?  Would the digital equivalent be


          b(1) + b(2)z^-1 + b(3)z^(-2)
H(z) = --------------------------------
         a(1) + a(2)z^(-1) + a(3)z^(-2)


so that H(s) approximately equals H(z) ??
On Feb 24, 9:58 pm, Chris Barrett
<chrisbar...@0123456789abcdefghijk113322.none> wrote:
> Let's say I have the analog transfer function > > b(1)s^n + b(2)s^(n-1) + b(3)s^(n-2) > H(s) = -------------------------------------- > a(1)s^m + a(2)s^(m-1) + a(3)s^(m-2) > > Can I convert this to a digital transfer function in a straight forward > manner? Would the digital equivalent be > > b(1) + b(2)z^-1 + b(3)z^(-2) > H(z) = -------------------------------- > a(1) + a(2)z^(-1) + a(3)z^(-2) > > so that H(s) approximately equals H(z) ??
Easiest way is probably to convert it to state-space and discrete-ise using Phi=exp(AT) (see many books on this). This will give you the discrete state-space. Now if you want the TF you need to interpret this - if it is in a canonical form it should be easy otherwise you need to work out something like H(zI-Phi)^-1B' The only thing about state-space is that it includes a zero-order hold in the solution. If this is ok then I woudl go this way. Alternatives are Bilinear TF but to program it is tricky in an algebraic sense. Matlab of course does it all and that's why most people moved there some 20 years ago and stopped programming their own dynamic simulations. F.
minfitlike@yahoo.co.uk wrote:
> On Feb 24, 9:58 pm, Chris Barrett > <chrisbar...@0123456789abcdefghijk113322.none> wrote: > >>Let's say I have the analog transfer function >> >> b(1)s^n + b(2)s^(n-1) + b(3)s^(n-2) >>H(s) = -------------------------------------- >> a(1)s^m + a(2)s^(m-1) + a(3)s^(m-2) >> >>Can I convert this to a digital transfer function in a straight forward >>manner? Would the digital equivalent be >> >> b(1) + b(2)z^-1 + b(3)z^(-2) >>H(z) = -------------------------------- >> a(1) + a(2)z^(-1) + a(3)z^(-2) >> >>so that H(s) approximately equals H(z) ?? > > > Easiest way is probably to convert it to state-space and discrete-ise > using Phi=exp(AT) (see many books on this). This will give you the > discrete state-space. Now if you want the TF you need to interpret > this - if it is in a canonical form it should be easy otherwise you > need to work out something like > > H(zI-Phi)^-1B' > > The only thing about state-space is that it includes a zero-order hold > in the solution. If this is ok then I woudl go this way. Alternatives > are Bilinear TF but to program it is tricky in an algebraic sense. > Matlab of course does it all and that's why most people moved there > some 20 years ago and stopped programming their own dynamic > simulations. > > F. >
I started off in what I think is state-space and then took the Laplace transform to get the analog transfer function. I ran across the bilinear transform and I think that works. What I'm not sure about is how one goes from state-space to a digital transfer function.