Sysquake Pro – Table of Contents
Sysquake for LaTeX – Table of Contents
Dynamical System Functions
This section describes functions related to linear time-invariant dynamical systems.
c2dm
Continuous-to-discrete-time conversion.
Syntax
(numd,dend) = c2dm(numc,denc,Ts) dend = c2dm(numc,denc,Ts) (numd,dend) = c2dm(numc,denc,Ts,method) dend = c2dm(numc,denc,Ts,method) (Ad,Bd,Cd,Dd) = c2dm(Ac,Bc,Cc,Dc,Ts,method)
Description
(numd,dend) = c2dm(numc,denc,Ts) converts the continuous-time transfer function numc/denc to a discrete-time transfer function numd/dend with sampling period Ts. The continuous-time transfer function is given by two polynomials in s, and the discrete-time transfer function is given by two polynomials in z, all as vectors of coefficients with highest powers first.
c2dm(numc,denc,Ts,method) uses the specified conversion method. method is one of
Method | Description |
---|---|
'zoh' or 'z' | zero-order hold (default) |
'foh' or 'f' | first-order hold |
'tustin' or 't' | Tustin (bilinear transformation) |
'matched' or 'm' | Matched zeros, poles and gain |
The input and output arguments numc, denc, numd, and dend can also be matrices; in that case, the conversion is applied separately on each row with the same sampling period Ts.
c2dm(Ac,Bc,Cc,Dc,Ts,method) performs the conversion from continuous-time state-space model (Ac,Bc,Cc,Dc) to discrete-time state-space model (Ad,Bd,Cd,Dd), defined by
dx/dt = Ac x + Bc u y = Cc x + Dc u
and
x(k+1) = Ad x(k) + Bd u(k) y(k) = Cd x(k) + Dd u(k)
Method 'matched' is not supported for state-space models.
Examples
(numd, dend) = c2dm(1, [1, 1], 0.1) numd = 0.0952 dend = 1 -0.9048 (numd, dend) = c2dm(1, [1, 1], 0.1, 'foh') numd = 0.0484 dend = 1 -0.9048 (numd, dend) = c2dm(1, [1, 1], 0.1, 'tustin') numd = 0.0476 0.0476 dend = 1 -0.9048
See also
d2cm
Discrete-to-continuous-time conversion.
Syntax
(numc,denc) = d2cm(numd,dend,Ts) denc = d2cm(numd,dend,Ts) (numc,denc) = d2cm(numd,dend,Ts,method) denc = d2cm(numd,dend,Ts,method)
Description
(numc,denc) = d2cm(numd,dend,Ts,method) converts the discrete-time transfer function numd/dend with sampling period Ts to a continuous-time transfer function numc/denc. The continuous-time transfer function is given by two polynomials in s, and the discrete-time transfer function is given by two polynomials in z, all as vectors of coefficients with highest powers first.
Method is
Method | Description |
---|---|
'tustin' or 't' | Tustin (bilinear transformation) (default) |
The input and output arguments numc, denc, numd, and dend can also be matrices; in that case, the conversion is applied separately on each row with the same sampling period Ts.
d2cm(Ad,Bd,Cd,Dd,Ts,method) performs the conversion from discrete-time state-space model (Ad,Bd,Cd,Dd) to continuous-time state-space model (Ac,Bc,Cc,Dc), defined by
x(k+1) = Ad x(k) + Bd u(k) y(k) = Cd x(k) + Dd u(k)
and
dx/dt = Ac x + Bc u y = Cc x + Dc u
Example
(numd, dend) = c2dm(1, [1, 1], 5, 't') numd = 0.7143 0.7143 dend = 1 0.4286 (numc, denc) = d2cm(numd, dend) numc = -3.8858e-17 1 denc = 1 1
See also
dmargin
Robustness margins of a discrete-time system.
Syntax
(gm,psi,wc,wx) = dmargin(num,den,Ts) (gm,psi,wc,wx) = dmargin(num,den)
Description
The open-loop discrete-time transfer function is given by the two polynomials num and den, with sampling period Ts (default value is 1). If the closed-loop system (with negative feedback) is unstable, all output arguments are set to an empty matrix. Otherwise, dmargin calculates the gain margins gm, which give the interval of gain for which the closed-loop system remains stable; the phase margin psi, always positive if it exists, which defines the symmetric range of phases which can be added to the open-loop system while keeping the closed-loop system stable; the critical frequency associated to the gain margins, where the open-loop frequency response intersects the real axis around -1; and the cross-over frequency associated to the phase margin, where the open-loop frequency response has a unit magnitude. If the Nyquist diagram does not cross the unit circle, psi and wx are empty.
Examples
Stable closed-loop, Nyquist inside unit circle:
(gm,psi,wc,wx) = dmargin(0.005,poly([0.9,0.9])) gm = [-2, 38] psi = [] wc = [0, 0.4510] wx = []
Stable closed-loop, Nyquist crosses unit circle:
(gm,psi,wc,wx) = dmargin(0.05,poly([0.9,0.9])) gm = [-0.2, 3.8] psi = 0.7105 wc = [0, 0.4510] wx = 0.2112
Unstable closed-loop:
(gm,psi,wc,wx) = dmargin(1,poly([0.9,0.9])) gm = [] psi = [] wc = [] wx = []
Caveats
Contrary to many functions, dmargin cannot be used with several transfer functions simultaneously, because not all of them may correspond simultaneously to either stable or unstable closed-loop systems.
See also
margin
Robustness margins of a continuous-time system.
Syntax
(gm,psi,wc,wx) = margin(num,den)
Description
The open-loop continuous-time transfer function is given by the two polynomials num and den. If the closed-loop system (with negative feedback) is unstable, all output arguments are set to an empty matrix. Otherwise, margin calculates the gain margins gm, which give the interval of gain for which the closed-loop system remains stable; the phase margin psi, always positive if it exists, which defines the symmetric range of phases which can be added to the open-loop system while keeping the closed-loop system stable; the critical frequency associated to the gain margins, where the open-loop frequency response intersects the real axis around -1; and the cross-over frequency associated to the phase margin, where the open-loop frequency response has a unit magnitude. If the Nyquist diagram does not cross the unit circle, psi and wx are empty.
Examples
Stable closed-loop, Nyquist inside unit circle:
(gm,psi,wc,wx) = margin(0.5,poly([-1,-1,-1])) gm = [-2, 16] psi = [] wc = [0, 1.7321] wx = []
Stable closed-loop, Nyquist crosses unit circle:
(gm,psi,wc,wx) = margin(4,poly([-1,-1,-1])) gm = [-0.25 2] psi = 0.4737 wc = [0, 1.7321] wx = 1.2328
Unstable closed-loop:
(gm,psi,wc,wx) = margin(10,poly([-1,-1,-1])) gm = [] psi = [] wc = [] wx = []
Caveats
Contrary to many functions, margin cannot be used with several transfer functions simultaneously, because not all of them may correspond simultaneously to either stable or unstable closed-loop systems.
See also
movezero
Change the position of a real or complex zero in a real-coefficient polynomial.
Syntax
pol2 = movezero(pol1, p0, p1) (pol2, p1actual) = movezero(pol1, p0, p1)
Description
movezero should be used in the mousedrag handle when the user drags the zero of a polynomial with real coefficients. It insures a consistent user experience.
If p0 is a real or complex zero of the polynomial pol1, movezero computes a new polynomial pol2, with real coefficients, a zero at p1, and most other zeros unchanged. If p0 and p1 are real,
pol2 = conv(deconv(pol1, [1, -p0]), [1, -p1])
If p0 and p1 are complex and their imaginary part has the same sign,
pol2 = conv(deconv(pol1, poly([p0,conj(p0)])), ... poly([p1,conj(p1)]))
Otherwise, a real pole p0 is moved to complex pole p1 if imag(p1) > 0 and there is another real pole in pol0. A complex pole p0 can be moved to real(p1) if imag(p1)*imag(p0) < 0; in that case, conj(p0) is moved to real(p0).
If it exists, the second output argument is set to the actual value of the displaced pole. It can be used to provide feedback to the user during the drag.
Examples
roots(movezero(poly([1,3,2+3j,2-3j]),1,5)) 5 3 2+3j 2-3j roots(movezero(poly([1,3,2+3j,2-3j]),1,2j)) 2j -2j 2+3j 2-3j roots(movezero(poly([1,3,2+3j,2-3j]),2+3j,5+8j)) 1 3 5+8j 5-8j roots(movezero(poly([1,3,2+3j,2-3j]),2+3j,5-8j)) 1 3 5 2 (pol, newPole) = movezero(poly([1,3,2+3j,2-3j]),2+3j,5-8j); newPole 5
See also
ss2tf
Conversion from state space to transfer function.
Syntax
(num,den) = ss2tf(A,B,C,D) den = ss2tf(A,B,C,D) (num,den) = ss2tf(A,B,C,D,iu) den = ss2tf(A,B,C,D,iu)
Description
A continuous-time linear time-invariant system can be represented by the state-space model
dx/dt = A x + B u y = C x + D u
where
For a sampled-time model, exactly the same function can be used. The derivative
is replaced by a forward shift, and the variable
The degree of the denominator is equal to the number of states, i.e. the size of A. The degree of the numerator is equal to the number of states if D is not zero, and one less if D is zero.
If D is zero, it can be replaced by the empty matrix [].
Example
Conversion from the state-space model
(num, den) = ss2tf(-1, 1, 1, 0) num = 1 den = 1 1
See also
tf2ss
Conversion from transfer function to state space.
Syntax
(A,B,C,D) = tf2ss(num,den)
Description
tf2ss(num,den) returns the state-space representation of the transfer function num/den, which is given as two polynomials. The transfer function must be causal, i.e. num must not have more columns than den. Systems with several outputs are specified by a num having one row per output; the denominator den must be the same for all the outputs.
tf2ss applies to continuous-time systems (Laplace transform) as well as to discrete-time systems (z transform or delta transform).
Example
(A,B,C,D) = tf2ss([2,5],[2,3,8]) A = -1.5 -4 1 0 B = 1 0 C = 1 2.5 D = 0
See also
zp2ss
Conversion from transfer function given by zeros and poles to state space.
Syntax
(A,B,C,D) = zp2ss(z,p,k)
Description
zp2ss(z,p,k) returns the state-space representation of the transfer function with zeros z, poles p and gain k (ratio of leading coefficients of numerator and denominator in decreasing powers). The transfer function must be causal, i.e. the number of zeros must not be larger than the number of poles. zp2ss supports only systems with one input and one output. Complex zeros and complex poles must make complex conjugate pairs, so that the corresponding polynomials have real coefficients.
zp2ss applies to continuous-time systems (Laplace transform) as well as to discrete-time systems (z transform or delta transform).
Example
(A,B,C,D) = zp2ss([1;2],[3;4-1j;4+1j],5) A = 8 -17 1 1 0 0 0 0 3 B = 0 0 1 C = 25 -75 5 D = 0