Application examples solved using both Ch Control Systems Toolkit and MATLAB Control Systems Toolbox can be found here.

Selected Syntax Comparison of Ch® Control System Toolkit with MATLAB® Control System Toolbox

MATLAB Control Toolbox Ch Control Toolkit
k = acker(A,b,p) sys.model("ss", A, b, NULL, NULL);
k = sys.acker(A, b, p);
sys = append(sys1,sys2,...,sysN) sys = sys1.append(sys2, ..., sysN);
asys = augstate(sys) asys = sys.augstate();
fb = bandwidth(sys) fb = sys.bandwidth();
bodemag(sys) sys.bodemag(plot, NULL, NULL);
bodemag(sys,{wmin, wmax}) sys.bodemag(plot, NULL, NULL, wmin, wmax);
w={wmin, wmax};
bodemag(sys, w)
sys.bodemag(plot, NULL, NULL, wmin, wmax);
bode(sys) sys.bode(plot, NULL, NULL, NULL);
bode(sys,{wmin, wmax}) sys.bode(plot, NULL, NULL, NULL, wmin, wmax);
w={wmin, wmax};
bode(sys, w)

(NOTE: For function bode(), the argument
in MATLAB could be either {wmin,wmax} to focus
on the particular frequency interval [wmin,wmax],
or a vector of desired frequencies to use particular
frequency points. In Ch, they have different prototypes.)
sys.bode(plot, NULL, NULL, NULL, wmin, wmax);
w=[w0,w1,w2, ..., wn];
bode(sys, w)
double w[]={w0,w1,w2, ..., wn};
sys.bode(plot, NULL, NULL, NULL, w);
w=logspace(wmin, wmax);
bode(sys, w)
logspace(w,wmin,wmax);
sys.bode(plot, NULL, NULL, NULL, w);
w=logspace(wmin, wmax, n);
bode(sys, w)
array double w[n];
logspace(w, wmin, wmax);
sys.bode(plot, NULL, NULL, NULL, w);
[mag,phase,wout]=bode(sys) sys.bode(NULL, mag, phase, wout);
[mag,phase,wout]=bode(sys, {wmin, wmax}) sys.bode(NULL, mag, phase, wout, wmin, wmax);
[mag,phase]=bode(sys, w) sys.bode(NULL, mag, phase, NULL, w);
sysd = c2d(sys, Ts, method) sysd = sys.c2d(Ts, method);
csys = canon(sys) csys = sys.canon(NULL);
[csys, T] = canon(sys) csys = sys.canon(T);
csys = canon(sys, 'type') csys = sys.canon(NULL, 'type');
[csys, T] = canon(sys, 'type') csys = sys.canon(T, 'type');
sysc = connect(sys,[]) sysc = sys.connect(NULL, NULL, NULL);
sysc = connect(sys,Q) sysc = sys.connect(Q, NULL, NULL);
sysc = connect(sys,Q,inputs,outputs) sysc = sys.connect(Q, inputs, outputs);
co = ctrb(sys) sys.ctrb(co);
co = ctrb(A, B) sys.model("ss", A, B, NULL, NULL);
sys.ctrb(co);
[Abar,Bbar,Cbar,T,k] = ctrbf(A,B,C) sys.model("ss", A, NULL, NULL, NULL);
sys.ctrbf(Abar, Bbar, Cbar, T, k, A, B, C);
[Abar,Bbar,Cbar,T,k] = ctrbf(A,B,C,tol) sys.model("ss", A, NULL, NULL, NULL);
sys.ctrbf(Abar, Bbar, Cbar, T, k, A, B, C, tol);
sysc = d2c(sysd) sysc = sysd.d2c();
sysc = d2c(sysd,method) sysc = sysd.d2c(method);

