Wolfram Language Paclet Repository

Community-contributed installable additions to the Wolfram Language

Primary Navigation

    • Cloud & Deployment
    • Core Language & Structure
    • Data Manipulation & Analysis
    • Engineering Data & Computation
    • External Interfaces & Connections
    • Financial Data & Computation
    • Geographic Data & Computation
    • Geometry
    • Graphs & Networks
    • Higher Mathematical Computation
    • Images
    • Knowledge Representation & Natural Language
    • Machine Learning
    • Notebook Documents & Presentation
    • Scientific and Medical Data & Computation
    • Social, Cultural & Linguistic Data
    • Strings & Text
    • Symbolic & Numeric Computation
    • System Operation & Setup
    • Time-Related Computation
    • User Interface Construction
    • Visualization & Graphics
    • Random Paclet
    • Alphabetical List
  • Using Paclets
    • Get Started
    • Download Definition Notebook
  • Learn More about Wolfram Language

LinearSystems

Guides

  • Guide for ZigangPan`LinearSystems`

Symbols

  • calculaterelativedegree
  • controllabilityQandindices
  • controllercanonicalform
  • detectabilityQ
  • DTLyapunovequation
  • DTRiccatiequation
  • dynamicextension
  • emptyLTIsystem
  • EZDCFAD
  • EZDCF
  • gainsystem
  • generalizedRiccatiequationHM
  • linearLyapunovequation
  • observabilityQandindices
  • observercanonicalform
  • rd0DMcompute
  • Riccatiequation
  • simulationLTIsystem
  • stablizabilityQ
  • strictobservercanonicalform
  • strictOCFAD
  • systemblockdiagonal
  • systemcheck
  • systemconcatenate
  • systemfeedback
  • systemoperation
  • systemparallel
  • uniformobservabilityindices
  • ZDCF
