Attach Metadata to Models
Specify Model Time Units
This example shows how to specify time units of a transfer function model.
The TimeUnit
property
of the tf
model object specifies
units of the time variable, time delays (for continuous-time models),
and the sample time Ts (for discrete-time models). The default time
units is seconds
.
Create a SISO transfer function model with time units in milliseconds:
num = [4 2]; den = [1 3 10]; sys = tf(num,den,'TimeUnit','milliseconds');
You can specify the time units of any dynamic system in a similar way.
The system time units appear on the time- and frequency-domain
plots. For multiple systems with different time units, the units of
the first system are used if the time and frequency units in the Specify Toolbox Preferences for Linear Analysis Plots are auto
.
Note
Changing the TimeUnit
property
changes the system behavior. If you want to use different time units
without modifying system behavior, use chgTimeUnit
.
Interconnect Models with Different Time Units
This example shows how to interconnect transfer function models with different time units.
To interconnect models using arithmetic operations or interconnection commands, the time units of all models must match.
Create two transfer function models with time units of milliseconds and seconds, respectively.
sys1 = tf([1 2],[1 2 3],'TimeUnit','milliseconds'); sys2 = tf([4 2],[1 3 10]);
Change the time units of
sys2
to milliseconds.sys2 = chgTimeUnit(sys2,'milliseconds');
Connect the systems in parallel.
sys = sys1+sys2;
Specify Frequency Units of Frequency-Response Data Model
This example shows how to specify units of the frequency points of a frequency-response data model.
The FrequencyUnit
property specifies units of the frequency vector in the
Frequency
property of the frd
model object. The default frequency units are
rad/TimeUnit
, where TimeUnit
is the time unit
specified in the TimeUnit
property.
Create a random SISO frequency-response data model with frequency data in GHz.
resp = randn(7,1) + i*randn(7,1); freq = logspace(-2,2,7); sys = frd(resp,freq,'FrequencyUnit','GHz');
You can independently specify the units in which you measure the frequency points and sample
time in the FrequencyUnit
and TimeUnit
properties,
respectively. You can also specify the frequency units of a genfrd
in a similar way.
The frequency units appear on the frequency-domain plots. For
multiple systems with different frequency units, the units of the
first system are used if the frequency units in the Specify Toolbox Preferences for Linear Analysis Plots is auto
.
Note
Changing the FrequencyUnit
property changes the system behavior.
If you want to use different frequency units without modifying system behavior, use
chgFreqUnit
.
Extract Subsystems of Multi-Input, Multi-Output (MIMO) Models
This example shows how to extract subsystems of a MIMO model using MATLAB® indexing and using channel names.
Extracting subsystems is useful when, for example, you want to analyze a portion of a complex system.
Create a MIMO transfer function.
G1 = tf(3,[1 10]); G2 = tf([1 2],[1 0]); G = [G1,G2];
Extract the subsystem of G
from the first input to all
outputs.
Gsub = G(:,1);
This command uses MATLAB indexing to specify a subsystem as G(out,in)
, where
out
specifies the output indices and in
specifies the input indices.
Using channel names, you can use MATLAB indexing to extract all the dynamics relating to a particular channel. By using this approach, you can avoid having to keep track of channel order in a complex MIMO model.
Assign names to the model inputs.
G.InputName = {'temperature';'pressure'};
Because G
has two inputs, use a cell array to specify the two
channel names.
Extract the subsystem of G
that contains all dynamics from the
'temperature'
input to all outputs.
Gt = G(:,'temperature');
Gt
is the same subsystem as Gsub
.
Note
When you extract a subsystem from a state-space (ss
)
model, the resulting state-space model may not be minimal. Use sminreal
to eliminate
unnecessary states in the subsystem.
Specify and Select Input and Output Groups
This example shows how to specify groups of input and output channels in a model object and extract subsystems using the groups.
Input and output groups are useful for keeping track of inputs and outputs in complex MIMO models.
Create a state-space model with three inputs and four outputs.
H = rss(3,4,3);
Group the inputs as follows:
Inputs 1 and 2 in a group named
controls
Outputs 1 and 3 to a group named
temperature
Outputs 1, 3, and 4 to a group named
measurements
H.InputGroup.controls = [1 2]; H.OutputGroup.temperature = [1 3]; H.OutputGroup.measurements = [1 3 4];
InputGroup
andOutputGroup
are structures. The name of each field in the structure is the name of the input or output group. The value of each field is a vector that identifies the channels in that group.Extract the subsystem corresponding to the
controls
inputs and thetemperature
outputs.You can use group names to index into subsystems.
Hc = H('temperature','controls')
Hc
is a two-input, two-outputss
model containing the I/O channels from the'controls'
input to the'temperature'
outputs.You can see the relationship between
H
and the subsystemHc
in this illustration.