(NOTE:Only method 'zoh' is available for now.)
sys1 = d2d(sys,ts) sys1 = sys.d2d(ts);
damp(sys) sys.damp();
[wn,z] = damp(sys) sys.damp(wn, z);
[wn,z,p] = damp(sys) sys.damp(wn, z, p);
K = dcgain(sys) K = sys.dcgain();
[k,s,e] = dlqr(a,b,q,r) sys.model("ss", a, b, NULL, NULL);
sys.dlqr(k, s, e, q, r);
[k,s,e] = dlqr(a,b,q,r,n) sys.model("ss", a, b, NULL, NULL);
sys.dlqr(k, s, e, q, r, n);
x = dlyap(a, q)
sys.dlyap(x, a, q);
sys = drss(n) sys.model("drss", n);
sys = drss(n,p) sys.model("drss", n, p);
sys = drss(n,p,m) sys.model("drss", n, p, m);
s = dsort(p) sys.model("zpk", z, p, k, -1);
s = sys.dsort();
s = esort(p) sys.model("zpk", z, p, k);
s = sys.esort();
est = estim(sys,l) est = sys.estim(l);
est = estim(sys,l,sensors,known) est = sys.estim(l, sensors, known);
sys = feedback(sys1,sys2) sys = sys1.feedback(sys2);
sys = feedback(sys1,sys2,sign) sys = sys1.feedback(sys2, sign);
sys = feedback(sys1,sys2, feedin, feedout, sign) sys = sys1.feedback(sys2, feedin, feedout, sign);
grid on sys.grid(1);
grid off sys.grid(0);
grid sys.grid(0); or sys.grid(1);
impulse(sys) sys.impulse(plot, NULL, NULL, NULL);
impulse(sys, tf) sys.impulse(plot, NULL, NULL, NULL, tf);
yout = impulse(sys) sys.impulse(NULL, yout, NULL, NULL);
[y, tout] = impulse(sys) sys.impulse(NULL, yout, tout, NULL);
[y, tout, xout] = impulse(sys) sys.impulse(NULL, yout, tout, xout);
yout = impulse(sys, tf) sys.impulse(NULL, yout, NULL, NULL, tf);
yout = impulse(sys, 0:dt:tf) double y[tf/dt+1];
sys.impulse(NULL, yout, NULL, NULL, tf);
initial(sys, x0) sys.initial(plot, NULL, NULL, NULL, x0);
initial(sys, x0, 0:dt:tf) sys.initial(plot, NULL, NULL, NULL, x0, tf);
yout = initial(sys, x0) sys.initial(NULL, yout, NULL, NULL, x0);
yout = initial(sys, x0, 0:dt:tf) sys.initial(NULL, yout, NULL, NULL, x0, tf);
[yout, tout] = initial(sys, x0) sys.initial(NULL, yout, tout, NULL, x0);
[yout, tout] = initial(sys, x0, 0:dt:tf) sys.initial(NULL, yout, tout, NULL, x0, tf);
[yout, tout, xout] = initial(sys, x0) sys.initial(NULL, yout, tout, xout, x0);
[yout, tout, xout] = initial(sys, x0, 0:dt:tf) sys.initial(NULL, yout, tout, xout, x0, tf);
r = input('message to user') char s[30];
double r;
printf("message to user");
scanf("%s", s); or getline(_stdio, s, 30);
r = streval(s);
r = input('message to user', 's') char r[30];
printf("message to user");
scanf("%s", r); or getline(_stdio, r, 30);
[l,p,e] = lqe(a,g,c,q,r) sys.model("ss", a, NULL, c, NULL);
sys.lqe(l, p, e, g, q, r);
[l,p,e] = lqe(a,g,c,q,r,n) sys.model("ss", a, NULL, c, NULL);
sys.lqe(l, p, e, g, q, r, n);
[k,s,e] = lqr(a,b,q,r) sys.model("ss", a, b, NULL, NULL);
sys.lqr(k, s, e, q, r);
[k,s,e] = lqr(a,b,q,r,n) sys.model("ss", a, b, NULL, NULL);
sys.lqr(k, s, e, q, r, n);
lsim(sys, u, 0:dt:tf) array double u[tf/dt+1];
sys.lsim(plot, NULL, NULL, NULL, u, tf);
lsim(sys, u, t) sys.lsim(plot, NULL, NULL, NULL, u, tf);
lsim(sys, u, t, x0) sys.lsim(plot, NULL, NULL, NULL, u, tf, x0);
y = lsim(sys, u, t, x0) sys.lsim(plot, y, NULL, NULL, u, tf, x0);
[y, tout] = lsim(sys, u, t) sys.lsim(plot, y, tout, NULL, u, tf);
[y, tout] = lsim(sys, u, t, x0) sys.lsim(plot, y, tout, NULL, u, tf, x0);
[y, tout, xout] = lsim(sys, u, t) sys.lsim(plot, y, tout, xout, u, tf);
[y, tout, xout] = lsim(sys, u, t, x0) sys.lsim(plot, y, tout, xout, u, tf, x0);
margin(sys) sys.margin(plot, NULL, NULL, NULL, NULL);
[gm,pm,wcg,wcp] = margin(sys) sys.margin(NULL, gm, pm, wcg, wcp);
[Gm,Pm,Wcg,Wcp] = margin(mag,phase,w) sys.margin(NULL, gm, pm, wcg, wcp, mag, phase, w);
[Am,Bm,Cm,Dm] = minreal(A,B,C,D) sys.model("ss", A, B, C, D);
sys2 = sys.minreal(NULL);
sys2->ssdata(Am, Bm, Cm, Dm);
sysr = minreal(sys) sys.model("ss", A, B, C, NULL);
sys2 = sys.minreal(NULL);
sys2 = sys.pzcancel();
sysr = minreal(sys, tol) sys.model("ss", A, B, C, NULL);
sys2 = sys.minreal(NULL, tol);
sys2 = sys.pzcancel(tol)
[sysr, u] = minreal(sys, tol) sys.model("ss", A, B, C, NULL);
sys2 = sys.minreal(u, tol);
wc = gram(sys,'c') sys.model("ss", A, B, NULL, NULL);
sys.gram(wc, 'c');
wo = gram(sys,'o') sys.model("ss", A, NULL, C, NULL);
sys.gram(wo, 'o');
ngrid sys.ngrid(1);
ngrid('new') sys.ngrid(1);
nichols(H);
ngrid
sys.ngrid(1);
sys.nichols();
ngrid('new');
nichols(H)
sys.ngrid(1);
sys.nichols();
nichols(sys) sys.nichols(plot, NULL, NULL, NULL);
nichols(sys,{wmin, wmax}) sys.nichols(plot, NULL, NULL, NULL, wmin, wmax);
w={wmin, wmax};
nichols(sys, w)
sys.nichols(plot, NULL, NULL, NULL, wmin, wmax);
w=[w0,w1,w2, ..., wn];
nichols(sys, w)
double w[]={w0,w1,w2, ..., wn};
sys.nichols(plot, NULL, NULL, NULL, w);
w=logspace(wmin, wmax);
nichols(sys, w)
logspace(w,wmin,wmax);
sys.nichols(plot, NULL, NULL, NULL, w);
w=logspace(wmin, wmax, n);
nichols(sys, w)
array double w[n];
logspace(w, wmin, wmax);
sys.nichols(plot, NULL, NULL, NULL, w);
[mag,phase,wout]=nichols(sys) sys.nichols(NULL, mag, phase, wout);
[mag,phase,wout]=nichols(sys, {wmin, wmax}) sys.nichols(NULL, mag, phase, wout, wmin, wmax);
[mag,phase]=nichols(sys, w) sys.nichols(NULL, mag, phase, NULL, w);
nyquist(sys) sys.nyquist(plot, NULL, NULL, NULL);
nyquist(sys,w) sys.nyquist(plot, NULL, NULL, NULL, w);
[re,im,wout] = nyquist(sys) sys.nyquist(NULL, re, im, wout);
[re,im] = nyquist(sys,w) sys.nyquist(NULL, w, re, NULL, w);
ob = obsv(sys) sys.obsv(ob);
ob = obsv(A, C) sys.model("ss", A, NULL, C, NULL);
sys.obsv(ob);
[Abar,Bbar,Cbar,T,k] = obsvf(A,B,C) sys.model("ss", A, B, C, NULL);
sys.obsvf(Abar, Bbar, Cbar, T, k, A, B, C);
[Abar,Bbar,Cbar,T,k] = obsvf(A,B,C,tol) sys.model("ss", A, B, C, NULL);
sys.obsvf(Abar, Bbar, Cbar, T, k, A, B, C, tol);
sys = parallel(sys1, sys2) sys = sys1.parallel(sys2);
sys = parallel(sys1, sys2, inp1, inp2, out1, out2) sys = sys1.parallel(sys2, input1, input2, output1, output2);
k = place(A,B,p) sys.model("ss", A, B, NULL, NULL);
sys.place(k, p);
p = pole(sys) sys.pole(p);
N/A sys.printss();
N/A sys.printSystem();
N/A sys.printtf();
N/A sys.printzpk();
pzmap(sys) sys.pzmap(plot, NULL, NULL);
[p,z]=pzmap(sys) sys.pzmap(NULL, p, z);
N/A sys.pzmap(plot, p, z);
rlocus(sys) sys.rlocus(plot, NULL, NULL);
rlocus(sys,k) sys.rlocus(plot, NULL, NULL, k);
[r,kout] = rlocus(sys) sys.rlocus(NULL, r, kout);
[r] = rlocus(sys, k) sys.rlocus(NULL, r, NULL, k);
N/A sys.rlocus(plot, r, kout);
N/A sys.rlocus(plot, r, NULL, k);
rlocfind(sys, p) sys.rlocfind(NULL, NULL, p);
[k, poles] = rlocfind(sys, p) sys.rlocfind(k, poles, p);
sys = rss(n) sys.model("rss", n);
sys = rss(n,p) sys.model("rss", n, p);
sys = rss(n,p,m) sys.model("rss", n, p, m);
sys = series(sys1, sys2) sys = sys1.series(sys2);
sys = series(sys1, sys2, out1, inp2) sys = sys1.series(sys2, output1, input2);
sgrid sys.sgrid(1);

