TransferFunctionModel[g[s],s]
represents the model of the transfer-function matrix g[s] with complex variable s.
TransferFunctionModel[{n[s],d[s]},s]
specifies the numerator n[s] and denominator d[s] of a transfer-function model.
TransferFunctionModel[{z,p,g},s]
specifies the zeros z, poles p, and gain g of a transfer-function model.
gives the transfer-function model of the systems model sys.
TransferFunctionModel
TransferFunctionModel[g[s],s]
represents the model of the transfer-function matrix g[s] with complex variable s.
TransferFunctionModel[{n[s],d[s]},s]
specifies the numerator n[s] and denominator d[s] of a transfer-function model.
TransferFunctionModel[{z,p,g},s]
specifies the zeros z, poles p, and gain g of a transfer-function model.
gives the transfer-function model of the systems model sys.
Details and Options
- TransferFunctionModel is typically used for signal filters and control design.
- A continuous-time system modeled by
where
is the Laplace transform of the output,
is the Laplace transform of the input and
is the transfer matrix can be specified as TransferFunctionModel[g[s],s]. - A discrete-time system modeled by
where
is the Z transform of the output,
is the Z transform of the input and
is the transfer matrix can be specified as TransferFunctionModel[g[z],z,SamplingPeriodτ]. - Time delays can be included in any transfer-function model, by using SystemsModelDelay.
- In TransferFunctionModel[sys], the following systems can be converted:
-
AffineStateSpaceModel approximate Taylor conversion NonlinearStateSpaceModel approximate Taylor conversion StateSpaceModel exact conversion - TransferFunctionModel[…]["prop"] gives the value of the property "prop".
- TransferFunctionModel[…]["Properties"] gives the list of available properties.
- The following options can be given:
-
Appearance Automatic model appearance Method Automatic the method to obtain the transfer function of a state-space model SamplingPeriod Automatic the sampling period of the system SystemsModelLabels Automatic labels for the input and output variables ExternalTypeSignature Automatic variable types for embedded code - The option Appearance can take values Automatic, "Detailed", "Structured", "Elided", and "Iconized".
- Settings for the Method option include "DeterminantExpansion", "ResolventIdentities", "Inverse", and "Generic". With a setting Method->Automatic, the transfer-function model is computed using determinant expansion.
Examples
open all close allBasic Examples (5)
A single-input, single-output system:
TransferFunctionModel[{{(1/s)}}, s]A system with two inputs and one output:
TransferFunctionModel[{{(2/1 + s^2), (s/s - 1)}}, s]Obtain the transfer-function representation of a state-space model:
TransferFunctionModel[StateSpaceModel[{{{a}}, {{b}}, {{c}}, {{0}}},
SamplingPeriod -> None, SystemsModelLabels -> None]]A discrete-time transfer function with a sampling period of 1:
TransferFunctionModel[(1/(z - 1)(z - 0.605)), z, SamplingPeriod -> 1]Evaluate a transfer function over a range of frequencies:
tfm = TransferFunctionModel[(s + 0.25/s^2 + s + 1), s];
tfm[I Range[0.01, 5, 0.5]]Plot[Abs[tfm[I f]], {f, 0, 5}]Scope (19)
A first-order continuous-time system:
TransferFunctionModel[(1/T s + 1), s]TransferFunctionModel[(Subsuperscript[ω, n, 2]/s^2 + 2ζ Subscript[ω, n] s + Subsuperscript[ω, n, 2]), s]TransferFunctionModel[k (Subsuperscript[∑, i = 0, 2]Subscript[b, i]s^i/Subsuperscript[∑, i = 0, 5]Subscript[a, i]s^i), s]A system with three zeros and six poles:
TransferFunctionModel[k (Subsuperscript[∏, i = 1, 3](s + Subscript[z, i])/(Subsuperscript[∏, i = 1, 2](s + Subscript[p, i]))Subsuperscript[∏, i = 1, 2](s^2 + 2 Subscript[ξ, i]Subscript[ω, i]s + Subsuperscript[ω, i, 2])), s]A first-order discrete-time system:
TransferFunctionModel[(1/z - 1), z, SamplingPeriod -> τ]A two-input, one-output system:
TransferFunctionModel[{{(1/s), (1/s + 1)}}, s]SystemsModelDimensions[%]A one-input, two-output system:
TransferFunctionModel[{{(1/s)}, {(1/s + 1)}}, s]SystemsModelDimensions[%]A two-input, two-output system:
TransferFunctionModel[{{(1/s), (1/s + 1)}, {(1/s + 2), (1/s + 3)}}, s]SystemsModelDimensions[%]Specify a transfer function using its numerator and denominator:
TransferFunctionModel[{{{1}}, {{s + 1}}}, s]A MIMO transfer function specified in terms of its numerators and denominators:
TransferFunctionModel[{{{1, s}, {s + 2, s + 4}}, {{s - 5, s + 3}, {s - 1, s + 4}}}, s]A denominator polynomial that is the least common multiple:
TransferFunctionModel[{{{3(s + 1), s + 6}, {s + 3, s + 2}}, (s + 1)(s + 2)}, s]Specify the transfer function, using its algebraic poles, zeros, and gains:
TransferFunctionModel[{{{{z}}}, {{{p}}}, {{g}}}, s]TransferFunctionModel[{(| | |
| ----- | ----- |
| {z11} | {z12} |
| {z21} | {z22} |), (| | |
| ----- | ----- |
| {p11} | {p12} |
| {p21} | {p22} |), (| | |
| --- | --- |
| g11 | g12 |
| g21 | g22 |)}, s]TransferFunctionModel[10]TransferFunctionModel[10, SamplingPeriod -> 1]TransferFunctionModel[g]% /. g -> 5The transfer-function representation of a state-space model:
TransferFunctionModel[StateSpaceModel[{{{-3, 0}, {0, -2}}, {{1}, {2}}, {{1, 0}}, {{0}}}, SamplingPeriod -> None,
SystemsModelLabels -> None], s]Taylor linearize an AffineStateSpaceModel and obtain its transfer function representation:
TransferFunctionModel[AffineStateSpaceModel[{{Subscript[x, 1] + Subscript[x, 2]^2,
(-Subscript[x, 1])*Subscript[x, 2]},
{{1}, {Subscript[x, 1]}}, {Subscript[x, 1]}, {{0}}},
{Subscript[x, 1], Subscript[x, 2]}, {u}, {Automatic},
Automatic, SamplingPeriod -> None], s]The linearization of an AffineStateSpaceModel with nonzero equilibrium values:
TransferFunctionModel[AffineStateSpaceModel[{{Subscript[x, 1] + 2*Subscript[x, 2] +
Subscript[x, 2]^2, 1 - Subscript[x, 1] +
Subscript[x, 2] - Subscript[x, 1]*Subscript[x, 2]},
{{1}, {Subscript[x, 1]}}, {-1 + Subscript[x, 1]}, {{0}}},
{{Subscript[x, 1], 1}, {Subscript[x, 2], -1}}, {u},
{Automatic}, Automatic, SamplingPeriod -> None], s]Taylor linearize a NonlinearStateSpaceModel:
TransferFunctionModel[NonlinearStateSpaceModel[{{-1 + u*x}, {-1 + x}},
{{x, 1}}, {{u, 1}}, {Automatic}, Automatic, SamplingPeriod -> None], s]The list of available properties:
TransferFunctionModel[{{{3 + s}}, 10 + 7*s + s^2}, s]["Properties"]Generalizations & Extensions (2)
SISO systems can also be specified as a single-element list:
TransferFunctionModel[{(1/s)}, s]Or just as a rational function:
TransferFunctionModel[(1/s), s]A single-output system can be given as a list:
TransferFunctionModel[{(1/2 s + 1), (3/4 s + 1)}, s]Options (5)
SamplingPeriod (3)
Specify a continuous-time system:
TransferFunctionModel[(1/s^2 + a s + b), s]TransferFunctionModel[(1/s^2 + a s + b), s, SamplingPeriod -> None]A discrete-time system with sampling period 1:
TransferFunctionModel[(z/z - 1), z, SamplingPeriod -> 1]A system with a symbolic sampling period:
TransferFunctionModel[(1/s^2 + a s + b), s, SamplingPeriod -> T]Set the sampling period to a numeric value:
% /. T -> 2SystemsModelLabels (1)
Label the input and output variables of a transfer function model:
TransferFunctionModel[(| | | |
| ----------- | --------- | ----------- |
| (s/2 + s^2) | (1/s) | (1/2 + s^2) |
| (1/s) | (1 + s/s) | (1/2 + s^2) |), s, SystemsModelLabels -> {{"SubscriptBox[u, 1]", "SubscriptBox[u, 2]", "SubscriptBox[u, 3]"}, {"SubscriptBox[y, 1]", "SubscriptBox[y, 2]"}}]By default, the appearance is selected to fit the display in the notebook:
TransferFunctionModel[{{(18/(s + 1)(s + 3)(s + 6)), (10/(s + 5)(s + 2)), (3/s^3 + s^2 + s + 3), (2/s(s + 1)(s + 2))}, {(100/s^2 + 3s + 100), (3/s(s + 1)(s + 3)(s + 6)), (3/s^3 + s^2 + s + 3), (4/(s + 1)(s + 2)(s + 5)(s + 3))}, {(20/(s + 5)(s + 4)), (10/s^2 + 10), (5/s^2 + s + 5), (10/s^4 + 5 s^2 + 10)}}, s]TransferFunctionModel[(1/s + 1), s]Applications (18)
A proportional-integral (PI) controller:
TransferFunctionModel[Subscript[k, p] + (Subscript[k, i]/ s), s]A proportional-derivative (PD) controller:
TransferFunctionModel[Subscript[k, p] + Subscript[k, d] s, s]A function to construct a proportional-integral-derivative (PID) controller:
pid[kp_, ki_, kd_] := TransferFunctionModel[kp + (ki/ s) + kd s, s]A PID with specific gain values:
pid[1, 2.5, 0.5]A function to construct a discrete-time PID controller:
dpid[kp_, ki_, kd_, τ_] := TransferFunctionModel[kp + ki(τ z/z - 1) + kd (z - 1/τ z), z, SamplingPeriod -> τ]dpid[260, 130, 5, 0.1]A function for a continuous-time lead compensator:
lead[k_, T_ /; T > 0, α_ /; 0 < α < 1] := TransferFunctionModel[k(s + (1/T)/ s + (1/α T)), s]A lead compensator for specific values of gain and pole-zero locations:
lead[200, 0.02, 0.5]A function for a continuous-time lag compensator:
lag[k_, T_ /; T > 0, α_ /; α > 1] := TransferFunctionModel[k(s + (1/T)/ s + (1/α T)), s]lag[1000, 0.08, 2]A digital lag compensator defined in terms of its zero and pole locations:
dlag[zero_, pole_, τ_] /; zero < pole < 1 := TransferFunctionModel[((1 - pole)(z - zero)/ (1 - zero)(z - pole)), z, SamplingPeriod -> τ];dlag[0.2, 0.5, 0.01]A general formula for analog lowpass Butterworth filters:
butterworth[ω_, n_ ? OddQ] := TransferFunctionModel[(ω/s + ω)Underoverscript[∏, i = 1, (n - 1) / 2](ω^2/s^2 + 2Cos[(π i/n)]ω s + ω^2), s]
butterworth[ω_, n_] := TransferFunctionModel[Underoverscript[∏, i = 1, n / 2](ω^2/s^2 + 2Cos[(π (i - 1 / 2)/n)]ω s + ω^2), s]butterworth[Subscript[ω, N], 3]butterworth[Subscript[ω, N], 4]//NTransferFunctionModel[(15/ s^3 + 6s^2 + 15 s + 15), s]The general second-order transfer function:
order2[ζ_, ω_] := TransferFunctionModel[ (ω^2/s^2 + 2ζ ω s + ω^2), s];Variations in damping ratio lead to qualitatively different responses:
Table[{Last[damping], sys = order2[First[damping], 6], Plot[OutputResponse[sys, UnitStep[t], t]//Evaluate, {t, 0, 8}, PlotRange -> All]}, {damping, {{0, "Undamped"}, {0.7, "Underdamped"}, {1, "Critically damped"}, {5, "Overdamped"}}}]//TableFormA linearized inverted pendulum model:
invpend[M_, m_, l_, g_] := TransferFunctionModel[{{{-s^2}, { l s^2 - g}, {-s^3}, {l s^3 - g s}}, M l s^4 - g(M + m)s^2}, s, SystemsModelLabels -> {"u", {"θ", "x", "θ'", "x'"}}]invpend[5, 3.75, 1.5, 9.8]
smd[k_, m_, b_] := TransferFunctionModel[ (1/m s^2 + b s + k), s];smd[0.1, 0.5, 0.2]Transfer function between the input voltage and the shaft angular position of a DC motor:
dcmotor[Kt_, Kf_, J_, B_, L_, R_] := TransferFunctionModel[ (Kt/(J s^2 + B s)(L s + R) + Kt Kf s), s];dcmotor[0.02, 0.02, 0.015, 0.1, 0.5, 1.3]The aileron-to-roll-rate transfer function of an aircraft:
TransferFunctionModel[(-5.9(s - 0.05)(s^2 + 0.46s + 1.1978)/(s + 0.067)(s + 0.7)(s^2 + 0.8054s + 4.21031)), s]A temperature-controlled chemical reactor:
TransferFunctionModel[(Subscript[k, p]/1 + Subscript[τ, p] s), s]
rlc[r_, l_, c_] := TransferFunctionModel[(r/r + s l + (1/s c)), s];rlc[100, 10^-4, 10^-6]A MIMO transfer function describing an aircraft's longitudinal dynamics:
TransferFunctionModel[{{(-0.0005(s - 70)(s + 0.5)/(s^2 + 0.0065s + 0.006)(s^2 + s + 1.4))}, {(-0.02(s + 80)(s^2 + 0.0065s + 0.006)/(s^2 + 0.005s + 0.006)(s^2 + s + 1.4))}, {(-1.4(s + 0.02)(s + 0.4)/(s^2 + 0.005s + 0.006)(s^2 + s + 1.4))}}, s]A ball mill grinding system with delay due to material transport:
TransferFunctionModel[{{{-0.425 / E ^ (1.52 * s), 0.1052 * (1 + 47.1 * s)},
{2.977, 1.063 / E ^ (2.26 * s)}}, {{1 + 11.7 * s, 1 + 11.5 * s}, {1 + 5.5 * s, 1 + 2.5 * s}}}, s,
SystemsModelLabels -> {{"FreshFeed", "SumpWater"}, {"Product", "Throughput"}}]Properties & Relations (6)
TransferFunctionModel behaves as a pure function of one argument:
lsys = TransferFunctionModel[{{(2/1 + s^2), (s/s - 1)}}, s]lsys[x]The value of the transfer-function matrix at a specific frequency:
lsys[10. I]The values at several frequencies:
lsys[Range[3, 7]I]Use TransferFunctionFactor to obtain the factored form:
TransferFunctionFactor[TransferFunctionModel[(1/s) + (1/s - 1), s]]TransferFunctionExpand[TransferFunctionModel[(1/s) + (1/s - 1), s]]Use TransferFunctionCancel to cancel any common poles and zeros:
TransferFunctionModel[{{{s + 10}}, (s + 10)}, s]TransferFunctionCancel[%]Find the element zeros and poles of a transfer-function matrix:
tfm = TransferFunctionModel[{{(s/1 + s^2), (s + 3/s - 1), (1/s + 1)}, {(s - 3/s + 2), (s + 1/s + 2), (s + 4/1 + s^2)}}, s];TransferFunctionPoles[tfm]TransferFunctionZeros[tfm]Obtain a state-space form of a transfer-function model:
StateSpaceModel[ TransferFunctionModel[{{(10(s - 2)/(s^2 + 2 s + 1.25) (s^2 + 6 s + 25))}}, s]]Possible Issues (3)
In TransferFunctionModel[m,var], pole-zero pairs may cancel before being processed:
((s + 2)(s + 3)/(s + 2)(s + 4))TransferFunctionModel[((s + 2)(s + 3)/(s + 2)(s + 4)), s]Use Unevaluated to prevent cancellations:
TransferFunctionModel[Unevaluated[((s + 2)(s + 3)/(s + 2)(s + 4))], s]Or use TransferFunctionModel[{num,den},var]:
TransferFunctionModel[{{{(s + 2)(s + 3)}}, (s + 2)(s + 4)}, s]Or TransferFunctionModel[{z,p,g},var]:
TransferFunctionModel[{{{{-3, -2}}}, {-4, -2}, {{1}}}, s]TransferFunctionModel[m,var] might result in a system with higher order:
m = (1/(s + 1)) - (1/(s + 1)^2);
TransferFunctionModel[m, s]TransferFunctionModel[%, s]//SimplifyOr simplify m before passing it to TransferFunctionModel:
Together[m]TransferFunctionModel[%, s]If the complex variable var is not specified, it is assumed to be s for continuous-time systems:
TransferFunctionModel[(s/10s + 1)]%[var]Specify the transfer function using s:
TransferFunctionModel[(/10 + 1)][var]For discrete-time systems, use z:
TransferFunctionModel[(1/ + 0.4), SamplingPeriod -> τ][var]History
Introduced in 2010 (8.0) | Updated in 2012 (9.0) ▪ 2014 (10.0)
Text
Wolfram Research (2010), TransferFunctionModel, Wolfram Language function, https://reference.wolfram.com/language/ref/TransferFunctionModel.html (updated 2014).
CMS
Wolfram Language. 2010. "TransferFunctionModel." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2014. https://reference.wolfram.com/language/ref/TransferFunctionModel.html.
APA
Wolfram Language. (2010). TransferFunctionModel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TransferFunctionModel.html
BibTeX
@misc{reference.wolfram_2026_transferfunctionmodel, author="Wolfram Research", title="{TransferFunctionModel}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/TransferFunctionModel.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_transferfunctionmodel, organization={Wolfram Research}, title={TransferFunctionModel}, year={2014}, url={https://reference.wolfram.com/language/ref/TransferFunctionModel.html}, note=[Accessed: 12-June-2026]}