ZigangPan`LinearSystems`
simulationLTIsystem
​
{systemstates,controllerstates,disturbancestates,controlinput,disturbanceinput,measurementoutput,controlledoutput,controllersignals}=simulationLTIsystem[system,ICsystem,controller,ICcontroller,disturbancedynamics,ICdisturbance,t0,tf]
​ simulates a LTI
system
with control inputs calculated via the LTI
controller
with the measurementoutputs as input, and the disturbance inputs calculated via the
disturbancedynamics
with the controlledoutputs as input. The initial condition for
system
,
controller
, and
disturbancedynamics
are
ICsystem
,
ICcontroller
, and
ICdisturbance
, respectively. The simulation is done from
t0
to
tf
. The result are pure functions (of time) the systemstates of
system
, controllerstates of
controller
, disturbancestates of
disturbancedynamics
, controlinput of
system
, disturbanceinput of
system
, measurementoutput of
system
, controlledoutput of
system
, and controllersignals (controlledoutputs of controller).
​
Examples  
(1)
Basic Examples  
(1)
In[1]:=
system={{x1,x2,x3},{u1,u2,w1,w2},{y1,y2,z1,z2,z3,z4},{{-1,2,0,0,0,0,1},{-2,-1,1,1,1,1,0},{-1,-2,-3,-1,1,1,1},{1,0,0,0,0,1,0},{0,1,0,0,0,0,1},{1,0,0,0,0,0,0},{0,1,0,0,0,0,0},{0,0,0,1,0,0,0},{0,0,0,0,1,0,0}},{1,2},{1,2},{1,2},{3,4},{1,2},{3,4,5,6}};
In[2]:=
controllercanonicalform
[system]
State transformation is xold = transformation.xnew
Out[2]=
True,3,{2,1},
1
2
,0,0,-
1
2
,1,0,
1
4
,
1
2
,
1
2
,{x11,x21,x31},{u1,u2,w1,w2},{y1,y2,z1,z2,z3,z4},{0,1,0,0,0,0,2},-
7
4
,
3
2
,
1
2
,1,1,1,1,
11
4
,-
21
2
,-
7
2
,0,1,1,0,
1
2
,0,0,0,0,1,0,-
1
2
,1,0,0,0,0,1,
1
2
,0,0,0,0,0,0,-
1
2
,1,0,0,0,0,0,{0,0,0,1,0,0,0},{0,0,0,0,1,0,0},{1,2},{1,2},{1,2},{3,4},{1,2},{3,4,5,6}
In[3]:=
observercanonicalform
[system]
State transformation is xold = transformation.xnew
Out[3]=
{True,3,{1,2},{{1,0,0},{0,1,0},{2,-3,1}},{{x11,x21,x31},{u1,u2,w1,w2},{y1,y2,z1,z2,z3,z4},{{-1,2,0,0,0,0,1},{0,-4,1,1,1,1,0},{-5,-9,0,2,4,4,-1},{1,0,0,0,0,1,0},{0,1,0,0,0,0,1},{1,0,0,0,0,0,0},{0,1,0,0,0,0,0},{0,0,0,1,0,0,0},{0,0,0,0,1,0,0}},{1,2},{1,2},{1,2},{3,4},{1,2},{3,4,5,6}}}
In[4]:=
controller={{x1chk,x2chk,x3chk},{y1,y2},{u1,u2},{{-1,1,0,0,1},{-3.10435524768601717601478123947250050901414947573562597081149648344045608933637`51.311650143049405,-1.73594839077805689119557680477137097298363219953713265816251606649319570015058`50.306147744584955,0.87814241965773732109556902688379333054621868686817461835777160853466365674909`50.73865164041571,1,0},{-1.95288711515437031578579767913036750545880308231146871406496998449400271469585`51.110355869039225,-3.12185758034226267890443097311620666945378131313182538164222839146533634325091`50.56102402158889,-3.03843496169831682910376664319936817618033748062912955416207929122130081677137`51.27773662829537,1,1},{-0.07573406626582343011449178017106650177767319671207862837326324947322668732026`50.,-0.30704540521789710614557291582758215176492544320265363826014383751392967844984`49.85484353342589,-0.04171130932197292490033216495841924663672191625134791374007455012201776323977`49.71637050194081,0,0},{-0.02862118142019374590028945930143400723647627902354734243823323396722940201612`49.57739628120991,-0.42890298556015978505000388894378882121870675633447901990237222897926602170074`50.,-0.08014627102028975400409880815778742281705939688047746790215384134331858001114`50.,0,0}},{1,2},{1,2},{1,2},{},{1,2},{}};
In[5]:=
disturbancedynamics=
gainsystem
[Table[0,{i,2},{j,4}]]
Out[5]=
{{},{tempinput1,tempinput2,tempinput3,tempinput4},{tempoutput1,tempoutput2},{{0,0,0,0},{0,0,0,0}},{1,2,3,4},{1,2},{1,2,3,4},{},{1,2},{}}
In[6]:=
{systemstates,controllerstates,disturbancestates,controlinput,​​disturbanceinput,measurementoutput,controlledoutput,​​controllersignals}=
simulationLTIsystem
[system,{1,0,-1},controller,​​{0,0,0},disturbancedynamics,{},0,20]
Out[6]=
{systemstates$24688,controllerstates$24688,disturbancestates$24688,controlinput$24688,disturbanceinput$24688,measurementoutput$24688,controlledoutput$24688,controllersignals$24688}
In[7]:=
Plot[systemstates[t],{t,0,20},PlotRangeAll]
Out[7]=
In[8]:=
Plot[controllerstates[t],{t,0,20},PlotRangeAll]
Out[8]=
In[9]:=
Plot[disturbancestates[t],{t,0,20}]
Out[9]=
5
10
15
20
-1.0
-0.5
0.5
1.0
SeeAlso
systemcheck
 
▪
systemfeedback
""

© 2025 Wolfram. All rights reserved.

  • Legal & Privacy Policy
  • Contact Us
  • WolframAlpha.com
  • WolframCloud.com