Comparison of Syntax and Functions between Ch® and MATLAB®
|
|
The brief systax comparison of MATLAB and Ch below highlights
how code written in mathematical software packages such as
MATLAB can be
easily ported to run in Ch. Ch follows conventional mathematics
within the framework of ISO C/C++ standards.
Some operators such as '\' not commonly used in
conventional mathematics are excluded in Ch
to avoid confusion for learners.
Symbols Used in Comparison of Ch and MATLAB.
Symbol | Data Type |
x | scalar or computational array of real or complex type. |
A, Ai, B, Bi | computational arrays of real or complex type. |
Av, Avi, Bv, Bvi | one-dimensional computational arrays
of real or complex type. |
R, Ri | computational arrays of real type. |
Rv, Rvi | one-dimensional computational arrays of real type. |
I, Ii | computational arrays of integral type. |
Iv,Ivi | one-dimensional computational arrays of integral type. |
C, Ci | arrays of char type. |
Z, Zi | computational arrays of complex type. |
Zv, Zvi | one-dimensional computational arrays of complex type. |
s | scalar of real or complex type. |
z | scalar complex type. |
r | scalar real type. |
f | scalar floating-point type. |
i | scalar integral type. |
p | pointer type. |
str | a string. |
Comparisons of metanumbers in MATLAB and Ch
MATLAB | Ch |
-0, +0, Inf, -Inf, NaN
|
-0.0, +0.0, Inf, -Inf, NaN, ComplexInf, ComplexNaN
|
Comparisons of Operators in MATLAB and Ch.
Operators | MATLAB | Ch |
~ | ~A | !A |
| ~s | !s |
+ | +A | +A |
| +s | +s |
- | -A | -A |
| -s | -s |
> | A > B | A > B |
| A > s | A > r |
| s > A | s > A |
>= | A >= B | A >= B |
| A >= s | A >= r |
| s >= A | r >= A |
== | A == B | A == B |
| A == s | A == s |
| s == A | s == A |
<= | A <= B | A <= B |
| A <= s | A <= r |
| s <= A | r <= A |
< | A < B | A < B |
| A < s | A < r |
| s < A | r < A |
~= | A ~= B | A != B |
| A ~= s | A != s |
| s ~= A | s != A |
| | A | B | A || B |
| A | s | A || r |
| s | A | r || A |
& | A & B | A && B |
| A & s | A && s |
| s & A | s && A |
+ | A+B | A+B |
| A+s | A+s |
| s+A | s+A |
| A = A+B | A = A+B |
| A = A+B | A += B |
- | A-B | A-B |
| A-s | A-s |
| s-A | s-A |
| A = A-B | A = A-B |
| A = A-B | A -= B |
* | A*B | A*B |
| A*s | A*s |
| s*A | s*A |
| A = A*B | A = A*B |
| A = A*B | A *= B |
/ | A = A1/B1 | A=A1*inverse(B1) |
| A/s | A/s |
| A = A/s | A = A/s |
| A = A/s | A /= s |
^ | i1^i2 | pow(i1,i2) |
| s1^s2 | pow(s1,s2) |
| I^i | pow(I,i) |
| A^i | pow(A,i) |
\ | A=A1\B1 | A=inverse(A1)*B1 |
\ | Av=A\Bv' | linsolve(Av,A,Bv) |
| | Av=inverse(A)*Bv |
| | llsqsolve(Av,A,Bv) |
' | A' | transpose(A) |
' | Z' | transpose(conj(Z)) |
.* | A .* B | A .* B |
./ | A ./ B | A ./ B |
./ | s ./ A | s ./ A |
.^ | A.^B | pow(A, B) |
.^ | A.^s | pow(A, (array double [n])s) |
.^ | s.^A | pow((array double [n])s, A) |
.\ | A.\B | (not valid) |
Column | m(:,j) | shape(m,0) |
Row | m(i,:) | shape(m,1) |
List Variables | whos | showvar |
Comparisons of Functions in MATLAB and Ch
Functions | MATLAB | Ch |
abs | r=abs(s) | r=abs(s) |
| r=abs(A) | r=abs(A) |
| Iv=abs('str') | array int Iv[strlen("str")+1]={'s','t','r'} |
addpath | addpath('/new/dir') | _path=stradd("/new/dir;", _path) |
|
addpath('/new/dir', '/dir2', begin) |
_path=stradd(_path, "/new/dir;/dir;") |
|
addpath('/new/dir', '/dir2', begin) |
_path=stradd(_path, "/new/dir;", "/dir;") |
acos | x=acos(x) | x=acos(x) |
acosh | x=acosh(x) | x=acosh(x) |
all | i=all(A) | i=sum(!A=0)==0 |
angle | r=angle(z) | r=carg(z) |
any | i=any(A) | i=sum(A!=0)!=0 |
asin | x=asin(x) | x=asin(x) |
asinh | x=asinh(x) | x=asinh(x) |
atan | x=atan(x) | x=atan(x) |
atan2 | r=atan2(r1,r2) | r=atan2(r1,r2) |
atanh | x=atanh(x) | x=atanh(x) |
balance | [A, B] = balance(A1) | balance(A1, A, B) |
base2dec | i=base2dec('str',i2) | i=strtol("str", NULL, i2) |
blanks | str=blank(n) | " " |
break | break | break |
ceil | x=ceil(x) | s=ceil(s) |
choly | A = chol(A1) | choldecomp(A1, A) |
clear | clear name | remvar name |
| clear name | #pragma remvar(name) |
compan | A=compan(Av) | R=companionmatrix(Rv) |
| | Z=ccompanionmatrix(Zv) |
cond | r=cond(A) | r=condnum(A) |
condest | r=condest(A) | r=condnum(A) |
conj | x=conj(x) | x=conj(x) |
conv | Av = conv(Av1, Av2) | conv(Av, Av1, Av2) |
conv2 | A = conv2(A1, A2) | conv2(A, A1, A2) |
corr2 | r = corr2(R1, R2) | r = correlation2(R1, R2) |
corrcoef | R = corrcoef(R1) | corrcoef(R, R1) |
cos | x=cos(x) | x=cos(x) |
cosh | x=cosh(x) | x=cosh(x) |
cov | R = cov(R1) | covariance(R, R1) |
cross | Rv=cross(Rv1,Rv2) | Rv=cross(Rv1,Rv2) |
cumprod | A = cumprod(A1') | cumprod(A, A1) |
| A = cumprod(A1) | cumprod(A, trasnpose(A1)) |
| Av =cumprod(Av1) | cumprod(Av, Av1) |
cumsum | A = cumsum(A1') | cumsum(A, A1) |
| A = cumsum(A1) | cumsum(A, trasnpose(A1)) |
| Av =cumsum(Av1) | cumsum(Av, Av1) |
dec2bin | i=dec2bin(i2) | printf(%b", i2) |
| | printf(%10b", i2) |
dec2hex | str=dec2hex(x) | sprintf(str,"%x", r) |
deconv | A=deconv(A1,B1) | deconv(A,A1,B1) |
| [A, B]=deconv(A1,B1) | deconv(A,A1,B1,B) |
deblank() | deblank('str') | (not valid) |
det | s=det(A) | r=determinant(A) |
| | z=cdeterminant(Z) |
diag | Av=diag(A) | Rv=diagonal(R) |
| | Zv=diagonal(Z) |
| A=dia(Av) | R=diagonalmatrix(Rv) |
| | Z=cdiagonalmatrix(Zv) |
diff | A=diff(A) | Rv=difference(Rv) |
| | r=derivative(func,r) |
| | R=derivatives(func,R) |
dot | x=dot(Av1,Av2) | r=dot(Rv1,Rv2) |
eig | Av=eig(A1) | eigen(A1, Av, NULL) |
| [Av, B]=eig(A1) | eigen(A1, Av, B) |
| [Av, B]=eig(A1,'nobalance') | eigen(A1, Av, B, "nobalance") |
eps | eps | #include <float.h> |
| | FLT_EPSILON, DBL_EPSILON |
eval | eval('cmd') | system("cmd") |
| eval('expr') | streval("expr") |
| eval(try,catch) | |
eye | R=eye(i) | R=identitymatrix(i) |
exp | x=exp(x) | x=exp(x) |
expm | A = expm(A1) | expm(A,A1) |
fclose | fclose | see fclose() |
feval | feval('fun') | streval("fun") |
feof | feof | see feof() |
ferror | ferror | see perror() and other I/O functions |
fft | Av = fft(Av1) | fft(Av, Av1) |
| Av = fft(Av1, i) | A = fft(A1, i) |
fft2 | A=fft2(A1) | fft(A, A1) |
| A = fft(A1, i1, i2) | Iv[0]=i1, Iv[1] =i2, A = fft(A1, Iv) |
fftn | A=fftn(A1) | fft(A, A1) /* 3D only */ |
| A = fftn(A1, i) | Iv[0]=Iv[1]=Iv[2]=i, fft(A,A1,Iv) /* 3D only */ |
fgetl | str = fgetl(fid) | i=strlen(str) |
| | getline(fid, str, i) |
fgets | fgets | see fgets() |
fix | i=fix(r) | i=r |
filter | Av = filter(Bv1, Bv2, Av1) | filter(Bv1, Bv2, Av1, Av) |
filter2 | A = filter2(A1, B1) | filter2(A, A1, B1) |
finite | i=finite(s) | i=isfinite(s) |
| I=finite(A) | fevalarray(I,isfinite,R); |
find() | i=find(x) | |
| [r,c]=find(x) | |
| I = find(A) | i=findvalue(I, A) /* i is # of values found */ |
findstr() | i=findstr('str1', 'str2') | p=strstr(str1, str2) |
fliplr | A = fliplr(A1) | fliplr(A, A1) |
flipud | A = flipud(A1) | flipud(A, A1) |
floor | floor(x) | floor(x) |
flops | flops | (Not valid) |
fmin | r = fmin('fun', r1, r2) | fminimum(&r3, &r, fun, r1, r2) |
fmins | Rv = fmins('fun', Rv1) | fminimums(&r3, Rv, fun, Rv1) |
fplot | fplot('fun', [r1 r2]) | fplotxy(fun,r1,r2) |
| | fplotxyz() |
| | CPlot:memberFunctions() |
fprintf | fprintf() | see fprintf() |
fread | fread() | see fread() |
frewind | frewind() | see frewind() |
fscanf | fscanf() | see fscanf() |
fseek | fseek() | see fseek() |
ftell | ftell() | see ftell() |
funm | R = funm(R1,'fun') | funm(R, fun, R1) |
| Z = funm(Z,'fun') | cfunm(Z, /* complex */ cfun, Z1) |
fwrite | fwrite() | see fwrite() |
fsolve | R =fsolve('fun', Ri) | fsolve(R, fun, Ri) |
fzero | r = fzero('fun', r1) | fzero(&r, fun, r1) |
gallery | A=gallery(name,arg1) | A=specialmatrix(Name,arg1) |
| A=gallery(name,arg1,agr2) | A=specialmatrix(Name,arg1,arg2) |
| A=gallery(name,arg1,agr2,arg3) | A=specialmatrix(Name,arg1,arg2,arg3) |
| A=gallery('caychy',Av1) | specialmatrix("Cauchy",Av1) |
| A=gallery('caychy',Av1,Av2) | specialmatrix("Cauchy",Av1,Av2) |
| A=gallery('chebvand',Av1) | specialmatrix("ChebyshevVandemonde",Av1) |
| A=gallery('chebvand',i,Av1) | specialmatrix("ChebyshevVandemonde",Av1,i) |
| A=gallery('chow',i) | specialmatrix("Chow",i) |
| A=gallery('chow',i,r1) | specialmatrix("Chow",i,r1) |
| A=gallery('chow',i,r1,r2) | specialmatrix("Chow",i,r1,r2) |
| A=gallery('circul',Av1) | specialmatrix("Circul",Av1) |
| A=gallery('clement',i1,i2) | specialmatrix("Clement",i1,i2) |
| | specialmatrix("DenavitHartenberg",r1,r2,r3,r4) |
| | specialmatrix("DenavitHartenberg2",r1,r2,r3,r4) |
| A=gallery('dramadah',i1) | specialmatrix("Dramadah",i1) |
| A=gallery('dramadah',i1,i2) | specialmatrix("Dramadah",i1,i2) |
| A=gallery('fiedler',Av1) | specialmatrix("Fiedler",Av1) |
| A=gallery('frank',i1) | specialmatrix("Frank",i1) |
| A=gallery('frank',i1,i2) | specialmatrix("Frank",i1,i2) |
| A=gallery('gearmat',i1) | specialmatrix("Gear",i1) |
| AV=gallery('house',Av1) | householdermatrix(Av1,Av) |
| [AV,r]=gallery('house',Av1) | householdermatrix(Av1,Av,r) |
| A=gallery('wilk',i1) | specialmatrix("Wilkinson",i1) |
gcd() | I = gcd(I1, I2) | gcd(I1, I2, I) |
| [I,I3,I4]=gcd(I1,I2) | gcd(I1, I2, I, I3, I4) |
hadamard | A=hadamard(i1) | specialmatrix("Hadamard",i1) |
hankel | A=hankel(Av1) | specialmatrix("Hankel",Av1) |
| A=hankel(Av1,Av1) | specialmatrix("Hankel",Av1,Av2) |
hex2dec | i=hex2dec('str') | i=strtol("str", NULL, 16) |
hex2num() | r=hex2num('str') | |
hess | [B, A] = hess(A1) | hessdecomp(A1, A, B) |
hilb() | A=hilb(i1) | specialmatrix("Hilbert",i1) |
hist | hist() | histogram() |
i | i | #include <complex.h> |
| | I |
ifft | Av=ifft(Av1) | ifft(Av, Av1) |
| Av=ifft(Av1, i) | ifft(A, A1, i) |
ifft2 | A=ifft2(A1) | ifft(A,A1) |
| A = ifft(A1, i1, i2) | Iv[0]=i1, Iv[2] =i2, ifft2(A, A1, Iv) |
ifftn | A=ifftn(A1) | ifft(A, A1) /* 3D only */ |
| A = iftn(A1, i) | Iv[0]=Iv[1]=Iv[2]=i, ifft(A, A1,Iv) |
imag | r=imag(s) | r=imag(s) |
| R=imag(A) | R=imag(A) |
inf | inf | Inf |
input | s=input(str) | r=getnum(str,r) |
int2str | str=int2str(i) | sprintf(str,"%s", i) |
interp1 | Ri=interp1(R1, R2, Ri1) | interp1(Ri, Ri1, R1, R2, "linear") |
| Ri=interp1(R1, R2, Ri1,'linear') | interp1(Ri, Ri1, R1, R2, "linear") |
| Ri=interp1(R1, R2, Ri1,'spline') | interp1(Ri, Ri1, R1, R2, "spline") |
interp2 | Ri=interp2(R1, R2, R3, Ri1, Ri2) | interp2(Ri, Ri1, Ri2, R1, R2, R3, "linear") |
| Ri=interp2(R1, R2, R3, Ri1, Ri2, 'linear') | interp2(Ri, Ri1, Ri2, R1, R2, R3, "linear") |
| Ri = interp2(R1, R2, R3, Ri1, Ri2, 'spline') | interp2(Ri, Ri1, Ri2, R1, R2, R3, "spliine") |
inv | A=inv(A) | R=inverse(R) |
| | Z=cinverse(Z) |
invhilb | A=invhilb(i1) | specialmatrix("InverseHilbert",i1) |
isempty | i=isempty(A) | (not valid) |
isglobal | i=isglobal(x) | #include <chshell.h> |
| | isvar("x")==CH_SYSTEMVAR |
ishold | i=ishold | (not valid) |
isieee | i=isieee | (not valid) |
isinf | i=isinf(s) | i=isinf(s) |
| I=isinf(A) | fevalarray(I,isinf,R); |
isletter | i=isletter(s) | i=isalpha(s) |
| I=isletter(A) | fevalarray(I,isalpha,R); |
isnan | i=isnan(s) | i=isnan(s) |
| I=isnan(A) | fevalarray(I,isnan,R); |
isreal | i=isreal(s) | i=elementtype(x) != elementtype(complex) && |
| | elementtype(x) != elementtype(double complex) |
isspace | i=isspace(s) | i=isspace(s) |
| I=isspace(A) | fevalarray(I,isspace,R); |
issparse | i=issparse(x) | |
isstr | i=isstr(x) | i=elementtype(x)==elementtype(string_t) |
isstudent | i=isstudent | i=isstudent() |
isunix | i=isunix | #ifndef _WIN32_ |
isvms | i=isvms | (not valid) |
invhilb() | | |
j | j | #include <complex.h> |
| | I |
lasterr | lasterr('') | see perror(), strerror() |
lcm() | I = lcm(I1,I2) | lcm(I,I1,I2) |
length | i=length(A) | i=max(shape(A)) |
linspace | x=linspace(first,last,n) | linspace(x,first,last) |
loglog | loglog(x, y) | plot.loglog(x,y) |
logspace | x=logspace(first,last,n) | logspace(x,first,last) |
log | x=log(x) | x=log(x) |
log10 | x=log10(x) | x=log10(x) |
log2 | x=log2(x) | x=log(x)/log(2) |
| r=log2(r) | r=log2(r) |
logm | A=logm(A1) | logm(A,A1) |
lower | str=lower('str') | see tolower() |
lscov() | R = lscov(A1,R1,A2) | llsqcovsolve(A1,R1,A2,R) |
| [R,R2]=lscov(A1,R1,A2) | llsqcovsolve(A1,R1,A2,R,R2) |
lu | [R1,R2]=lu(A) | ludecomp(A,R1,R2) |
| [R1,R2,I]=lu(A) | ludecomp(A,R1,R2,I) |
magic() | A=magic(i1) | specialmatrix("Magic",i1) |
max | r=max(s1,s2) | r=max(r1,r2) |
| r=max(Av) | r=max(R) |
| Rv=max(A) | Rv=maxv(R) |
| | Rv=transpose(maxv(transpose(R)) |
min | r=min(s1,s2) | r=min(r1,r2) |
| r=min(Av) | r=min(R) |
| Rv=min(A) | Rv=minv(R) |
| | Rv=transpose(minv(transpose(R)) |
mean | r=mean(R) | r=mean(R) |
| Rv=mean(R) | r=mean(R, Rv) |
| | mean(transpose(R), Rv) |
| z = mean(Z) | z = cmean(Z) |
| Zv = mean(Z) | cmean(Z, Zv) |
median | r=median(R) | r=median(R) |
| Rv=median(R) | r=median(R, Rv) |
| | median(transpose(R), Rv) |
mod | i=mod(i1,i2) | i=i1%i2 |
| r=mod(r1,r2) | r=fmod(r1,r2) |
NaN | NaN | NaN |
nargin | nargin | (not valid) |
nargout | nargout | (not valid) |
nextpow2 | i=nextpow2(r) | i=ceil(log2(r)) |
| i=nextpow2(z) | i=ceil(log2(abs(z))) |
| i=nextpow2(Av) | i=ceil(log2((int)shape(Av))) |
nnls() | R=nnls(A1,R1) | llsqnonnegsolve(A1,R1,R) |
| R=nnls(A1,R1,r) | llsqnonnegsolve(A1,R1,R,r) |
| [R,R2]=nnls(A1,R1) | llsqnonnegsolve(A1,R1,R,0.0,R2) |
| [R,R2]=nnls(A1,R1,r) | llsqnonnegsolve(A1,R1,R,r,R2) |
norm | norm(A) | norm(A,"2") |
| norm(A,1) | norm(A,"1") |
| norm(A,2) | norm(A,"2") |
| norm(A,inf) | norm(A,"i") |
| norm(A,'fro') | norm(A,"f") |
| norm(Av) | norm(Av,"2") |
| norm(Av,inf) | norm(Av,"i") |
| norm(Av,-inf) | norm(Av,"-i") |
| norm(Av,p) | norm(Av,"p") |
num2str | str=num2str(s) | sprintf(str,"%s", s) |
null | A=null(Ai) | nullspace(Ai, A) |
ones | ones(i1) | (array int a[i1][i1])1 |
| ones(i1,i2) | (array int a[i1][i2])1 |
| ones(size(A)) | array int dim[2]=shape(A); |
| | (array int a[dim[0]][dim[1]])1 |
ode23 | [Rv1,Rv2]=ode23('fun',r1,r2,Rv) | odesolve(Rv1,Rv2,fun,r1,r2,Rv) |
ode45 | [Rv1,Rv2]=ode45('fun',r1,r2,Rv) | odesolve(Rv1,Rv2,fun,r1,r2,Rv) |
orth | A = orth(Ai) | orthonormalbase(Ai, A) |
pascal() | A=pascal(i1) | specialmatrix("Pascal",i1) |
| A=pascal(i1,i2) | specialmatrix("Pascal",i1,i2) |
pi | pi | #include <math.h> |
| | M_PI |
pinv | A1=pinv(A) | R1=pinverse(R) |
poly | Av=poly(A) | charpolycoef(Av,A) |
| Bv=poly(Av) | polycoef(Bv,Av) |
polyder | Av = polyder(Bv) | polyder(Av, Bv) |
polyder2 | Av = polyder(Av1, Bv1) | polyder2(Av, NULL, Av1, Bv1) |
| [Av, Bv] = polyder(Av1, Bv1) | polyder2(Av, Bv, Av1, Bv1) |
polyfit | Rv=polyfit(Rv1, Rv2, i) | polyfit(Rv, Rv1, Rv2) |
polyval | r = polyval(Rv1, r1) | r = polyeval(Rv1, r1) |
| r = polyval(Rv1, r1, Rv) | r = polyeval(Rv1, r1, Rv) |
| z = polyval(Av1, s) | z = cpolyeval(Av1, s) |
| z = polyval(Av1, s, Av) | z = cpolyeval(Av1, s, Av) |
| Av = polyval(Bv, Av1) | polyevalarray(Av, Bv, Av1) |
| A=polyval(Av,A1) | polyeval(A,Av,A1) |
polyvalm() | A=polyvalm(Av,A1) | polyevalm(A,Av,A1) |
plot | plot(Rv1,Rv2) | plotxy(Rv1,Rv2) |
| | plotxyf(file) |
| | CPlot:memberFunctions() |
plot3 | plot3(Rv1,Rv2,Rv3) | plotxyz(Rv1,Rv2,Rv3) |
| | plotxyzf(file) |
| | CPlot:memberFunctions() |
prod | s=prod(A) | r=product(R) |
| | z=cproduct(Z) |
| Av=prod(A) | r=product(R, Rv) |
| Av=prod(A, 1) | r=product(R, Rv) |
| Av=prod(A, 2) | r=product(transpose(R), Rv) |
| | z=cproduct(Z,Zv) |
| | product(transpose(R), Rv) |
| | cproduct(transpose(Z), Zv) |
quad | r=quad('fun',r1,r2) | r=integral1(fun,r1,r2) |
quad8 | r=quad8('fun',r1,r2) | r=integral1(fun,r1,r2) |
qr | [A1, A2] = qr(A) | qrdecomp(A, A1, A2) |
| [A1, A2, A3] = qr(A) | |
| [A1,A2]=qr(A,0) | qrdecomp(A,A1,A2) |
qrdelete | [A1, B1] = qrdelete(A, B, j) | qrdelete(A1, B1, A, B, j) |
qrinsert | [A1, B1] = qrinsert(A, B, j, Av) | qrinsert(A1, B1, A, B, j, Av) |
rank | i = rank(A) | i = rank(A) |
| i = rank(A, r) | i = rank(A) |
real | r=real(s) | r=real(s) |
| R=real(A) | R=real(A) |
realmax | realmax | #include <float.h> |
| | FLT_MAX, DBL_MAX |
realmin | realmin | #include <float.h> |
| | FLT_MIN, DBL_MIN |
rem | r=rem(r1,r2) | r=fmod(r1,r2) |
| | r=remainder(r1,r2)+r2 |
residue | [Av,Bv,Rv]=residue(Rv1,Rv2) | residue(Rv1, Rv2, Av, Bv, Rv) |
round | i=round(r) | i=round(r) |
roots | Av=roots(Bv) | roots(Av,Bv) |
rosser | A=rosser() | specialmatrix("Rosser") |
rot90(A) | A = rot90(A1) | rot90(A,A1) |
| A = rot90(A1,i) | rot90(A,A1,i) |
rand | r=rand() | r=urand() |
randn | R=rand(i1, i2) | urand(R) |
rcond | r = rcond(A) | r = rcondnum(A) |
reshape | reshape(A, m, n) | (array type [m][n])A |
rsf2csf | [A1, B1] = rsf2csf(A, B) | rsf2csf(A1, B1, A, B) |
schur | A1 = schur(A) | schurdecomp(A, A1, NULL) |
| [A1, A2] = schur(A) | schurdecomp(A, A1, A2) |
semilogx | semilogx(x, y) | plot.semilogx(x,y) |
semilogy | semilogy(x, y) | plot.semilogy(x,y) |
sign | i=sign(r) | i=sign(r) |
| z=sign(z) | z=z/abs(z) |
sqrt | x=sqrt(x) | x=sqrt(x) |
sqrtm | A = sqrtm(A1) | sqrtm(A,A1) |
size | Iv=size(A) | Iv=shape(A) |
| [i1,i2]=size(A) | Iv=shape(A); i1=Iv[0]; i2=Iv[1] |
| i=size(A,1) | i = (int)shape(A) |
| i=size(A,2) | Iv=shape(A); i=Iv[1] |
sort | Av=sort(Av1) | sort(Av, Av1) |
| | sort(Av, Av1, "array") |
| A=sort(A1) | sort(A, A1, "column") |
| A=sortrows(A1) | sort(A, A1, "row") |
| [Av, I]=sort(Av1) | sort(Av, Av1, "array", I) |
| | sort(Av, Av1, NULL, I) |
| [A, I]=sort(A1) | sort(A, A1, "column", I) |
| [A, I]=sortrows(A1) | sort(A, A1, "rows", I) |
spline | Ri = spline(R1, R2, Ri1) | interp1(Ri, R1i, R2i, "spline") |
| ri = spline(R1, R2, r) | CSpline::Interp(r) |
| Ri = spline(R1, R2, Ri1) | CSpline::Interpm(Ri1, Ri) |
sprintf | sprintf() | see sprintf() |
sscanf | sscanf() | see sscanf() |
std | r=std(R) | r=std(R) |
| Rv=std(R) | r=std(R, Rv) |
| | std(transpose(R), Rv) |
str2mat | C=str2mat('str1', 'str2', ...) |
str2mat(C, str1, str2) |
str2num | i=str2num('str') | i=atol(str), see strtod() |
strcmp | strcmp('str1','str2') | !strcmp("str1","str2") |
strrep | str = strrep('str1', 'str2', 'str3') |
str=strrep(str1, str2, str3) |
strtok | strtok | see strtok(), strtok_r() |
subplot | subplot() | CPlot::subplot() |
| | CPlot::getSubplot() |
sum | r=sum(A) | r=sum(R) |
| | z=csum(Z) |
| Av=sum(A) | r=sum(R, Rv) |
| | z=csum(Z,Zv) |
| | sum(transpose(R), Rv) |
| | csum(transpose(Z), Zv) |
svd | R = svd(A) | svd(A, R, NULL, NULL) |
| [A1, R, A2] = svd(A)) | svd(A, R, A1, A2) |
tan | x=tan(x) | x=tan(x) |
tanh | x=tanh(x) | x=tanh(x) |
toeplitz | A=toeplitz(Av1) | specialmatrix("Toeplitz",Av1) |
| A=toeplitz(Av1,Av2) | specialmatrix("Toeplitz",Av1,Av2) |
trace | s=trace(A) | r=trace(R) |
| | z=ctrace(Z) |
trapz | r=trapz(Rv1,Rv2) | see integral1() |
tril | A1=tril(A) | A1=triangularmatrix("lower",A) |
| Z1=tril(Z) | Z1=ctriangularmatrix("lower",Z) |
| A1=tril(A,i) | A1=triangularmatrix("lower",A,i) |
| Z1=tril(Z,i) | Z1=ctriangularmatrix("lower",Z,i) |
triu | A1=triu(A) | A1=triangularmatrix("upper",A) |
| Z1=triu(Z) | Z1=ctriangularmatrix("upper",Z) |
| A1=triu(A,i) | A1=triangularmatrix("upper",A,i) |
| Z1=triu(Z,i) | Z1=ctriangularmatrix("upper",Z,i) |
vander | R=vander(Rv) | R=vandermatrix(Rv) |
| A=vander(Av) | specialmatrix("Vandermonde", Av) |
unwrap() | A=unwrap(A1) | unwrap(A,A1) |
| A=unwrap(A1,r) | unwrap(A,A1,r) |
upper | str=upper('str') | see toupper() |
who | who | stackvar |
xcorr | Av = xcorr(Av1, Av2) | correlation(Av, Av1, Av2) |
xor | xor(A,B) | A ^^ B |
| xor(A,s) | A ^^ r |
| xor(s,A) | r ^^ A |
zeros | zeros(i1) | (array int a[i1][i1])0 |
| zeros(i1,i2) | (array int a[i1][i2])0 |
| zeros(size(A)) | array int dim[2]=shape(A); |
| | (array int a[dim[0]][dim[1]])0 |
Control Flow Comparison Between MATLAB and Ch
descriptions | MATLAB | Ch |
for-loop | For n=n1:n2:n3   commands end | for (n=n1; n<=n3; n+=n2) {   commands } |
while-loop | while expr   commands end | while(expr) {   commands } |
if | if expr   commands end | if (expr) {   commands } |
if-else | if expr1   commands1
else   commands2 end | if (expr1) {   commands1 } else{   commands2 } |
if-else if-else | if expr1   commands1
elseif expr2   commands2
else   commands3 end |
if (expr1) {   commands1 } else if(expr2) {   commands2 } else {   commands3 } |
More features:
References:
-
The Ch Language Environment, ---
User's Guide, Version 2.0,
Harry H. Cheng, SoftIntegration, Inc., September 2001.
-
The Ch Language Environment, ---
Reference Guide, Version 2.0,
SoftIntegration, Inc., September 2001.
-
MATLAB Function Reference, Version 6, The MathWorks, Inc., 2001.
MATLAB® is a registered trademark of The MathWorks, Inc.
Motif® is a registered trademark of the Open Group.
OpenGL® is a registered trademark of SGI.
|
|