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 $$G\left(s\right)=\frac{\left(s1\right)}{{\left(s+1\right)}^{3}}$$, 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 secondorder filter represented by:
$$F\left(s\right)=\frac{{\omega}_{n}^{2}}{{s}^{2}+2\zeta {\omega}_{n}s+{\omega}_{n}^{2}}.$$
Sample this filter at varying values of the damping constant $$\zeta $$ and the natural frequency $${\omega}_{n}$$. Create a tunable model of the filter by using tunable elements for $$\zeta $$ and $${\omega}_{n}$$.
wn = realp('wn',3); zeta = realp('zeta',0.8); F = tf(wn^2,[1 2*zeta*wn wn^2])
F = Generalized continuoustime statespace 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 statespace models. Each model has 1 outputs, 1 inputs, and 2 states.
The ndgrid command produces a full 2by3 grid of parameter combinations. Thus, Fsample
is a 2by3 array of statespace models. Each entry in the array is a statespace 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.00e01 5.00e+00 1.00e+00 5.00e+00 2.00e01
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