You are here: Symbol Reference > LinearSystems Namespace > Functions > LinearSystems.TransferFunToZeroPole Function
DSP Master VCL
ContentsIndex
PreviousUpNext
LinearSystems.TransferFunToZeroPole Function

Convert transfer function from numerator-denominator to zero-pole form.

Pascal
procedure TransferFunToZeroPole(const z: TVec; const p: TVec; out k: Double; const num: TVec; const den: TVec);

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 - 7*x + 12
  --------------
  x^2 - 3*x + 2

Zero pole form:

 (x - 3)*(x - 4)
 ---------------
 (y - 2)*(y - 1)
  uses MtxExpr, Math387, MtxVec, MtxVecTee, MtxVecEdit,
       LinearSystems;

  procedure TForm1.Button1Click(Sender: TObject);
  var z,p,num,den: Vector;
      k: Double;
  begin
      num.SetIt(false,[1,-7,12]);
      den.SetIt(false,[1,-3, 2]);
      TransferFunToZeroPole(z,p,k,num,den);
      ViewValues(z);
      ViewValues(p);
  //        z = [4 , 3]
  //        p = [2 , 1]
  //        k = num[0]/den[0] =  1;
  end;

 

  #include "MtxExpr.hpp"
  #include "MtxVecEdit.hpp"
  #include "MtxVecTee.hpp"
  #include "LinearSystems.hpp"

  void __fastcall TForm41::BitBtn1Click(TObject *Sender)
  {
    sVector z,p,num,den;
    double k;

    num.Size(3);
    num[0] = 1;
    num[1] = -7;
    num[2] = 12;
    den.Size(3);
    den[0] = 1;
    den[1] =-3;
    den[2] = 2;
    TransferFunToZeroPole(z,p,k,num,den);
    ViewValues(z);
    ViewValues(p);
    //        num = [1, -7,  12]
    //        den = [1, -3,   2]
  }
Copyright (c) 1999-2025 by Dew Research. All rights reserved.
What do you think about this topic? Send feedback!