DewDSPMasterNET
LTIZeros Routine
Summary
Find zeros of a linear time invariant system in state-space form.

Unit
LinearSystems

Declaration
Procedure LTIZeros(z: TVec; out gain: TSample; A: TMtx; B, C: TVec; D: TSample);

Description
Compute zeros of a linear time invariant system represented in state space form. The resulting zeros are placed in Z and computed system gain in Gain.
Categories
Linear systems
 See Also 
StateSpaceToTransferFun 
StateSpaceToZeroPole 

Example 1

If a linear time invariant system is represented by A,B,C,D, a zero pole representation can be obtained like this:
uses MtxExpr, Math387, MtxVec, MtxVecTee, MtxVecEdit, LinearSystems; procedure TForm1.Button1Click(Sender: TObject); var a: Matrix; z,p,b,c: Vector; d,k: TSample; begin a.SetIt(3,3,false,[0,1,2, 2,3,4, 5,6,3]); b.SetIt(false,[1,0.5,2]); c.SetIt(false,[1,2.5,2]); d := 1; // .... get a state space version and store in A,B,C,D a.Eig(p); //compute poles LTIZeros(z,k,a,b,c,d); //get zeros and gain ViewValues(z,'Zeros',true); ViewValues(p,'Poles',true); end;
#include "MtxVecCPP.h" //MtxVecCPP.cpp must be included in the project #include "MtxVecEdit.hpp" #include "MtxVecTee.hpp" #include "LinearSystems.hpp" void __fastcall TForm41::BitBtn1Click(TObject *Sender) { Vector z,p,b,c; double d,k; Matrix a; a->SetIt(3,3,false,OPENARRAY(double,(0,1,2, 2,3,4, 5,6,3))); b->SetIt(false,OPENARRAY(double,(1,0.5,2))); c->SetIt(false,OPENARRAY(double,(1,2.5,2))); d = 1; // .... get a state space version and store in A,B,C,D a->Eig(p); //compute poles LTIZeros(z,k,a,b,c,d); //get zeros and gain ViewValues(z,"Zeros",true); ViewValues(p,"Poles",true); }
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 b = new Vector(3); Vector c = new Vector(3); Matrix a = new Matrix(3, 3); double k,d; a.SetIt(3, 3, false, new double[9] {0,1,2, 2,3,4, 5,6,3}); b.Values[0] = 1; b.Values[1] = 0.5; b.Values[2] = 2; c.Values[0] = 1; c.Values[1] = 2.5; c.Values[2] = 2; d = 1; // .... get a state space version and store in A,B,C,D a.Eig(p,TMtxType.mtGeneral); //compute poles LinearSystems.LTIZeros(z, out k, a, b, c, d); //get zeros and gain MtxVecEdit.ViewValues(z,"Zeros",true); MtxVecEdit.ViewValues(p,"Poles",true); }

Copyright 2008 Dew Research
http://www.dewresearch.com