Extract Model Coefficients
Functions for Extracting Model Coefficients
Control System Toolbox™ software includes several commands for extracting model coefficients such as transfer function numerator and denominator coefficients, state-space matrices, and proportional-integral-derivative (PID) gains.
The following commands are available for data extraction.
| Command | Result |
|---|---|
tfdata | Extract transfer function coefficients |
zpkdata | Extract zero and pole locations and system gain |
ssdata | Extract state-space matrices |
dssdata | Extract descriptor state-space matrices |
frdata | Extract frequency response data from frd
model |
piddata | Extract parallel-form PID data |
pidstddata | Extract standard-form PID data |
get | Access all model property values |
Extracting Coefficients of Different Model Type
When you use a data extraction command on a model of a different type, the
software computes the coefficients of the target model type. For example, if you use
zpkdata on a ss model, the software
converts the model to zpk form and returns the zero and pole
locations and system gain.
Extract Numeric Model Data and Time Delay
This example shows how to extract transfer function numerator and denominator
coefficients using tfdata.
Create a first-order plus dead time transfer function model.
s = tf('s'); H = exp(-2.5*s)/(s+12);Extract the numerator and denominator coefficients.
[num,den] = tfdata(H,'v')
The variables
numanddenare numerical arrays. Without the'v'flag,tfdatareturns cell arrays.Note
For SISO transfer function models, you can also extract coefficients using:
num = H.Numerator{1}; den = H.Denominator{1};Extract the time delay.
Determine which property of
Hcontains the time delay.In a SISO
tfmodel, you can express a time delay as an input delay, an output delay, or a transport delay (I/O delay).get(H)
Numerator: {[0 1]} Denominator: {[1 12]} Variable: 's' IODelay: 0 InputDelay: 0 OutputDelay: 2.5000 Ts: 0 TimeUnit: 'seconds' InputName: {''} InputUnit: {''} InputGroup: [1×1 struct] OutputName: {''} OutputUnit: {''} OutputGroup: [1×1 struct] Notes: [0×1 string] UserData: [] Name: '' SamplingGrid: [1×1 struct]The time delay is stored in the
OutputDelayproperty.Extract the output delay.
delay = H.OutputDelay;
Extract PID Gains from Transfer Function
This example shows how to extract PID (proportional-integral-derivative) gains
from a transfer function using piddata. You can use the same
steps to extract PID gains from a model of any type that represents a PID
controller, using piddata or pidstddata.
Create a transfer function that represents a PID controller with a first-order filter on the derivative term.
Czpk = zpk([-6.6,-0.7],[0,-2],0.2)
Obtain the PID gains and filter constant.
[Kp,Ki,Kd,Tf] = piddata(Czpk)
This command returns the proportional gain
Kp, integral gainKi, derivative gainKd, and derivative filter time constantTf. Becausepiddataautomatically computes the PID controller parameters, you can extract the PID coefficients without creating apidmodel.