DSPRelated.com
Forums

Warping Pole/Zero Plot

Started by Chris Barrett May 29, 2007
I'm converting between to s domain and the z domain by finding the poles 
and zeros.  My plots of the frequency response look correct, but the 
scaling on the y-axis is not the same.  Does any one know how I fix this?


Here are some more details:

What I have is a continuous time transfer function given by

                    2*w_d
      h(s) = ---------------------
              s^2 + 2*w_d*s + w_d^2


Where w_d is the angular frequency of the -6 dB roll off.  I find the 
poles and zeros of this solving the quadratic equation for the 
denominator and the a simple algebraic one for the numerator.  I then 
convert the poles and zeros to the z^-1 domain by using the following 
equations

      p_z = e^(i*T/p_s)
      z_z = e^(i*T/z_s)

I use the poles and zeros in the z domain to find the new coefficients. 
  I find a new transfer function from this and plot it.  This is 
improperly scaled function I referred to in the first paragraph.
Chris Barrett wrote:
> I'm converting between to s domain and the z domain by finding the poles > and zeros. My plots of the frequency response look correct, but the > scaling on the y-axis is not the same. Does any one know how I fix this? > > > Here are some more details: > > What I have is a continuous time transfer function given by > > 2*w_d > h(s) = --------------------- > s^2 + 2*w_d*s + w_d^2 > > > Where w_d is the angular frequency of the -6 dB roll off. I find the > poles and zeros of this solving the quadratic equation for the > denominator and the a simple algebraic one for the numerator. I then > convert the poles and zeros to the z^-1 domain by using the following > equations > > p_z = e^(i*T/p_s) > z_z = e^(i*T/z_s) > > I use the poles and zeros in the z domain to find the new coefficients. > I find a new transfer function from this and plot it. This is > improperly scaled function I referred to in the first paragraph.
A couple of corrections: I'm actually going from the omega-plane to the z-plane where s = i*omega. When I find the poles and zeros by solving the quadratic, I am solving it for omega and not s. My transfer function was suppose to be w_d^2 h(s) = --------------------- s^2 + 2*w_d*s + w_d^2
On May 29, 11:19 am, Chris Barrett
<"chrisbarret"@0123456789abcdefghijk113322.none> wrote:
> Chris Barrett wrote: > > I'm converting between to s domain and the z domain by finding the poles > > and zeros. My plots of the frequency response look correct, but the > > scaling on the y-axis is not the same. Does any one know how I fix this? > > > Here are some more details: > > > What I have is a continuous time transfer function given by > > > 2*w_d > > h(s) = --------------------- > > s^2 + 2*w_d*s + w_d^2 > > > Where w_d is the angular frequency of the -6 dB roll off. I find the > > poles and zeros of this solving the quadratic equation for the > > denominator and the a simple algebraic one for the numerator. I then > > convert the poles and zeros to the z^-1 domain by using the following > > equations > > > p_z = e^(i*T/p_s) > > z_z = e^(i*T/z_s) > > > I use the poles and zeros in the z domain to find the new coefficients. > > I find a new transfer function from this and plot it. This is > > improperly scaled function I referred to in the first paragraph. > > A couple of corrections: > > I'm actually going from the omega-plane to the z-plane where > > s = i*omega. > > When I find the poles and zeros by solving the quadratic, I am solving > it for omega and not s. > > My transfer function was suppose to be > > w_d^2 > h(s) = --------------------- > s^2 + 2*w_d*s + w_d^2
Is this for a input filter or simulating a system? Since you are trying to use the Matched Z transform method you are probably trying to make an input filter out of this. The easy way is to do the conversions as you have done and adjust the gain for the z transform to equal the gain for the s domain transfer function. To do this you must match the gains when s=0 and z=1. You can also scale each pole or zero by w_d/(1-exp(-w_d*T)). This is the part that is missing most MZT documentation lacks. It you have problems, post again. I am a big fan of the MZT method as opposed to the bilinear transform because it doesn't add zeros like the BLT method does. Warping isn't necessary with the MZT. Note, if you are trying to do a simulation where h(s) is the system then you should take the ZOH into account. I would use the z transform tables for this but there are other methods. Peter Nachtwey
Peter Nachtwey wrote:
> On May 29, 11:19 am, Chris Barrett > <"chrisbarret"@0123456789abcdefghijk113322.none> wrote: > >>Chris Barrett wrote: >> >>>I'm converting between to s domain and the z domain by finding the poles >>>and zeros. My plots of the frequency response look correct, but the >>>scaling on the y-axis is not the same. Does any one know how I fix this? >> >>>Here are some more details: >> >>>What I have is a continuous time transfer function given by >> >>> 2*w_d >>> h(s) = --------------------- >>> s^2 + 2*w_d*s + w_d^2 >> >>>Where w_d is the angular frequency of the -6 dB roll off. I find the >>>poles and zeros of this solving the quadratic equation for the >>>denominator and the a simple algebraic one for the numerator. I then >>>convert the poles and zeros to the z^-1 domain by using the following >>>equations >> >>> p_z = e^(i*T/p_s) >>> z_z = e^(i*T/z_s) >> >>>I use the poles and zeros in the z domain to find the new coefficients. >>> I find a new transfer function from this and plot it. This is >>>improperly scaled function I referred to in the first paragraph. >> >>A couple of corrections: >> >>I'm actually going from the omega-plane to the z-plane where >> >>s = i*omega. >> >>When I find the poles and zeros by solving the quadratic, I am solving >>it for omega and not s. >> >>My transfer function was suppose to be >> >> w_d^2 >> h(s) = --------------------- >> s^2 + 2*w_d*s + w_d^2 > > > Is this for a input filter or simulating a system? > > Since you are trying to use the Matched Z transform method you are > probably trying to make an input filter out of this. The easy way is > to do the conversions as you have done and adjust the gain for the z > transform to equal the gain for the s domain transfer function. To > do this you must match the gains when s=0 and z=1. > > You can also scale each pole or zero by w_d/(1-exp(-w_d*T)). This is > the part that is missing most MZT documentation lacks. > > It you have problems, post again. I am a big fan of the MZT method as > opposed to the bilinear transform because it doesn't add zeros like > the BLT method does. Warping isn't necessary with the MZT. > > Note, if you are trying to do a simulation where h(s) is the system > then you should take the ZOH into account. I would use the z > transform tables for this but there are other methods. > > Peter Nachtwey >
Am I suppose to multiply the poles and zeros in the z-domain by w_d/(1-exp(-w_d*T)) ?? I tried it and it gives me a strange result.
On May 30, 11:07 am, Chris Barrett
<"chrisbarret"@0123456789abcdefghijk113322.none> wrote:
> Peter Nachtwey wrote: > > On May 29, 11:19 am, Chris Barrett > > <"chrisbarret"@0123456789abcdefghijk113322.none> wrote: > > >>Chris Barrett wrote: > > >>>I'm converting between to s domain and the z domain by finding the poles > >>>and zeros. My plots of the frequency response look correct, but the > >>>scaling on the y-axis is not the same. Does any one know how I fix this? > > >>>Here are some more details: > > >>>What I have is a continuous time transfer function given by > > >>> 2*w_d > >>> h(s) = --------------------- > >>> s^2 + 2*w_d*s + w_d^2 > > >>>Where w_d is the angular frequency of the -6 dB roll off. I find the > >>>poles and zeros of this solving the quadratic equation for the > >>>denominator and the a simple algebraic one for the numerator. I then > >>>convert the poles and zeros to the z^-1 domain by using the following > >>>equations > > >>> p_z = e^(i*T/p_s) > >>> z_z = e^(i*T/z_s) > > >>>I use the poles and zeros in the z domain to find the new coefficients. > >>> I find a new transfer function from this and plot it. This is > >>>improperly scaled function I referred to in the first paragraph. > > >>A couple of corrections: > > >>I'm actually going from the omega-plane to the z-plane where > > >>s = i*omega. > > >>When I find the poles and zeros by solving the quadratic, I am solving > >>it for omega and not s. > > >>My transfer function was suppose to be > > >> w_d^2 > >> h(s) = --------------------- > >> s^2 + 2*w_d*s + w_d^2 > > > Is this for a input filter or simulating a system? > > > Since you are trying to use the Matched Z transform method you are > > probably trying to make an input filter out of this. The easy way is > > to do the conversions as you have done and adjust the gain for the z > > transform to equal the gain for the s domain transfer function. To > > do this you must match the gains when s=0 and z=1. > > > You can also scale each pole or zero by w_d/(1-exp(-w_d*T)). This is > > the part that is missing most MZT documentation lacks. > > > It you have problems, post again. I am a big fan of the MZT method as > > opposed to the bilinear transform because it doesn't add zeros like > > the BLT method does. Warping isn't necessary with the MZT. > > > Note, if you are trying to do a simulation where h(s) is the system > > then you should take the ZOH into account. I would use the z > > transform tables for this but there are other methods. > > > Peter Nachtwey > > Am I suppose to multiply the poles and zeros in the z-domain by > w_d/(1-exp(-w_d*T)) > ?? > > I tried it and it gives me a strange result.- Hide quoted text - > > - Show quoted text -
Look at this. You have two real poles and -w_d. My example is just a little more general as I don't assume my two poles are at the same place but the math still is the same. ftp://ftp.deltacompsys.com/public/NG/Mathcad%20-%202ndOrderReal.pdf Peter Nachtwey