(NOTE: Only apply to functions pzmap() and rlocus().)
sgrid('new') sys.sgrid(1);
sgrid(z, wn) sys.sgrid(1, z, wn);
sgrid(z, wn, 'new') sys.sgrid(1, z, wn);
pzmap(H);
sgrid
sys.sgrid(1);
sys.pzmap();
sgrid('new');
pzmap(H)
sys.sgrid(1);
sys.pzmap();

(NOTE: z and wn can be intelligently generated.)
pzmap(H);
sgrid(z, wn)
sys.sgrid(1, z, wn);
sys.pzmap();
sgrid(z, wn, 'new');
pzmap(H)
sys.sgrid(1, z, wn);
sys.pzmap();
nx = size(sys, 'order') nx = sys.size('x');
ny = size(sys, 1) ny = sys.size('y');
nu = size(sys, 2) nu = sys.size('u');
N/A nn = sys.size('n');
N/A nd = sys.size('d');
N/A nz = sys.size('z');
N/A np = sys.size('p');
N/A nk = sys.size('k');
[A,B,C,D] = ssdata(sys) int nx, ny, nu;
nx = sys.size('x');
ny = sys.size('y');
nu = sys.size('u');
array double A[nx][nx], B[nx][nu], C[ny][nx], D[ny][nu];
sys.ssdata(A, B, C, D);
step(sys) sys.step(plot, NULL, NULL, NULL);
step(sys, tf) sys.step(plot, NULL, NULL, NULL, tf);
[yout, tout] = step(sys) sys.step(NULL, yout, tout, NULL);
[yout, tout, xout] = step(sys) sys.step(NULL, yout, tout, xout);
yout = step(sys, tf) sys.step(NULL, yout, NULL, NULL, tf);
yout = step(sys, 0:dt:tf) double y[tf/dt+1];
sys.step(NULL, yout, NULL, NULL, tf);
N/A sys.step(plot, yout, NULL, NULL);
N/A sys.step(plot, yout, NULL, NULL, tf);
step(sys) sys.step(plot, NULL);
step(sys, tf) sys.step(plot, NULL, tf);
y = step(sys) sys.step(NULL, y);
y = step(sys, tf) sys.step(NULL, y, tf);
y = step(sys, 0:dt:tf) double y[tf/dt+1];
sys.step(NULL, y, tf);
N/A sys.step(plot, y);
N/A sys.step(plot, y, tf);
S = stepinfo(sys) sys.stepinfo(risetime, settlingtime, overshoot,
peakvalue, peaktime, undershoot, settlingmin,
settlingmax);
S = stepinfo(sys, 'SettlingTimeThreadshold',
ts_percentage);
sys.stepinfo(risetime, settlingtime, overshoot,
peakvalue, peaktime, undershoot, settlingmin,
settlingmax, ts_percentage, NULL, NULL);
rt[1] = tr_lowerlimit
rt[2] = tr_upperlimit
S = stepinfo(sys, 'RiseTimeLimits', rt);
sys.stepinfo(risetime, settlingtime, overshoot,
peakvalue, peaktime, undershoot, settlingmin,
settlingmax, NULL, tr_lowerlimit, tr_upperlimit);
sys = ss(A, B, C, D) sys.model("ss", A, B, C, D);
sysT = ss2ss(sys,T) sysT = sys.ss2ss(T);
[num,den] = ss2tf(A,B,C,D) sys.model("ss", A, B, C, D);
sys.tfdata(num, den);
[z, p, k] = ss2zp(A,B,C,D) sys.model("ss", A, B, C, D);
sys.zpkdata(z, p, k);
sys = tf(num, den) sys.model("tf", num, den);
sys = tf(num, den, Ts) sys.model("tf", num, den, Ts);
[num, den] = tfdata(sys) int nnum, nden;
nnum = sys.size('n');
nden = sys.size('d');
array double num[nnum], den[nden];
sys.tfdata(num, den);
[A,B,C,D] = tf2ss(num,den) sys.model("tf", num, den);
sys.ssdata(A,B,C,D);
[z, p, k] = tf2zp(num,den) sys.model("tf", num, den);
sys.zpkdata(z, p, k);
z = tzero(sys) nz = sys.size('z');
array double complex z[nz];
sys.tzero(z);
[z,gain] = tzero(sys) nz = sys.size('z');
array double complex z[nz];
double gain;
sys.tzero(z, &gain);
z = tzero(A,B,C,D) sys.model("ss", A, B, C, D);
nz = sys.size('z');
array double complex z[nz];
double gain;
sys.tzero(z, &gain);
zgrid sys.zgrid(1);

