Replace or update Control Design Blocks in Generalized LTI model
Mnew = replaceBlock(M,Block1,Value1,...,BlockN,ValueN)
Mnew = replaceBlock(M,blockvalues)
Mnew = replaceBlock(...,mode)
replaces
the Control
Design Blocks Mnew
= replaceBlock(M
,Block1,Value1,...,BlockN,ValueN)Block1,...,BlockN
of M
with
the specified values Value1,...,ValueN
. M
is
a Generalized
LTI model or a Generalized matrix.
specifies
the block names and replacement values as field names and values of
the structure Mnew
= replaceBlock(M
,blockvalues
)blockvalues
.
performs
block replacement on an array of models Mnew
= replaceBlock(...,mode
)M
using
the substitution mode specified by mode
.
|
Generalized LTI model, Generalized matrix, or array of such models. |
|
Names of Control Design Blocks in If a specified |
|
Replacement values for the corresponding blocks The replacement value for a block can be any value compatible
with the size of the block, including a different Control Design Block,
a numeric matrix, or an LTI model. If any value is |
|
Structure specifying blocks of The field names of |
|
Block replacement mode for an input array
When the input Default: |
|
Matrix or linear model or matrix where the specified blocks are replaced by the specified replacement values.
|
This example shows how to replace a tunable PID controller (tunablePID
) in a Generalized LTI model
by a pure gain, a numeric PI controller, or the current value of the
tunable controller.
Create a Generalized LTI model of the following system:
where the plant , and C is a tunable PID controller.
G = zpk(1,[-1,-1,-1],1); C = tunablePID('C','pid'); Try = feedback(G*C,1)
Replace C
by a pure gain of 5.
T1 = replaceBlock(Try,'C',5);
T1
is a ss
model
that equals feedback(G*5,1)
.
Replace C
by a PI controller with
proportional gain of 5 and integral gain of 0.1.
C2 = pid(5,0.1); T2 = replaceBlock(Try,'C',C2);
T2
is a ss
model that
equals feedback(G*C2,1)
.
Replace C
by its current (nominal)
value.
T3 = replaceBlock(Try,'C',[]);
T3
is a ss
model where C
has
been replaced by getValue(C)
.
Consider the second-order filter represented by:
Sample this filter at varying values of the damping constant and the natural frequency . Create a tunable model of the filter by using tunable elements for and .
wn = realp('wn',3); zeta = realp('zeta',0.8); F = tf(wn^2,[1 2*zeta*wn wn^2])
F = Generalized continuous-time state-space model with 1 outputs, 1 inputs, 2 states, and the following blocks: wn: Scalar parameter, 5 occurrences. zeta: Scalar parameter, 1 occurrences. Type "ss(F)" to see the current value, "get(F)" to see all properties, and "F.Blocks" to interact with the blocks.
Create a grid of sample values.
wnvals = [3;5]; zetavals = [0.6 0.8 1.0]; [wngrid,zetagrid] = ndgrid(wnvals,zetavals); Fsample = replaceBlock(F,'wn',wngrid,'zeta',zetagrid); size(Fsample)
2x3 array of state-space models. Each model has 1 outputs, 1 inputs, and 2 states.
The ndgrid command produces a full 2-by-3 grid of parameter combinations. Thus, Fsample
is a 2-by-3 array of state-space models. Each entry in the array is a state-space model that represents F
evaluated at the corresponding (wn
, zeta
) pair. For example, Fsample(:,:,2,3)
has wn
= 5 and zeta
= 1.0.
damp(Fsample(:,:,2,3))
Pole Damping Frequency Time Constant (rad/seconds) (seconds) -5.00e+00 1.00e+00 5.00e+00 2.00e-01 -5.00e+00 1.00e+00 5.00e+00 2.00e-01
Use replaceBlock
to perform parameter
studies by sampling Generalized LTI models across a grid of parameters,
or to evaluate tunable models for specific values of the tunable blocks.
See Examples.
For additional options for sampling control design
blocks, including concurrent sampling, use sampleBlock
.
To take random samples of control design blocks, see rsampleBlock
genmat
| genss
| getValue
| nblocks
| rsampleBlock
| sampleBlock