void TransferFunToZeroPole(TVec z, TVec p, ref Double k, TVec Num, TVec Den)
Convert transfer function from numerator-denominator to zero-pole form.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | z | TVec | source TVec |
| 2 | p | TVec | source TVec |
| 3 | k | Double (ref) | output |
| 4 | Num | TVec | source TVec |
| 5 | Den | TVec | source TVec |
Result: stored in self (calling object)
Remarks:
Convert a transfer function defined with numerator Num and denominator Den in to its zero-pole form with zeros Z, poles P and gain K. The routine calls PolyRoots routine from the Polynoms unit. Numerator and denominator can be real or complex.
A rational polynomial can be converted to zero pole form by finding the roots of the numerator and denominator: (x^2 - 7x + 12)/(x^2 - 3x + 2) Zero pole form:
((x-3)(x-4))/((y-2)(y-1))
Examples
using Dew.Math;
using Dew.Math.Editors;
using Dew.Math.Units;
using Dew.Signal;
using Dew.Signal.Units;
using Dew.Math.Tee;
using Dew.Signal.Tee;
private void button1_Click(object sender, EventArgs e)
{
Vector z = new Vector(0);
Vector p = new Vector(0);
Vector num = new Vector(3);
Vector den = new Vector(3);
double k;
num.Values[0] = 1;
num.Values[1] = -7;
num.Values[2] = 12;
den.Values[0] = 1;
den.Values[1] = -3;
den.Values[2] = 2;
k = 1;
LinearSystems.TransferFunToZeroPole(z, p, out k, num, den);
MtxVecEdit.ViewValues(z,"Zeros",true);
MtxVecEdit.ViewValues(p,"Poles",true);
// z = [4 , 3]
// p = [2 , 1]
// k = num[0]/den[0] = 1;
}