replaceBlock
Replace or update control design blocks in generalized LTI model
Syntax
Mnew = replaceBlock(M,Block1,Value1,...,BlockN,ValueN)
Mnew = replaceBlock(M,blockvalues)
Mnew = replaceBlock(...,mode)
Description
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
.
Input Arguments

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: 
Output Arguments

Matrix or linear model or matrix where the specified blocks are replaced by the specified replacement values.

Examples
Replace Control Design Block with Numeric 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 ass
model that equalsfeedback(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 ass
model that equalsfeedback(G*C2,1)
.Replace
C
by its current (nominal) value.T3 = replaceBlock(Try,'C',[]);
T3
is ass
model whereC
has been replaced bygetValue(C)
.
Sample Tunable Model Over Grid of Values
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
Tips
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
See Also
getValue
 genss
 genmat
 nblocks
 sampleBlock
 rsampleBlock