MATLAB commands in numerical Python (NumPy) 1
Vidar Bronken Gundersen /[Link]
MATLAB commands in numerical Python (NumPy)
Copyright c zooo Vidar Bronken Gundersen
Permission is granted to copy, distribute and/or modify this document as long as the above attribution is kept and the resulting work is distributed under a license identical to this one.
The idea of this document (and the corresponding xml instance) is to provide a quick reference
for switching from matlab
to an open-source environment, such as Python, Scilab, Octave and Gnuplot, or R for numeric processing and data visualisation.
Where Octave and Scilab commands are omitted, expect Matlab compatibility, and similarly where non given use the generic command.
Time-stamp: zoo-ii-ogTio:o:o vidar
1 Help
Desc. matlab/Octave Python R
Browse help interactively doc
Octave: help -i % browse with Info
help() [Link]()
Help on using help help help or doc doc help help()
Help for a function help plot help(plot) or ?plot help(plot) or ?plot
Help for a toolbox/library package help splines or doc splines help(pylab) help(package=splines)
Demonstration examples demo demo()
Example using a function example(plot)
1.1 Searching available documentation
Desc. matlab/Octave Python R
Search help les lookfor plot [Link](plot)
Find objects by partial name apropos(plot)
List available packages help help(); modules [Numeric] library()
Locate functions which plot help(plot) find(plot)
List available methods for a function methods(plot)
1.2 Using interactively
Desc. matlab/Octave Python R
Start session Octave: octave -q ipython -pylab Rgui
Auto completion Octave: TAB or M-? TAB
Run code from le foo(.m) execfile([Link]) or run [Link] source(foo.R)
Command history Octave: history hist -n history()
Save command history diary on [..] diary off savehistory(file=".Rhistory")
End session exit or quit CTRL-D
CTRL-Z # windows
[Link]()
q(save=no)
2 Operators
Desc. matlab/Octave Python R
Help on operator syntax help - help(Syntax)
References: Hankin, Robin. R for Octave users (zooi), available from [Link] (accessed zoo.o.z); Martelli, Alex. Python in a Nutshell (OReilly, zoo);
Oliphant, Travis. Guide to NumPy (Trelgol, zooo); Hunter, John. The Matplotlib Users Guide (zoo), available from [Link] (accessed zoo.o.i); Langtangen, Hans Petter. Python
Scripting for Computational Science (Springer, zoo); Ascher et al.: Numeric Python manual (zooi), available from [Link] (accessed [Link].z); Moler, Cleve. Numerical
Computing with MATLAB (MathWorks, zoo), available from [Link] (accessed [Link]); Eaton, John W. Octave Quick Reference (iggo); Merrit, Ethan. Demo scripts for
gnuplot version 4.0 (zoo), available from [Link] (accessed zoo.o.z); Woo, Alex. Gnuplot Quick Reference (zoo), available from [Link]
(accessed zoo.o.i); Venables & Smith: An Introduction to R (zoo), available from [Link] (accessed zoo.o.z); Short, Tom. R reference card (zoo), available
from [Link] (accessed zoo.o.z).
MATLAB commands in numerical Python (NumPy) 2
Vidar Bronken Gundersen /[Link]
2.1 Arithmetic operators
Desc. matlab/Octave Python R
Assignment; dening a number a=1; b=2; a=1; b=1 a<-1; b<-2
Addition a + b a + b or add(a,b) a + b
Subtraction a - b a - b or subtract(a,b) a - b
Multiplication a * b a * b or multiply(a,b) a * b
Division a / b a / b or divide(a,b) a / b
Power, o
b
a .^ b a ** b
power(a,b)
pow(a,b)
a ^ b
Remainder rem(a,b) a % b
remainder(a,b)
fmod(a,b)
a %% b
Integer division a %/% b
In place operation to save array creation
overhead
Octave: a+=1 a+=b or add(a,b,a)
Factorial, n! factorial(a) factorial(a)
2.2 Relational operators
Desc. matlab/Octave Python R
Equal a == b a == b or equal(a,b) a == b
Less than a < b a < b or less(a,b) a < b
Greater than a > b a > b or greater(a,b) a > b
Less than or equal a <= b a <= b or less_equal(a,b) a <= b
Greater than or equal a >= b a >= b or greater_equal(a,b) a >= b
Not Equal a ~= b a != b or not_equal(a,b) a != b
2.3 Logical operators
Desc. matlab/Octave Python R
Short-circuit logical AND a && b a and b a && b
Short-circuit logical OR a || b a or b a || b
Element-wise logical AND a & b or and(a,b) logical_and(a,b) or a and b a & b
Element-wise logical OR a | b or or(a,b) logical_or(a,b) or a or b a | b
Logical EXCLUSIVE OR xor(a, b) logical_xor(a,b) xor(a, b)
Logical NOT ~a or not(a)
Octave: ~a or !a
logical_not(a) or not a !a
True if any element is nonzero any(a)
True if all elements are nonzero all(a)
2.4 root and logarithm
Desc. matlab/Octave Python R
Square root sqrt(a) [Link](a) sqrt(a)
o
Logarithm, base c (natural) log(a) [Link](a) log(a) ln o = log
e
o
Logarithm, base io log10(a) math.log10(a) log10(a) log
10
o
Logarithm, base z (binary) log2(a) [Link](a, 2) log2(a) log
2
o
Exponential function exp(a) [Link](a) exp(a) c
a
MATLAB commands in numerical Python (NumPy) 3
Vidar Bronken Gundersen /[Link]
2.5 Round o
Desc. matlab/Octave Python R
Round round(a) around(a) or [Link](a) round(a)
Round up ceil(a) ceil(a) ceil(a)
Round down floor(a) floor(a) floor(a)
Round towards zero fix(a) fix(a)
2.6 Mathematical constants
Desc. matlab/Octave Python R
= 3.141592 pi [Link] pi
c = 2.718281 exp(1) math.e or [Link](1) exp(1)
2.6.1 Missing values; IEEE-754 oating point status ags
Desc. matlab/Octave Python R
Not a Number NaN nan
Innity, Inf inf
Innity, + plus_inf
Innity, minus_inf
Plus zero, +0 plus_zero
Minus zero, 0 minus_zero
2.7 Complex numbers
Desc. matlab/Octave Python R
Imaginary unit i z = 1j 1i . =
1
A complex number, 3 + 4. z = 3+4i z = 3+4j or z = complex(3,4) z <- 3+4i
Absolute value (modulus) abs(z) abs(3+4j) abs(3+4i) or Mod(3+4i)
Real part real(z) [Link] Re(3+4i)
Imaginary part imag(z) [Link] Im(3+4i)
Argument arg(z) Arg(3+4i)
Complex conjugate conj(z) [Link](); [Link]() Conj(3+4i)
2.8 Trigonometry
Desc. matlab/Octave Python R
Arctangent, arctan(bo) atan(a,b) atan2(b,a) atan2(b,a)
Hypotenus; Euclidean distance hypot(x,y)
_
i
2
+
2
2.9 Generate random numbers
Desc. matlab/Octave Python R
Uniform distribution rand(1,10) [Link]((10,))
[Link]((10,))
runif(10)
Uniform: Numbers between z and 2+5*rand(1,10) [Link](2,7,(10,)) runif(10, min=2, max=7)
Uniform: o,o array rand(6) [Link](0,1,(6,6)) matrix(runif(36),6)
Normal distribution randn(1,10) random.standard_normal((10,)) rnorm(10)
MATLAB commands in numerical Python (NumPy) 4
Vidar Bronken Gundersen /[Link]
3 Vectors
Desc. matlab/Octave Python R
Row vector, 1 n-matrix a=[2 3 4 5]; a=array([2,3,4,5]) a <- c(2,3,4,5)
Column vector, n1-matrix adash=[2 3 4 5]; array([2,3,4,5])[:,NewAxis]
array([2,3,4,5]).reshape(-1,1)
r_[1:10,c]
adash <- t(c(2,3,4,5))
3.1 Sequences
Desc. matlab/Octave Python R
i,z,, ... ,io 1:10 arange(1,11, dtype=Float)
range(1,11)
seq(10) or 1:10
o.o,i.o,z.o, ... ,g.o 0:9 arange(10.) seq(0,length=10)
i,,,io 1:3:10 arange(1,11,3) seq(1,10,by=3)
io,g,S, ... ,i 10:-1:1 arange(10,0,-1) seq(10,1) or 10:1
io,,,i 10:-3:1 arange(10,0,-3) seq(from=10,to=1,by=-3)
Linearly spaced vector of n= points linspace(1,10,7) linspace(1,10,7) seq(1,10,length=7)
Reverse reverse(a) a[::-1] or rev(a)
Set all values to same scalar value a(:) = 3 [Link](3), a[:] = 3
3.2 Concatenation (vectors)
Desc. matlab/Octave Python R
Concatenate two vectors [a a] concatenate((a,a)) c(a,a)
[1:4 a] concatenate((range(1,5),a), axis=1) c(1:4,a)
3.3 Repeating
Desc. matlab/Octave Python R
i z , i z [a a] concatenate((a,a)) rep(a,times=2)
i i i, z z z, [Link](3) or rep(a,each=3)
i, z z, [Link](a) or rep(a,a)
3.4 Miss those elements out
Desc. matlab/Octave Python R
miss the rst element a(2:end) a[1:] a[-1]
miss the tenth element a([1:9]) a[-10]
miss i,,, ... a[-seq(1,50,3)]
last element a(end) a[-1]
last two elements a(end-1:end) a[-2:]
3.5 Maximum and minimum
Desc. matlab/Octave Python R
pairwise max max(a,b) maximum(a,b) pmax(a,b)
max of all values in two vectors max([a b]) concatenate((a,b)).max() max(a,b)
[v,i] = max(a) v,i = [Link](0),[Link](0) v <- max(a) ; i <- [Link](a)
MATLAB commands in numerical Python (NumPy) 5
Vidar Bronken Gundersen /[Link]
3.6 Vector multiplication
Desc. matlab/Octave Python R
Multiply two vectors a.*a a*a a*a
Vector dot product, u u dot(u,v) dot(u,v)
4 Matrices
Desc. matlab/Octave Python R
Dene a matrix a = [2 3;4 5] a = array([[2,3],[4,5]]) rbind(c(2,3),c(4,5))
array(c(2,3,4,5), dim=c(2,2))
_
2 3
4 5
_
4.1 Concatenation (matrices); rbind and cbind
Desc. matlab/Octave Python R
Bind rows [a ; b] concatenate((a,b), axis=0)
vstack((a,b))
rbind(a,b)
Bind columns [a , b] concatenate((a,b), axis=1)
hstack((a,b))
cbind(a,b)
Bind slices (three-way arrays) concatenate((a,b), axis=2)
dstack((a,b))
Concatenate matrices into one vector [a(:), b(:)] concatenate((a,b), axis=None)
Bind rows (from vectors) [1:4 ; 1:4] concatenate((r_[1:5],r_[1:5])).reshape(2,-1)
vstack((r_[1:5],r_[1:5]))
rbind(1:4,1:4)
Bind columns (from vectors) [1:4 ; 1:4] cbind(1:4,1:4)
4.2 Array creation
Desc. matlab/Octave Python R
o lled array zeros(3,5) zeros((3,5),Float) matrix(0,3,5) or array(0,c(3,5))
_
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
_
o lled array of integers zeros((3,5))
i lled array ones(3,5) ones((3,5),Float) matrix(1,3,5) or array(1,c(3,5))
_
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
_
Any number lled array ones(3,5)*9 matrix(9,3,5) or array(9,c(3,5))
_
9 9 9 9 9
9 9 9 9 9
9 9 9 9 9
_
Identity matrix eye(3) identity(3) diag(1,3)
_
1 0 0
0 1 0
0 0 1
_
Diagonal diag([4 5 6]) diag((4,5,6)) diag(c(4,5,6))
_
4 0 0
0 5 0
0 0 6
_
Magic squares; Lo Shu magic(3)
_
8 1 6
3 5 7
4 9 2
_
Empty array a = empty((3,3))
MATLAB commands in numerical Python (NumPy) 6
Vidar Bronken Gundersen /[Link]
4.3 Reshape and atten matrices
Desc. matlab/Octave Python R
Reshaping (rows rst) reshape(1:6,3,2); arange(1,7).reshape(2,-1)
[Link](2,3)
matrix(1:6,nrow=3,byrow=T)
_
1 2 3
4 5 6
_
Reshaping (columns rst) reshape(1:6,2,3); arange(1,7).reshape(-1,2).transpose() matrix(1:6,nrow=2)
array(1:6,c(2,3))
_
1 3 5
2 4 6
_
Flatten to vector (by rows, like comics) a(:) [Link]() or [Link](t(a))
_
1 2 3 4 5 6
Flatten to vector (by columns) a(:) [Link](1) [Link](a)
_
1 4 2 5 3 6
Flatten upper triangle (by columns) vech(a) a[row(a) <= col(a)]
4.4 Shared data (slicing)
Desc. matlab/Octave Python R
Copy of a b = a b = [Link]() b = a
4.5 Indexing and accessing elements (Python: slicing)
Desc. matlab/Octave Python R
Input is a , array a = [ 11 12 13 14 ...
21 22 23 24 ...
31 32 33 34 ]
a = array([[ 11, 12, 13, 14 ],
[ 21, 22, 23, 24 ],
[ 31, 32, 33, 34 ]])
a <- rbind(c(11, 12, 13, 14),
c(21, 22, 23, 24),
c(31, 32, 33, 34))
_
o11 o12 o13 o14
o21 o22 o23 o24
o31 o32 o33 o34
_
Element z, (row,col) a(2,3) a[1,2] a[2,3] o23
First row a(1,:) a[0,] a[1,]
_
o11 o12 o13 o14
First column a(:,1) a[:,0] a[,1]
_
o11
o21
o31
_
Array as indices a([1 3],[1 4]); [Link]([0,2]).take([0,3], axis=1)
_
o11 o14
o31 o34
_
All, except rst row a(2:end,:) a[1:,] a[-1,]
_
o21 o22 o23 o24
o31 o32 o33 o34
_
Last two rows a(end-1:end,:) a[-2:,]
_
o21 o22 o23 o24
o31 o32 o33 o34
_
Strides: Every other row a(1:2:end,:) a[::2,:]
_
o11 o12 o13 o14
o31 o32 o33 o34
_
Third in last dimension (axis) a[...,2]
All, except row,column (z,) a[-2,-3]
_
o11 o13 o14
o31 o33 o34
_
Remove one column a(:,[1 3 4]) [Link]([0,2,3],axis=1) a[,-2]
_
o11 o13 o14
o21 o23 o24
o31 o33 o34
_
Diagonal [Link](offset=0)
_
o11 o22 o33 o44
MATLAB commands in numerical Python (NumPy) 7
Vidar Bronken Gundersen /[Link]
4.6 Assignment
Desc. matlab/Octave Python R
a(:,1) = 99 a[:,0] = 99 a[,1] <- 99
a(:,1) = [99 98 97] a[:,0] = array([99,98,97]) a[,1] <- c(99,98,97)
Clipping: Replace all elements over go a(a>90) = 90; (a>90).choose(a,90)
[Link](min=None, max=90)
a[a>90] <- 90
Clip upper and lower values [Link](min=2, max=5)
4.7 Transpose and inverse
Desc. matlab/Octave Python R
Transpose a [Link]().transpose() t(a)
Non-conjugate transpose a. or transpose(a) [Link]()
Determinant det(a) [Link](a) or det(a)
Inverse inv(a) [Link](a) or solve(a)
Pseudo-inverse pinv(a) [Link](a) ginv(a)
Norms norm(a) norm(a)
Eigenvalues eig(a) [Link](a)[0] eigen(a)$values
Singular values svd(a) [Link](a) svd(a)$d
Cholesky factorization chol(a) [Link](a)
Eigenvectors [v,l] = eig(a) [Link](a)[1] eigen(a)$vectors
Rank rank(a) rank(a) rank(a)
4.8 Sum
Desc. matlab/Octave Python R
Sum of each column sum(a) [Link](axis=0) apply(a,2,sum)
Sum of each row sum(a) [Link](axis=1) apply(a,1,sum)
Sum of all elements sum(sum(a)) [Link]() sum(a)
Sum along diagonal [Link](offset=0)
Cumulative sum (columns) cumsum(a) [Link](axis=0) apply(a,2,cumsum)
MATLAB commands in numerical Python (NumPy) 8
Vidar Bronken Gundersen /[Link]
4.9 Sorting
Desc. matlab/Octave Python R
Example data a = [ 4 3 2 ; 2 8 6 ; 1 4 7 ] a = array([[4,3,2],[2,8,6],[1,4,7]])
_
4 3 2
2 8 6
1 4 7
_
Flat and sorted sort(a(:)) [Link]().sort() or t(sort(a))
_
1 2 2
3 4 4
6 7 8
_
Sort each column sort(a) [Link](axis=0) or msort(a) apply(a,2,sort)
_
1 3 2
2 4 6
4 8 7
_
Sort each row sort(a) [Link](axis=1) t(apply(a,1,sort))
_
2 3 4
2 6 8
1 4 7
_
Sort rows (by rst row) sortrows(a,1) a[a[:,0].argsort(),]
_
1 4 7
2 8 6
4 3 2
_
Sort, return indices [Link]().argsort() order(a)
Sort each column, return indices [Link](axis=0)
Sort each row, return indices [Link](axis=1)
4.10 Maximum and minimum
Desc. matlab/Octave Python R
max in each column max(a) [Link](0) or amax(a [,axis=0]) apply(a,2,max)
max in each row max(a) [Link](1) or amax(a, axis=1) apply(a,1,max)
max in array max(max(a)) [Link]() or max(a)
return indices, i [v i] = max(a) i <- apply(a,1,[Link])
pairwise max max(b,c) maximum(b,c) pmax(b,c)
cummax(a) apply(a,2,cummax)
max-to-min range [Link](); [Link](0)
4.11 Matrix manipulation
Desc. matlab/Octave Python R
Flip left-right fliplr(a) fliplr(a) or a[:,::-1] a[,4:1]
Flip up-down flipud(a) flipud(a) or a[::-1,] a[3:1,]
Rotate go degrees rot90(a) rot90(a)
Repeat matrix: [ a a a ; a a a ] repmat(a,2,3)
Octave: kron(ones(2,3),a)
kron(ones((2,3)),a) kronecker(matrix(1,2,3),a)
Triangular, upper triu(a) triu(a) a[[Link](a)] <- 0
Triangular, lower tril(a) tril(a) a[[Link](a)] <- 0
4.12 Equivalents to size
Desc. matlab/Octave Python R
Matrix dimensions size(a) [Link] or [Link]() dim(a)
Number of columns size(a,2) or length(a) [Link][1] or size(a, axis=1) ncol(a)
Number of elements length(a(:)) [Link] or size(a[, axis=None]) prod(dim(a))
Number of dimensions ndims(a) [Link]
Number of bytes used in memory [Link] [Link](a)
MATLAB commands in numerical Python (NumPy) 9
Vidar Bronken Gundersen /[Link]
4.13 Matrix- and elementwise- multiplication
Desc. matlab/Octave Python R
Elementwise operations a .* b a * b or multiply(a,b) a * b
_
1 5
9 16
_
Matrix product (dot product) a * b matrixmultiply(a,b) a %*% b
_
7 10
15 22
_
Inner matrix vector multiplication o b
inner(a,b) or
_
5 11
11 25
_
Outer product outer(a,b) or outer(a,b) or a %o% b
_
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16
_
Cross product crossprod(a,b) or t(a) %*% b
_
10 14
14 20
_
Kronecker product kron(a,b) kron(a,b) kronecker(a,b)
_
1 2 2 4
3 4 6 8
3 6 4 8
9 12 12 16
_
Matrix division, bo
1
a / b
Left matrix division, b
1
o
(solve linear equations)
a \ b [Link](a,b) solve(a,b) .i = b
Vector dot product vdot(a,b)
Cross product cross(a,b)
4.14 Find; conditional indexing
Desc. matlab/Octave Python R
Non-zero elements, indices find(a) [Link]().nonzero() which(a != 0)
Non-zero elements, array indices [i j] = find(a) (i,j) = [Link]()
(i,j) = where(a!=0)
which(a != 0, [Link]=T)
Vector of non-zero values [i j v] = find(a) v = [Link]((a!=0).flat)
v = extract(a!=0,a)
ij <- which(a != 0, [Link]=T); v <- a[ij]
Condition, indices find(a>5.5) (a>5.5).nonzero() which(a>5.5)
Return values [Link]((a>5.5).flat) ij <- which(a>5.5, [Link]=T); v <- a[ij]
Zero out elements above . a .* (a>5.5) where(a>5.5,0,a) or a * (a>5.5)
Replace values [Link](2,indices)
5 Multi-way arrays
Desc. matlab/Octave Python R
Dene a -way array a = cat(3, [1 2; 1 2],[3 4; 3 4]); a = array([[[1,2],[1,2]], [[3,4],[3,4]]])
a(1,:,:) a[0,...]
MATLAB commands in numerical Python (NumPy) 10
Vidar Bronken Gundersen /[Link]
6 File input and output
Desc. matlab/Octave Python R
Reading from a le (zd) f = load([Link]) f = fromfile("[Link]")
f = load("[Link]")
f <- [Link]("[Link]")
Reading from a le (zd) f = load([Link]) f = load("[Link]") f <- [Link]("[Link]")
Reading fram a CSV le (zd) x = dlmread([Link], ;) f = load([Link], delimiter=;) f <- [Link](file="[Link]", sep=";")
Writing to a le (zd) save -ascii [Link] f save([Link], f, fmt=%.6f, delimiter=;) write(f,file="[Link]")
Writing to a le (id) [Link](file=[Link], format=%.6f, sep=;)
Reading from a le (id) f = fromfile(file=[Link], sep=;)
7 Plotting
7.1 Basic x-y plots
Desc. matlab/Octave Python R
id line plot plot(a) plot(a) plot(a, type="l")
0 20 40 60 80 100
-4
-3
-2
-1
0
1
2
3
4
zd scatter plot plot(x(:,1),x(:,2),o) plot(x[:,0],x[:,1],o) plot(x[,1],x[,2])
4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
2.0
2.5
3.0
3.5
4.0
4.5
Two graphs in one plot plot(x1,y1, x2,y2) plot(x1,y1,bo, x2,y2,go)
4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
1
2
3
4
5
6
7
Overplotting: Add new plots to current plot(x1,y1)
hold on
plot(x2,y2)
plot(x1,y1,o)
plot(x2,y2,o)
show() # as normal
plot(x1,y1)
matplot(x2,y2,add=T)
subplots subplot(211) subplot(211)
Plotting symbols and color plot(x,y,ro-) plot(x,y,ro-) plot(x,y,type="b",col="red")
MATLAB commands in numerical Python (NumPy) 11
Vidar Bronken Gundersen /[Link]
7.1.1 Axes and titles
Desc. matlab/Octave Python R
Turn on grid lines grid on grid() grid()
i:i aspect ratio axis equal
Octave:
axis(equal)
replot
figure(figsize=(6,6)) plot(c(1:10,10:1), asp=1)
Set axes manually axis([ 0 10 0 5 ]) axis([ 0, 10, 0, 5 ]) plot(x,y, xlim=c(0,10), ylim=c(0,5))
Axis labels and titles title(title)
xlabel(x-axis)
ylabel(y-axis)
plot(1:10, main="title",
xlab="x-axis", ylab="y-axis")
Insert text text(2,25,hello)
7.1.2 Log plots
Desc. matlab/Octave Python R
logarithmic y-axis semilogy(a) semilogy(a) plot(x,y, log="y")
logarithmic x-axis semilogx(a) semilogx(a) plot(x,y, log="x")
logarithmic x and y axes loglog(a) loglog(a) plot(x,y, log="xy")
7.1.3 Filled plots and bar plots
Desc. matlab/Octave Python R
Filled plot fill(t,s,b, t,c,g)
Octave: % fill has a bug?
fill(t,s,b, t,c,g, alpha=0.2) plot(t,s, type="n", xlab="", ylab="")
polygon(t,s, col="lightblue")
polygon(t,c, col="lightgreen")
Stem-and-Leaf plot stem(x[,3])
5 5
6 71
7 033
8 00113345567889
9 0133566677788
10 32674
7.1.4 Functions
Desc. matlab/Octave Python R
Dening functions f = inline(sin(x/3) - cos(x/5)) f <- function(x) sin(x/3) - cos(x/5) }(i) = sin
_
x
3
_
cos
_
x
5
_
Plot a function for given range ezplot(f,[0,40])
fplot(sin(x/3) - cos(x/5),[0,40])
Octave: % no ezplot
x = arrayrange(0,40,.5)
y = sin(x/3) - cos(x/5)
plot(x,y, o)
plot(f, xlim=c(0,40), type=p)
0 10 20 30 40
2.0
1.5
1.0
0.5
0.0
0.5
1.0
x
f (x)
MATLAB commands in numerical Python (NumPy) 12
Vidar Bronken Gundersen /[Link]
7.2 Polar plots
Desc. matlab/Octave Python R
theta = 0:.001:2*pi;
r = sin(2*theta);
theta = arange(0,2*pi,0.001)
r = sin(2*theta)
() = sin(2)
polar(theta, rho) polar(theta, rho)
0
45
90
135
180
225
270
315
7.3 Histogram plots
Desc. matlab/Octave Python R
hist(randn(1000,1)) hist(rnorm(1000))
hist(randn(1000,1), -4:4) hist(rnorm(1000), breaks= -4:4)
hist(rnorm(1000), breaks=c(seq(-5,0,0.25), seq(0.5,5,0.5)), freq=F)
plot(sort(a)) plot(apply(a,1,sort),type="l")
MATLAB commands in numerical Python (NumPy) 13
Vidar Bronken Gundersen /[Link]
7.4 3d data
7.4.1 Contour and image plots
Desc. matlab/Octave Python R
Contour plot contour(z) levels, colls = contour(Z, V,
origin=lower, extent=(-3,3,-3,3))
clabel(colls, levels, inline=1,
fmt=%1.1f, fontsize=10)
contour(z)
-2 -1 0 1 2
-2
-1
0
1
2
-0.6
-0.4
-0.2
-0.2
0.0
0.2
0.4 0.6 0.6
0.8
0.8 1.0
Filled contour plot contourf(z); colormap(gray) contourf(Z, V,
cmap=[Link],
origin=lower,
extent=(-3,3,-3,3))
[Link](x,y,z,
nlevels=7, color=[Link])
-2 -1 0 1 2
-2
-1
0
1
2
Plot image data image(z)
colormap(gray)
im = imshow(Z,
interpolation=bilinear,
origin=lower,
extent=(-3,3,-3,3))
image(z, col=[Link](256))
Image with contours # imshow() and contour() as above
-2 -1 0 1 2
-2
-1
0
1
2
-0.6
-0.4
-0.2
-0.2
0.0
0.2
0.4 0.6 0.6
0.8
0.8 1.0
Direction eld vectors quiver() quiver()
MATLAB commands in numerical Python (NumPy) 14
Vidar Bronken Gundersen /[Link]
7.4.2 Perspective plots of surfaces over the x-y plane
Desc. matlab/Octave Python R
n=-2:.1:2;
[x,y] = meshgrid(n,n);
z=x.*exp(-x.^2-y.^2);
n=arrayrange(-2,2,.1)
[x,y] = meshgrid(n,n)
z = x*power(math.e,-x**2-y**2)
f <- function(x,y) x*exp(-x^2-y^2)
n <- seq(-2,2, length=40)
z <- outer(n,n,f)
}(i, ) = ic
x
2
y
2
Mesh plot mesh(z) persp(x,y,z,
theta=30, phi=30, expand=0.6,
ticktype=detailed)
x
2
1
0
1
2
y
2
1
0
1
2
z
0.4
0.2
0.0
0.2
0.4
Surface plot surf(x,y,z) or surfl(x,y,z)
Octave: % no surfl()
persp(x,y,z,
theta=30, phi=30, expand=0.6,
col=lightblue, shade=0.75, ltheta=120,
ticktype=detailed)
x
2
1
0
1
2
y
2
1
0
1
2
z
0.4
0.2
0.0
0.2
0.4
7.4.3 Scatter (cloud) plots
Desc. matlab/Octave Python R
d scatter plot plot3(x,y,z,k+) cloud(z~x*y)
0
10
20
30
40
50
60
70
80
90
100
-60
-40
-20
0
20
40
60
80
-80
-60
-40
-20
0
20
40
60
80
[Link]
MATLAB commands in numerical Python (NumPy) 15
Vidar Bronken Gundersen /[Link]
7.5 Save plot to a graphics le
Desc. matlab/Octave Python R
PostScript plot(1:10)
print -depsc2 [Link]
Octave:
gset output "[Link]"
gset terminal postscript eps
plot(1:10)
savefig([Link]) postscript(file="[Link]")
plot(1:10)
[Link]()
PDF savefig([Link]) pdf(file=[Link])
SVG (vector graphics for www) savefig([Link]) devSVG(file=[Link])
PNG (raster graphics) print -dpng [Link] savefig([Link]) png(filename = "Rplot%[Link]"
8 Data analysis
8.1 Set membership operators
Desc. matlab/Octave Python R
Create sets a = [ 1 2 2 5 2 ];
b = [ 2 3 4 ];
a = array([1,2,2,5,2])
b = array([2,3,4])
a = set([1,2,2,5,2])
b = set([2,3,4])
a <- c(1,2,2,5,2)
b <- c(2,3,4)
Set unique unique(a) unique1d(a)
unique(a)
set(a)
unique(a)
_
1 2 5
Set union union(a,b) union1d(a,b)
[Link](b)
union(a,b)
Set intersection intersect(a,b) intersect1d(a)
[Link](b)
intersect(a,b)
Set dierence setdiff(a,b) setdiff1d(a,b)
[Link](b)
setdiff(a,b)
Set exclusion setxor(a,b) setxor1d(a,b)
a.symmetric_difference(b)
setdiff(union(a,b),intersect(a,b))
True for set member ismember(2,a) 2 in a
setmember1d(2,a)
contains(a,2)
[Link](2,a) or 2 %in% a
MATLAB commands in numerical Python (NumPy) 16
Vidar Bronken Gundersen /[Link]
8.2 Statistics
Desc. matlab/Octave Python R
Average mean(a) [Link](axis=0)
mean(a [,axis=0])
apply(a,2,mean)
Median median(a) median(a) or median(a [,axis=0]) apply(a,2,median)
Standard deviation std(a) [Link](axis=0) or std(a [,axis=0]) apply(a,2,sd)
Variance var(a) [Link](axis=0) or var(a) apply(a,2,var)
Correlation coecient corr(x,y) correlate(x,y) or corrcoef(x,y) cor(x,y)
Covariance cov(x,y) cov(x,y) cov(x,y)
8.3 Interpolation and regression
Desc. matlab/Octave Python R
Straight line t z = polyval(polyfit(x,y,1),x)
plot(x,y,o, x,z ,-)
(a,b) = polyfit(x,y,1)
plot(x,y,o, x,a*x+b,-)
z <- lm(y~x)
plot(x,y)
abline(z)
Linear least squares = oi + b a = x\y [Link](x,y) solve(a,b)
Polynomial t polyfit(x,y,3) polyfit(x,y,3)
8.4 Non-linear methods
8.4.1 Polynomials, root nding
Desc. matlab/Octave Python R
Polynomial poly()
Find zeros of polynomial roots([1 -1 -1]) roots() polyroot(c(1,-1,-1)) i
2
i 1 = 0
Find a zero near i = 1 f = inline(1/x - (x-1))
fzero(f,1)
}(i) =
1
x
(i 1)
Solve symbolic equations solve(1/x = x-1)
1
x
= i 1
Evaluate polynomial polyval([1 2 1 2],1:10) polyval(array([1,2,1,2]),arange(1,11))
8.4.2 Dierential equations
Desc. matlab/Octave Python R
Discrete dierence function and approxi-
mate derivative
diff(a) diff(x, n=1, axis=0)
Solve dierential equations
8.5 Fourier analysis
Desc. matlab/Octave Python R
Fast fourier transform fft(a) fft(a) or fft(a)
Inverse fourier transform ifft(a) ifft(a) or fft(a, inverse=TRUE)
Linear convolution convolve(x,y)
9 Symbolic algebra; calculus
Desc. matlab/Octave Python R
Factorization factor()
MATLAB commands in numerical Python (NumPy) 17
Vidar Bronken Gundersen /[Link]
10 Programming
Desc. matlab/Octave Python R
Script le extension .m .py .R
Comment symbol (rest of line) %
Octave: % or #
# #
Import library functions % must be in MATLABPATH
Octave: % must be in LOADPATH
from pylab import * library(RSvgDevice)
Eval string=a=234;
eval(string)
string="a=234"
eval(string)
string <- "a <- 234"
eval(parse(text=string))
10.1 Loops
Desc. matlab/Octave Python R
for-statement for i=1:5; disp(i); end for i in range(1,6): print(i) for(i in 1:5) print(i)
Multiline for statements for i=1:5
disp(i)
disp(i*2)
end
for i in range(1,6):
print(i)
print(i*2)
for(i in 1:5) {
print(i)
print(i*2)
}
10.2 Conditionals
Desc. matlab/Octave Python R
if-statement if 1>0 a=100; end if 1>0: a=100 if (1>0) a <- 100
if-else-statement if 1>0 a=100; else a=0; end
Ternary operator (if?true:false) ifelse(a>0,a,0) o . 0?o : 0
10.3 Debugging
Desc. matlab/Octave Python R
Most recent evaluated expression ans .[Link]
List variables loaded into memory whos or who objects()
Clear variable i from memory clear x or clear [all] rm(x)
Print disp(a) print a print(a)
10.4 Working directory and OS
Desc. matlab/Octave Python R
List les in directory dir or ls [Link](".") [Link]() or dir()
List script les in directory what [Link]("*.py") [Link](pattern="\.r$")
Displays the current working directory pwd [Link]() getwd()
Change working directory cd foo [Link](foo) setwd(foo)
Invoke a System Command !notepad
Octave: system("notepad")
[Link](notepad)
[Link](notepad)
system("notepad")
This document is still draft quality. Most shown zd plots are made using Matplotlib, and d plots using R and Gnuplot, provided as examples only.
Version numbers and download url for software used: Python z..z, [Link] NumPy o.g., [Link] Matplotlib o.S, [Link] IPython o..i,
[Link] R z.i.i, [Link] Octave z.i.o, [Link] Scilab .o, [Link] Gnuplot .o, [Link]
For referencing: Gundersen, Vidar Bronken. MATLAB commands in numerical Python (Oslo/Norway, zoo), available from: [Link]
Contributions are appreciated: The best way to do this is to edit the xml and submit patches to our tracker or forums.