Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #16672

Re: Help with a function for plotting zeros and poles

From "Eduardo M. A. M. Mendes" <emammendes@gmail.com>
Newsgroups comp.soft-sys.math.mathematica
Subject Re: Help with a function for plotting zeros and poles
Date 2014-03-19 08:24 +0000
Message-ID <lgbk80$13o$1@smc.vnet.net> (permalink)
References <20140315074645.B9C5E6A3E@smc.vnet.net> <CAEtRDSeEcZc=1WEvQ9jqOw+QVVE7YghNnAKURz0KyrDW1jT1XQ@mail.gmail.com>
Organization Time-Warner Telecom

Show all headers | View raw


Dear Bob

Many thanks but there is a problem: in the output of the new zeroPole function there is no distinction between poles and zeros (Please see the output of the old zeroPole function).

Again I have no idea how to get this right. Changes on the level of Flatten won't do.

Cheers

Ed


On Mar 18, 2014, at 12:18 PM, Bob Hanlon <hanlonr357@gmail.com> wrote:

> 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
>
>
>


Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar


Thread

Re: Help with a function for plotting zeros and poles "Eduardo M. A. M. Mendes" <emammendes@gmail.com> - 2014-03-19 08:24 +0000

csiph-web