ToContinuousTimeModel[lsys]
gives the continuous-time approximation of the discrete-time systems models lsys.
ToContinuousTimeModel[tfm,s]
specifies the transform variable s.
ToContinuousTimeModel
ToContinuousTimeModel[lsys]
gives the continuous-time approximation of the discrete-time systems models lsys.
ToContinuousTimeModel[tfm,s]
specifies the transform variable s.
Details and Options
- ToContinuousTimeModel is also known as inverse sampling.
- The systems model lsys can be a TransferFunctionModel or StateSpaceModel.
- ToContinuousTimeModel accepts a Method option that can be used to specify the approximation method.
- Possible settings for the Method option include:
-
"ForwardRectangularRule" Euler forward method "BackwardRectangularRule" Euler backward method "BilinearTransform" Tustin bilinear approximation "ZeroPoleMapping" exact matching of zeros and poles "ZeroOrderHold" piecewise constant approximation "FirstOrderHold" piecewise linear (triangular) approximation - The default setting Method->Automatic implements the bilinear transformation.
- The setting Method->"ZeroPoleMapping" does not support time delays.
- A bilinear transform with critical frequency ω radians per time unit can be specified by setting Method->{"BilinearTransform","CriticalFrequency"->ω}.
- The "FirstOrderHold" method gives the non-causal first-order hold equivalent.
- When approximating TransferFunctionModel objects, "StateSpaceConversion" can be specified as a suboption.
- The setting Method->{m,"StateSpaceConversion"->True} computes the approximation using the state-space representation and converts the result to the transfer-function representation.
- The setting "StateSpaceConversion"->False computes using the transfer-function object.
- The setting "StateSpaceConversion"->Automatic computes the approximation using the transfer-function representation, except for the "ZeroOrderHold" method.
Examples
open all close allBasic Examples (1)
Scope (6)
Convert a discrete-time transfer-function model to a continuous-time model:
ToContinuousTimeModel[TransferFunctionModel[{{{0.01*(0.03 + z)*(0.5 + z)}},
(-0.8 + z)*(-0.5 + z)*(-0.2 + z)}, z,
SamplingPeriod -> 0.6], s]Convert a discrete-time state-space model to a continuous-time model:
ToContinuousTimeModel[StateSpaceModel[{{{0.5, 0.5, 0.1}, {-0.3, 1, 0.3}, {0, 0, 0.3}}, {{0}, {0}, {0.25}}, {{1, 0, 0}},
{{0}}}, SamplingPeriod -> 1, SystemsModelLabels -> None], s]Convert a multiple-input, multiple-output system to a continuous-time system:
ToContinuousTimeModel[TransferFunctionModel[{{{z, -0.3 + z}, {-0.8 + z, 1},
{z, 1}}, {{-1 + z, 0.5 + z},
{0.8 + z, -0.3 + z}, {-0.5 + z, 1}}}, z,
SamplingPeriod -> 0.5], s]ToContinuousTimeModel[TransferFunctionModel[{{{z}}, -a + z}, z,
SamplingPeriod -> T], s]Convert a time-delay StateSpaceModel:
ToContinuousTimeModel[StateSpaceModel[{{{0.5, -SystemsModelDelay[3]}, {0, 0.25}}, {{0}, {1}},
{{1, SystemsModelDelay[20]}}, {{0}}}, SamplingPeriod -> 1, SystemsModelLabels -> None]]Convert a singular descriptor StateSpaceModel:
ToContinuousTimeModel[StateSpaceModel[{{{1, 0, 0}, {0, 1, 0}, {0, 0, -5/6}}, {{0}, {1}, {1}}, {{-1, 19/12, 193/144}},
{{0}}, {{0, 1, 0}, {0, 0, 0}, {0, 0, 1}}}, SamplingPeriod -> 1, SystemsModelLabels -> None]]Options (6)
Method (6)
By default, the approximation is based on the bilinear transformation:
ToContinuousTimeModel[TransferFunctionModel[{{{-1/2 + z}}, -3/4 + z}, z,
SamplingPeriod -> 1], s]Specify the approximation method:
ToContinuousTimeModel[TransferFunctionModel[{{{0.75*z}}, -0.65*z + z^2},
z, SamplingPeriod -> 1], s, Method -> "FirstOrderHold"]Compare various approximation methods:
tfm = TransferFunctionModel[{{{10*(-0.5 + z)}}, -0.8 + z}, z,
SamplingPeriod -> 0.5];Grid[tfc = Table[{m, ToContinuousTimeModel[tfm, s, Method -> m]}, {m, {"ForwardRectangularRule", "BackwardRectangularRule", "BilinearTransform", "ZeroOrderHold", "FirstOrderHold"}}], Frame -> All]BodePlot[Join[{Tooltip[tfm]}, Apply[Tooltip, Reverse[#]]& /@ tfc], {0.05, (π/0.5)}]An approximation that preserves the transmission at a specified frequency:
tfm = TransferFunctionModel[{{{0.2066*(1 - 2*z + z^2)}},
0.1958 + 0.3695*z + z^2}, z, SamplingPeriod -> 0.75];tfmc = ToContinuousTimeModel[tfm, Method -> {"BilinearTransform", "CriticalFrequency" -> 2}]pts = Point[{#}]& /@ Through@{{Log10[2], 20 Log10@Abs[#]}&, {Log10[2], (Arg[#]/Degree)}&}@tfm[Exp[I 2 0.75]][[1, 1]];BodePlot[{tfm, tfmc}, {0.1, (π/0.5)}, Epilog -> pts]The backward Euler method adds states if the state and descriptor matrices are both singular:
ss = StateSpaceModel[{{{1/2, 0}, {1/4, 0}}, {{1/4}, {1}}, {{1, 4}}, {{0}}, {{1, 2}, {0, 0}}},
SamplingPeriod -> 1, SystemsModelLabels -> None];
ToContinuousTimeModel[ss, s, Method -> "BackwardRectangularRule"]The bilinear method adds states if the sum of the state and descriptor matrices is singular:
ss = StateSpaceModel[{{{1/2, -2}, {1/4, 0}}, {{1/4}, {1}}, {{1, 4}}, {{0}}, {{1, 2}, {0, 0}}},
SamplingPeriod -> 1, SystemsModelLabels -> None];
ToContinuousTimeModel[ss, s, Method -> "BilinearTransform"]Applications (1)
Various continuous-time approximations to a fourth-order Chebyshev II bandstop filter:
tfmch4 = TransferFunctionModel[{{{0.4207*(1 + 1.7994*z^2 + z^4)}},
0.221 + 0.37773*z^2 + z^4}, z, SamplingPeriod -> 0.01];methods = {"ForwardRectangularRule", "BackwardRectangularRule", "BilinearTransform", {"BilinearTransform", "CriticalFrequency" -> 160}, "ZeroOrderHold", "FirstOrderHold"};Grid[tfmch4c = Table[{m, Chop[ToContinuousTimeModel[tfmch4, s, Method -> m]//Simplify, 10^-5]}, {m, methods}], Frame -> All]BodePlot[Join[{Tooltip[tfmch4]}, Apply[Tooltip, Reverse[#]]& /@ tfmch4c], {1, 1000}, PlotRange -> All, ImageSize -> 300]Properties & Relations (2)
ToDiscreteTimeModel is essentially the inverse of ToContinuousTimeModel:
d2c2d[sys_, method_] := ToDiscreteTimeModel[ToContinuousTimeModel[sys, Method -> method], 1, Method -> method]Table[d2c2d[TransferFunctionModel[{{{0.5}}, -0.5 + z}, z, SamplingPeriod -> 1], method], {method, {"ForwardRectangularRule", "BackwardRectangularRule", "BilinearTransform", "ZeroOrderHold", "FirstOrderHold"}}]ToContinuousTimeModel may add states to systems with neutral time delays:
ToContinuousTimeModel[StateSpaceModel[{{{0.5, 0}, {0, 0.1}}, {{0}, {1}}, {{2, 0}}, {{0}},
{{1, 0}, {0, 1 - SystemsModelDelay[2]}}}, SamplingPeriod -> 1, SystemsModelLabels -> None]]See Also
Related Guides
History
Text
Wolfram Research (2010), ToContinuousTimeModel, Wolfram Language function, https://reference.wolfram.com/language/ref/ToContinuousTimeModel.html.
CMS
Wolfram Language. 2010. "ToContinuousTimeModel." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/ToContinuousTimeModel.html.
APA
Wolfram Language. (2010). ToContinuousTimeModel. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ToContinuousTimeModel.html
BibTeX
@misc{reference.wolfram_2026_tocontinuoustimemodel, author="Wolfram Research", title="{ToContinuousTimeModel}", year="2010", howpublished="\url{https://reference.wolfram.com/language/ref/ToContinuousTimeModel.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_tocontinuoustimemodel, organization={Wolfram Research}, title={ToContinuousTimeModel}, year={2010}, url={https://reference.wolfram.com/language/ref/ToContinuousTimeModel.html}, note=[Accessed: 12-June-2026]}