
Help with a function for plotting zeros and poles
Posted:
Mar 15, 2014 3:52 AM


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

