Control package: Difference between revisions
Jump to navigation
Jump to search
Line 7: | Line 7: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Chapter !! Function !! Implemented !! File !! Status | ! Chapter !! Function !! Implemented !! File !! Status !! SLICOT functions !! Priority (0-2) | ||
|- | |- | ||
| rowspan="11" | Basic Models || tf || style="background: green;" | yes || @tf/tf.m || | | rowspan="11" | Basic Models || tf || style="background: green;" | yes || @tf/tf.m || || || | ||
|- | |- | ||
| zpk || style="background: green;" | yes || zpk.m || | | zpk || style="background: green;" | yes || zpk.m || || || | ||
|- | |- | ||
| ss || style="background: green;" | yes || @ss/ss.m || | | ss || style="background: green;" | yes || @ss/ss.m || || || | ||
|- | |- | ||
| frd || style="background: green;" | yes || @frd/frd.m || | | frd || style="background: green;" | yes || @frd/frd.m || || || | ||
|- | |- | ||
| pid || style="background: red;" | no || || | | pid || style="background: red;" | no || || || || | ||
|- | |- | ||
| pidstd || style="background: red;" | no || || | | pidstd || style="background: red;" | no || || || || | ||
|- | |- | ||
| pid2 || style="background: red;" | no || || | | pid2 || style="background: red;" | no || || || || | ||
|- | |- | ||
| dss || style="background: green;" | yes || @lti/dss.m || | | dss || style="background: green;" | yes || @lti/dss.m || || || | ||
|- | |- | ||
| drss || style="background: red;" | no || || | | drss || style="background: red;" | no || || || || | ||
|- | |- | ||
| filt || style="background: green;" | yes || filt.m || | | filt || style="background: green;" | yes || filt.m || || || | ||
|- | |- | ||
| rss || style="background: red;" | no || || | | rss || style="background: red;" | no || || || || | ||
|- | |- | ||
| rowspan="24" | Tunable Models || ltiblock.gain || style="background: red;" | no || || | | rowspan="24" | Tunable Models || ltiblock.gain || style="background: red;" | no || || || || | ||
|- | |- | ||
| ltiblock.pid || style="background: red;" | no || || | | ltiblock.pid || style="background: red;" | no || || || || | ||
|- | |- | ||
| ltiblock.pid2 || style="background: red;" | no || || | | ltiblock.pid2 || style="background: red;" | no || || || || | ||
|- | |- | ||
| ltiblock.ss || style="background: red;" | no || || | | ltiblock.ss || style="background: red;" | no || || || || | ||
|- | |- | ||
| ltiblock.tf || style="background: red;" | no || || | | ltiblock.tf || style="background: red;" | no || || || || | ||
|- | |- | ||
| realp || style="background: red;" | no || || | | realp || style="background: red;" | no || || || || | ||
|- | |- | ||
| AnalysisPoint || style="background: red;" | no || || | | AnalysisPoint || style="background: red;" | no || || || || | ||
|- | |- | ||
| genss || style="background: red;" | no || || | | genss || style="background: red;" | no || || || || | ||
|- | |- | ||
| genfrd || style="background: red;" | no || || | | genfrd || style="background: red;" | no || || || || | ||
|- | |- | ||
| genmat || style="background: red;" | no || || | | genmat || style="background: red;" | no || || || || | ||
|- | |- | ||
| getLoopTransfer || style="background: red;" | no || || | | getLoopTransfer || style="background: red;" | no || || || || | ||
|- | |- | ||
| getIOTransfer || style="background: red;" | no || || | | getIOTransfer || style="background: red;" | no || || || || | ||
|- | |- | ||
| getSensitivity || style="background: red;" | no || || | | getSensitivity || style="background: red;" | no || || || || | ||
|- | |- | ||
| getCompSensitivity || style="background: red;" | no || || | | getCompSensitivity || style="background: red;" | no || || || || | ||
|- | |- | ||
| getPoints || style="background: red;" | no || || | | getPoints || style="background: red;" | no || || || || | ||
|- | |- | ||
| replaceBlock || style="background: red;" | no || || | | replaceBlock || style="background: red;" | no || || || || | ||
|- | |- | ||
| getValue || style="background: red;" | no || || | | getValue || style="background: red;" | no || || || || | ||
|- | |- | ||
| setValue || style="background: red;" | no || || | | setValue || style="background: red;" | no || || || || | ||
|- | |- | ||
| getBlockValue || style="background: red;" | no || || | | getBlockValue || style="background: red;" | no || || || || | ||
|- | |- | ||
| setBlockValue || style="background: red;" | no || || | | setBlockValue || style="background: red;" | no || || || || | ||
|- | |- | ||
| showBlockValue || style="background: red;" | no || || | | showBlockValue || style="background: red;" | no || || || || | ||
|- | |- | ||
| showTunable || style="background: red;" | no || || | | showTunable || style="background: red;" | no || || || || | ||
|- | |- | ||
| nblocks || style="background: red;" | no || || | | nblocks || style="background: red;" | no || || || || | ||
|- | |- | ||
| getLFTModel || style="background: red;" | no || || | | getLFTModel || style="background: red;" | no || || || || | ||
|- | |- | ||
| rowspan="9" | Model with Time Delays || pade || style="background: red;" | no || || | | rowspan="9" | Model with Time Delays || pade || style="background: red;" | no || || || || | ||
|- | |- | ||
| absorbDelay || style="background: red;" | no || || | | absorbDelay || style="background: red;" | no || || || || | ||
|- | |- | ||
| thiran || style="background: green;" | yes || thiran.m || | | thiran || style="background: green;" | yes || thiran.m || || || | ||
|- | |- | ||
| hasdelay || style="background: red;" | no || || | | hasdelay || style="background: red;" | no || || || || | ||
|- | |- | ||
| hasInternalDelay || style="background: red;" | no || || | | hasInternalDelay || style="background: red;" | no || || || || | ||
|- | |- | ||
| totaldelay || style="background: red;" | no || || | | totaldelay || style="background: red;" | no || || || || | ||
|- | |- | ||
| delayss || style="background: red;" | no || || | | delayss || style="background: red;" | no || || || || | ||
|- | |- | ||
| setDelayModel || style="background: red;" | no || || | | setDelayModel || style="background: red;" | no || || || || | ||
|- | |- | ||
| getDelayModel || style="background: red;" | no || || | | getDelayModel || style="background: red;" | no || || || || | ||
|- | |- | ||
| rowspan="26" | Model Attributes || get || style="background: green;" | yes || @iddata/get.m || | | rowspan="26" | Model Attributes || get || style="background: green;" | yes || @iddata/get.m || || || | ||
|- | |- | ||
| set || style="background: green;" | yes || @iddata/set.m || | | set || style="background: green;" | yes || @iddata/set.m || || || | ||
|- | |- | ||
| tfdata || style="background: green;" | yes || @lti/tfdata.m || | | tfdata || style="background: green;" | yes || @lti/tfdata.m || || || | ||
|- | |- | ||
| zpkdata || style="background: green;" | yes || @lti/zpkdata.m || | | zpkdata || style="background: green;" | yes || @lti/zpkdata.m || || || | ||
|- | |- | ||
| ssdata || style="background: green;" | yes || @lti/ssdata.m || | | ssdata || style="background: green;" | yes || @lti/ssdata.m || || || | ||
|- | |- | ||
| frdata || style="background: green;" | yes || @lti/frdata.m || | | frdata || style="background: green;" | yes || @lti/frdata.m || || || | ||
|- | |- | ||
| piddata || style="background: red;" | no || || | | piddata || style="background: red;" | no || || || || | ||
|- | |- | ||
| pidstddata || style="background: red;" | no || || | | pidstddata || style="background: red;" | no || || || || | ||
|- | |- | ||
| piddata2 || style="background: red;" | no || || | | piddata2 || style="background: red;" | no || || || || | ||
|- | |- | ||
| pidstddata2 || style="background: red;" | no || || | | pidstddata2 || style="background: red;" | no || || || || | ||
|- | |- | ||
| dssdata || style="background: green;" | yes || @lti/dssdata.m || | | dssdata || style="background: green;" | yes || @lti/dssdata.m || || || | ||
|- | |- | ||
| chgFreqUnit || style="background: red;" | no || || | | chgFreqUnit || style="background: red;" | no || || || || | ||
|- | |- | ||
| chgTimeUnit || style="background: red;" | no || || | | chgTimeUnit || style="background: red;" | no || || || || | ||
|- | |- | ||
| isct || style="background: green;" | yes || @lti/isct.m || | | isct || style="background: green;" | yes || @lti/isct.m || || || | ||
|- | |- | ||
| isdt || style="background: green;" | yes || @lti/isdt.m || | | isdt || style="background: green;" | yes || @lti/isdt.m || || || | ||
|- | |- | ||
| isempty || style="background: green;" | yes || built-in function || | | isempty || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| isfinite || style="background: green;" | yes || built-in function || | | isfinite || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| isParametric || style="background: red;" | no || || | | isParametric || style="background: red;" | no || || || || | ||
|- | |- | ||
| isproper || style="background: red;" | no || || | | isproper || style="background: red;" | no || || || || | ||
|- | |- | ||
| isreal || style="background: green;" | yes || built-in function || | | isreal || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| isiso || style="background: red;" | no || || | | isiso || style="background: red;" | no || || || || | ||
|- | |- | ||
| isstable || style="background: green;" | yes || @lti/isstable.m || | | isstable || style="background: green;" | yes || @lti/isstable.m || || || | ||
|- | |- | ||
| isstatic || style="background: red;" | no || || | | isstatic || style="background: red;" | no || || || || | ||
|- | |- | ||
| order || style="background: red;" | no || || | | order || style="background: red;" | no || || || || | ||
|- | |- | ||
| ndims || style="background: green;" | yes || built-in function || | | ndims || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| size || style="background: green;" | yes || built-in function || | | size || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| rowspan="5" | Model Arrays || stack || style="background: red;" | no || || | | rowspan="5" | Model Arrays || stack || style="background: red;" | no || || || || | ||
|- | |- | ||
| nmodels || style="background: red;" | no || || | | nmodels || style="background: red;" | no || || || || | ||
|- | |- | ||
| permute || style="background: green;" | yes || built-in function || | | permute || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| reshape || style="background: green;" | yes || built-in function || | | reshape || style="background: green;" | yes || built-in function || || || | ||
|- | |- | ||
| repsys || style="background: green;" | yes || repsys.m || | | repsys || style="background: green;" | yes || repsys.m || || || | ||
|- | |- | ||
|} | |} |
Revision as of 14:44, 23 September 2015
The control package is part of the Octave Forge project.
Function list
Linear System Representation
Chapter | Function | Implemented | File | Status | SLICOT functions | Priority (0-2) |
---|---|---|---|---|---|---|
Basic Models | tf | yes | @tf/tf.m | |||
zpk | yes | zpk.m | ||||
ss | yes | @ss/ss.m | ||||
frd | yes | @frd/frd.m | ||||
pid | no | |||||
pidstd | no | |||||
pid2 | no | |||||
dss | yes | @lti/dss.m | ||||
drss | no | |||||
filt | yes | filt.m | ||||
rss | no | |||||
Tunable Models | ltiblock.gain | no | ||||
ltiblock.pid | no | |||||
ltiblock.pid2 | no | |||||
ltiblock.ss | no | |||||
ltiblock.tf | no | |||||
realp | no | |||||
AnalysisPoint | no | |||||
genss | no | |||||
genfrd | no | |||||
genmat | no | |||||
getLoopTransfer | no | |||||
getIOTransfer | no | |||||
getSensitivity | no | |||||
getCompSensitivity | no | |||||
getPoints | no | |||||
replaceBlock | no | |||||
getValue | no | |||||
setValue | no | |||||
getBlockValue | no | |||||
setBlockValue | no | |||||
showBlockValue | no | |||||
showTunable | no | |||||
nblocks | no | |||||
getLFTModel | no | |||||
Model with Time Delays | pade | no | ||||
absorbDelay | no | |||||
thiran | yes | thiran.m | ||||
hasdelay | no | |||||
hasInternalDelay | no | |||||
totaldelay | no | |||||
delayss | no | |||||
setDelayModel | no | |||||
getDelayModel | no | |||||
Model Attributes | get | yes | @iddata/get.m | |||
set | yes | @iddata/set.m | ||||
tfdata | yes | @lti/tfdata.m | ||||
zpkdata | yes | @lti/zpkdata.m | ||||
ssdata | yes | @lti/ssdata.m | ||||
frdata | yes | @lti/frdata.m | ||||
piddata | no | |||||
pidstddata | no | |||||
piddata2 | no | |||||
pidstddata2 | no | |||||
dssdata | yes | @lti/dssdata.m | ||||
chgFreqUnit | no | |||||
chgTimeUnit | no | |||||
isct | yes | @lti/isct.m | ||||
isdt | yes | @lti/isdt.m | ||||
isempty | yes | built-in function | ||||
isfinite | yes | built-in function | ||||
isParametric | no | |||||
isproper | no | |||||
isreal | yes | built-in function | ||||
isiso | no | |||||
isstable | yes | @lti/isstable.m | ||||
isstatic | no | |||||
order | no | |||||
ndims | yes | built-in function | ||||
size | yes | built-in function | ||||
Model Arrays | stack | no | ||||
nmodels | no | |||||
permute | yes | built-in function | ||||
reshape | yes | built-in function | ||||
repsys | yes | repsys.m |
Model Interconnection
Function | Implemented | File | Status |
---|---|---|---|
feedback | yes | @lti/feedback.m | |
connect | yes | @lti/connect.m | |
sumblk | yes | sumblk.m | |
series | no | ||
parallel | no | ||
append | yes | append.m | |
blkdiag | yes | @lti/blkdiag.m | |
imp2exp | no | ||
inv | yes | built-in function | |
lft | no | ||
connectOptions | no |
Model Transformation
Chapter | Function | Implemented | File | Status |
---|---|---|---|---|
Model Type Conversion | tf | Linear Sytsem Representation | ||
zpk | Linear Sytsem Representation | |||
ss | Linear Sytsem Representation | |||
frd | Linear Sytsem Representation | |||
pid | Linear Sytsem Representation | |||
pidstd | Linear Sytsem Representation | |||
pid2 | Linear Sytsem Representation | |||
pidstd2 | no | |||
make1DOF | no | |||
make2DOF | no | |||
getComponents | no | |||
Continuous-Discrete Conversion | c2d | yes | @lti/c2d.m | |
d2c | yes | @lti/d2c.m | ||
d2d | yes | @lti/d2d.m | ||
upsample | no | |||
c2dOptions | no | |||
d2cOptions | no | |||
d2dOptions | no | |||
Model Simplification | hsvd | yes | hsvd.m | |
hsvplot | no | |||
sminreal | yes | @lti/sminreal.m | ||
balred | no | |||
minreal | yes | @lti/minreal.m | ||
balreal | no | |||
modred | no | |||
balredOptions | no | |||
hsvdOptions | no | |||
State-Coordinate Transformation | balreal | Model Simplification | ||
canon | no | |||
prescale | yes | @lti/prescale.m | ||
ss2ss | no | |||
xperm | yes | @lti/xperm.m | ||
Modal Decomposition | modsep | no | ||
stabsep | no | |||
freqsep | no | |||
stabsepOptions | no | |||
freqsepOptions | no |
Linear Analysis
Chapter | Function | Implemented | File | Status |
---|---|---|---|---|
Time-Domain Analysis | linearSystemAnalyzer | no | ||
impulseplot | no | |||
initialplot | no | |||
lsimplot | no | |||
stepplot | no | |||
covar | yes | covar.m | ||
impulse | yes | impulse.m | ||
initial | yes | initial.m | ||
lsim | yes | lsim.m | ||
step | yes | step.m | ||
lsiminfo | no | |||
stepinfo | no | |||
stepDataOptions | no | |||
Frequency-Domain Analysis | linearSystemAnalyzer | Time Domain Analysis | ||
bodeplot | no | |||
nicholsplot | no | |||
nyquistplot | no | |||
sigmaplot | no | |||
bode | yes | bode.m | ||
nichols | yes | nichols.m | ||
nyquist | yes | nyquist.m | ||
sigma | yes | sigma.m | ||
evalfr | no | |||
freqresp | yes | @lti/freqresp.m | ||
bandwidth | yes | built-in function | ||
dcgain | yes | @lti/dcgain.m | ||
getGainCrossover | no | |||
getPeakGain | no | |||
Stability Analysis | pole | yes | @lti/pole.m | |
zero | yes | @lti/zero.m | ||
damp | no | |||
dsort | no | |||
esort | no | |||
tzero | no | |||
pzplot | no | |||
iopzplot | no | |||
allmargin | no | |||
margin | yes | margin.m | ||
Plot Customization | bodeoptions | no | ||
hsvoptions | no | |||
nicholsoptions | no | |||
nyquistoptions | no | |||
pzoptions | no | |||
sigmaoptions | no | |||
timeoptions | no | |||
setoptions | no | |||
getoptions | no | |||
ctrlpref | no | |||
updateSystem | no |
Control Design
Chapter | Function | Implemented | File | Status |
---|---|---|---|---|
PID Controller Tuning | pidTuner | no | ||
pidtune | no | |||
pidtuneOptions | no | |||
SISO Feedback Loops | rlocus | yes | rlocus.m | |
rlocusplot | no | |||
controlSystemDesigner | no | |||
sisoinit | no | |||
Linear-Quadratic-Gaussian Control | lqr | yes | lqr.m | |
lqry | no | |||
lqi | no | |||
dlqr | yes | dlqr.m | ||
lqrd | no | |||
kalman | yes | kalman.m | ||
kalmd | no | |||
lqg | no | |||
lqgreg | no | |||
lqgtrack | no | |||
augstate | no | |||
norm | yes | @lti/norm.m | ||
Pole Placement | estim | yes | estim.m | |
place | yes | place.m | ||
reg | no |
Matrix Computations
Function | Implemented | File | Status |
---|---|---|---|
lyap | yes | lyap.m | |
lyapchol | yes | lyapchol.m | |
dlyap | yes | dlyap.m | |
dlyapchol | yes | dlyapchol.m | |
care | yes | care.m | |
dare | yes | dare.m | |
gcare | no | ||
gdare | no | ||
ctrb | yes | ctrb.m | |
obsv | yes | obsv.m | |
ctrbf | yes | ctrbf.m | |
obsvf | yes | obsvf.m | |
gram | yes | gram.m | |
bdschur | no | ||
norm | Linear-Quadratic-Gaussian Control |
Some very basic examples
PT1/low-pass filter step response
Code: Creating a transfer function and plotting its response |
T1=0.4; # time constant
P=tf([1], [T1 1]) # create transfer function model
step(P,2) # plot step response
#add some common markers like the tangent line at the origin, which crosses lim(n->inf) f(t) at t=T1
hold on
plot ([0 T1], [0 1],"g")
plot ([T1 T1], [0 1],"k")
plot ([0 T1], [1-1/e 1-1/e],"m")
hold off
|
Try also bode(P)! (a first order low-pass filter has -3db magnitude at f=1/T1)