Find zeros of a linear time invariant system in state-space form.
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.
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);
}