(NOTE: Only apply to functions pzmap() and rlocus().)
zgrid('new') sys.zgrid(1);
zgrid(z, wn) zgrid(1, z, wn);
zgrid(z, wn, 'new') zgrid(1, z, wn);
pzmap(H);
zgrid
zgrid(1);
sys.pzmap();
zgrid('new');
pzmap(H)
sys.zgrid(1);
sys.pzmap();
pzmap(H);
zgrid(z, wn)
zgrid(1, z, wn);
sys.pzmap();
zgrid(z, wn, 'new');
pzmap(H)
zgrid(1, z, wn);
sys.pzmap();
[A,B,C,D] = zp2ss(z, p, k) sys.model("zpk", z, p, k);
sys.ssdata(A,B,C,D);
[num, den] = zp2tf(z, p, k) sys.model("zpk", z, p, k);
sys.tfdata(num, den);
sys = zpk(z, p, k) sys.model("zpk", z, p, k);
[z,p,k] = zpkdata(sys) int nz, np; double k;
nz = sys.size('z'); np = sys.size('p');
array double complex z[nz], p[np];
sys.zpkdata(z, p, &k);

References:

  • Ch Control System Toolkit User's Guide, Version 1.0, SoftIntegration, Inc., September 2002.
  • MATLAB Control System Toolbox User's Guide, Version 5, The MathWorks, Inc., 2001.
Note: MATLAB is a registered trademark of The MathWorks, Inc.