Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Help with a function for plotting zeros and poles
Replies: 4   Last Post: Mar 19, 2014 4:24 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Bob Hanlon

Posts: 906
Registered: 10/29/11
Re: Help with a function for plotting zeros and poles
Posted: Mar 19, 2014 4:23 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply


Clear[zeroPole]


zeroPole[tf_TransferFunctionModel] :=
{Re[#], Im[#]} & /@
Flatten[
Through@
{TransferFunctionZeros, TransferFunctionPoles}@
tf];


tf1 = TransferFunctionModel[
(3 (13/8 + s))/(2 (3/2 (13/8 + s) + s (1 + s) (2 + s) (5 + s))), s];


tf2 = TransferFunctionModel[
(199 + 344 s)/(16 (s (1 + s) (2 + s) (5 + s) + 1/16 (199 + 344 s))), s];


N@zeroPole[tf1]


{{-1.625, 0.}, {-0.5, 0.}, {-0.5, 0.}, {-5.08114, 0.}, {-1.91886, 0.}}


N@zeroPole[tf2]


{{-0.578488, 0.}, {-0.5, 0.}, {-5.97986,
0.}, {-0.760068, -1.89264}, {-0.760068, 1.89264}}



Bob Hanlon




On Sat, Mar 15, 2014 at 3:46 AM, Eduardo M. A. M. Mendes <
emammendes@gmail.com> wrote:

> Hello
>
> Sometime ago I found a couple of functions that are used for plotting the
> poles and zeros of a transfer function. Here they are:
>
>
> xyPoints[values_]:=Module[{xy},xy=Flatten[Replace[values,{Complex[x_,y_]:>{x,y},x_?NumericQ:>{x,0}},{3}],1];Cases[xy,{_?NumericQ,_?NumericQ},{2}]
> ];
>
> zeroPole[tf_]:=Module[{zp,zp0},zp0=Through@
> {TransferFunctionZeros,TransferFunctionPoles}@tf;
> zp=FixedPoint[ReplaceAll[#,{}->{-100}]&,zp0];
> xyPoints/@zp];
>
> zeroPole is a modification of the actual plot function (I have only
> removed the plot command).
>
> Here are two examples of using the functions
>
> tf1=TransferFunctionModel[(3 (13/8+s))/(2 (3/2 (13/8+s)+s (1+s) (2+s)
> (5+s))),s]
> tf2=TransferFunctionModel[(199+344 s)/(16 (s (1+s) (2+s) (5+s)+1/16
> (199+344 s))),s]
>
> N@zeroPole[tf1]
> {{{-1.625,0.}},{{-0.5,0.},{-0.5,0.},{-5.08114,0.},{-1.91886,0.}}}
>
> N@zeroPole[tf2]
> {{{-0.578488,0.}},{{-0.5,0.},{-5.97986,0.},{-0.760068-1.89264
> I,0.},{-0.760068+1.89264 I,0.}}}
>
> The functions does what I expected for the first example, but not for the
> second example (the real and imaginary parts of the complex poles are not
> dealt with).
>
> Can someone tell me what is wrong? And how to modify xyPoints (Although
> I understand what the functions does I am not sure what to do)?
>
> Many many thanks
>
> Ed
>
>
>






Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.