The control package is part of the Octave Forge project.
Function list
Linear System Representation
| Chapter |
Function |
Implemented |
File |
Number of Tests |
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 |
Number of Tests |
Status |
SLICOT functions |
Priority
|
| 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 |
Number of Tests |
Status |
SLICOT functions |
Priority
|
| Model Type Conversion |
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 |
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 |
Number of Tests |
Status |
SLICOT functions |
Priority
|
| 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 |
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 |
Number of Tests |
Status |
SLICOT functions |
Priority
|
| 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 |
Number of Tests |
Status |
SLICOT functions |
Priority
|
| 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 |
|
|
|
|
|
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)