0% found this document useful (0 votes)
7 views13 pages

MATLAB Python Julia Cheatsheet

The document indicates that the training data is current only up to October 2023. It suggests that any information or developments occurring after this date may not be included. This limitation is important for understanding the context and relevance of the information provided.

Uploaded by

thanika
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views13 pages

MATLAB Python Julia Cheatsheet

The document indicates that the training data is current only up to October 2023. It suggests that any information or developments occurring after this date may not be included. This limitation is important for understanding the context and relevance of the information provided.

Uploaded by

thanika
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

(https://quante

Cheatsheets(/) Numerical (index.html) Python (python-cheatsheet.html)

by QuantEcon Julia (julia-cheatsheet.html) Statistics (stats-cheatsheet.html)

(https://github.com/QuantEcon/QuantEcon.cheatsheet)

MATLAB–Python–Julia cheatsheet¶

Dependencies and Setup


Creating Vectors
Creating Matrices
Manipulating Vectors and Matrices
Accessing Vector/Matrix Elements
Mathematical Operations
Sum / max / min
Programming

Dependencies and Setup¶

In the Python code we assume that you have already run import numpy as np

In the Julia, we assume you are using v1.0.2 or later with Compat v1.3.0 or later and have run
using LinearAlgebra, Statistics, Compat

Creating Vectors¶

MATLAB PYTHON JULIA

/
MATLAB PYTHON JULIA

Row vector: size (1, n)

A = [1 2 3] A = np.array([1, 2, A = [1 2 3]
3]).reshape(1, 3)

Column vector: size (n, 1)

A = [1; 2; 3] A = np.array([1, 2, A = [1 2 3]'


3]).reshape(3, 1)

1d array: size (n, )

Not possible A = np.array([1, 2, 3]) A = [1; 2; 3]

or

A = [1, 2, 3]

Integers from j to n with step size k

A = j:k:n A = np.arange(j, n+1, k) A = j:k:n

Linearly spaced vector of k points

A = linspace(1, 5, k) A = np.linspace(1, 5, k) A = range(1, 5,


length = k)

Creating Matrices¶

MATLAB PYTHON JULIA

Create a matrix

A = [1 2; 3 4] A = np.array([[1, 2], [3, A = [1 2; 3 4]


4]])
/
MATLAB PYTHON JULIA

2 x 2 matrix of zeros

A = zeros(2, 2) A = np.zeros((2, 2)) A = zeros(2, 2)

2 x 2 matrix of ones

A = ones(2, 2) A = np.ones((2, 2)) A = ones(2, 2)

2 x 2 identity matrix

A = eye(2, 2) A = np.eye(2) A = I # will adopt


# 2x2 dims if demanded by
# neighboring matrices

Diagonal matrix

A = diag([1 2 3]) A = np.diag([1, 2, 3]) A = Diagonal([1, 2,


3])

Uniform random numbers

A = rand(2, 2) A = np.random.rand(2, 2) A = rand(2, 2)

Normal random numbers

A = randn(2, 2) A = np.random.randn(2, 2) A = randn(2, 2)

/
MATLAB PYTHON JULIA

Sparse Matrices

A = sparse(2, 2) from scipy.sparse import using SparseArrays


A(1, 2) = 4 coo_matrix A = spzeros(2, 2)
A(2, 2) = 1 A[1, 2] = 4
A = coo_matrix(([4, 1], A[2, 2] = 1
([0, 1],
[1, 1])),
shape=(2,
2))

Tridiagonal Matrices

A = [1 2 3 NaN; import sp.sparse as sp x = [1, 2, 3]


4 5 6 7; diagonals = [[4, 5, 6, 7], y = [4, 5, 6, 7]
NaN 8 9 0] [1, 2, 3], [8, 9, 10]] z = [8, 9, 10]
spdiags(A',[-1 0 1], 4, 4) sp.diags(diagonals, [0, -1, Tridiagonal(x, y, z)
2]).toarray()

Manipulating Vectors and Matrices¶

MATLAB PYTHON JULIA

Transpose

A.' A.T transpose(A)

Complex conjugate transpose (Adjoint)

A' A.conj() A'

/
MATLAB PYTHON JULIA

Concatenate horizontally

A = [[1 2] [1 2]] B = np.array([1, 2]) A = [[1 2] [1 2]]


A = np.hstack((B, B))
or or

A = horzcat([1 2], [1 2]) A = hcat([1 2], [1 2])

Concatenate vertically

A = [[1 2]; [1 2]] B = np.array([1, 2]) A = [[1 2]; [1 2]]


A = np.vstack((B, B))
or or

A = vertcat([1 2], [1 2]) A = vcat([1 2], [1 2])

Reshape (to 5 rows, 2 columns)

A = reshape(1:10, 5, 2) A = A.reshape(5, 2) A = reshape(1:10, 5, 2)

Convert matrix to vector

A(:) A = A.flatten() A[:]

Flip left/right

fliplr(A) np.fliplr(A) reverse(A, dims = 2)

Flip up/down

flipud(A) np.flipud(A) reverse(A, dims = 1)

Repeat matrix (3 times in the row dimension, 4 times in the column dimension)

repmat(A, 3, 4) np.tile(A, (4, 3)) repeat(A, 3, 4)

/
MATLAB PYTHON JULIA

Preallocating/Similar

x = rand(10) x = np.random.rand(3, 3) x = rand(3, 3)


y = zeros(size(x, 1), y = np.empty_like(x) y = similar(x)
size(x, 2)) # new dims
# new dims y = similar(x, 2, 2)
N/A similar type y = np.empty((2, 3))

Broadcast a function over a collection/matrix/vector

f = @(x) x.^2 def f(x): f(x) = x^2


g = @(x, y) x + 2 + y.^2 return x**2 g(x, y) = x + 2 + y^2
x = 1:10 def g(x, y): x = 1:10
y = 2:11 return x + 2 + y**2 y = 2:11
f(x) x = np.arange(1, 10, 1) f.(x)
g(x, y) y = np.arange(2, 11, 1) g.(x, y)
f(x)
Functions broadcast directly g(x, y)

Functions broadcast directly

Accessing Vector/Matrix Elements¶

MATLAB PYTHON JULIA

/
MATLAB PYTHON JULIA

Access one element

A(2, 2) A[1, 1] A[2, 2]

Access speci c rows

A(1:4, :) A[0:4, :] A[1:4, :]

Access speci c columns

A(:, 1:4) A[:, 0:4] A[:, 1:4]

Remove a row

A([1 2 4], :) A[[0, 1, 3], :] A[[1, 2, 4], :]

Diagonals of matrix

diag(A) np.diag(A) diag(A)

Get dimensions of matrix

[nrow ncol] = size(A) nrow, ncol = np.shape(A) nrow, ncol = size(A)

Mathematical Operations¶

MATLAB PYTHON JULIA

Dot product

dot(A, B) np.dot(A, B) or A @ B dot(A, B)

A ⋅ B # \cdot<TAB>
/
MATLAB PYTHON JULIA

Matrix multiplication

A * B A @ B A * B

Inplace matrix multiplication

Not possible x = np.array([1, x = [1, 2]


2]).reshape(2, 1) A = [1 2; 3 4]
A = np.array(([1, 2], [3, y = similar(x)
4])) mul!(y, A, x)
y = np.empty_like(x)
np.matmul(A, x, y)

Element-wise multiplication

A .* B A * B A .* B

Matrix to a power

A^2 np.linalg.matrix_power(A, A^2


2)

Matrix to a power, elementwise

A.^2 A**2 A.^2

Inverse

inv(A) np.linalg.inv(A) inv(A)

or or

A^(-1) A^(-1)

Determinant

det(A) np.linalg.det(A) det(A)


/
MATLAB PYTHON JULIA
Eigenvalues and eigenvectors

[vec, val] = eig(A) val, vec = np.linalg.eig(A) val, vec = eigen(A)

Euclidean norm

norm(A) np.linalg.norm(A) norm(A)

Solve linear system Ax = b (when A is square)

A\b np.linalg.solve(A, b) A\b

Solve least squares problem Ax = b (when A is rectangular)

A\b np.linalg.lstsq(A, b) A\b

Sum / max / min¶

MATLAB PYTHON JULIA

/
MATLAB PYTHON JULIA

Sum / max / min of each column

sum(A, 1) sum(A, 0) sum(A, dims = 1)


max(A, [], 1) np.amax(A, 0) maximum(A, dims = 1)
min(A, [], 1) np.amin(A, 0) minimum(A, dims = 1)

Sum / max / min of each row

sum(A, 2) sum(A, 1) sum(A, dims = 2)


max(A, [], 2) np.amax(A, 1) maximum(A, dims = 2)
min(A, [], 2) np.amin(A, 1) minimum(A, dims = 2)

Sum / max / min of entire matrix

sum(A(:)) np.sum(A) sum(A)


max(A(:)) np.amax(A) maximum(A)
min(A(:)) np.amin(A) minimum(A)

Cumulative sum / max / min by row

cumsum(A, 1) np.cumsum(A, 0) cumsum(A, dims = 1)


cummax(A, 1) np.maximum.accumulate(A, 0) accumulate(max, A, dims =
cummin(A, 1) np.minimum.accumulate(A, 0) 1)
accumulate(min, A, dims =
1)

Cumulative sum / max / min by column

cumsum(A, 2) np.cumsum(A, 1) cumsum(A, dims = 2)


cummax(A, 2) np.maximum.accumulate(A, 1) accumulate(max, A, dims =
cummin(A, 2) np.minimum.accumulate(A, 1) 2)
accumulate(min, A, dims =
2)

Programming¶

MATLAB PYTHON JULIA

/
MATLAB PYTHON JULIA
Comment one line

% This is a comment # This is a comment # This is a comment

Comment block

%{ # Block #=
Comment block # comment Comment block
%} # following PEP8 =#

For loop

for i = 1:N for i in range(n): for i in 1:N


% do something # do something # do something
end end

While loop

while i <= N while i <= N: while i <= N


% do something # do something # do something
end end

If

if i <= N if i <= N: if i <= N


% do something # do something # do something
end end

If / else

if i <= N if i <= N: if i <= N


% do something # do something # do something
else else: else
% do something else # so something else # do something else
end end

/
MATLAB PYTHON JULIA

Print text and variable

x = 10 x = 10 x = 10
fprintf('x = %d \n', x) print(f'x = {x}') println("x = $x")

Function: anonymous

f = @(x) x^2 f = lambda x: x**2 f = x -> x^2


# can be rebound

Function

function out = f(x) def f(x): function f(x)


out = x^2 return x**2 return x^2
end end

f(x) = x^2 # not anon!

Tuples

t = {1 2.0 "test"} t = (1, 2.0, "test") t = (1, 2.0, "test")


t{1} t[0] t[1]

Can use cells but watch


performance

Named Tuples/ Anonymous Structures

m.x = 1 from collections import # vanilla


m.y = 2 namedtuple m = (x = 1, y = 2)
m.x
m.x mdef = namedtuple('m', 'x
y') # constructor
m = mdef(1, 2) using Parameters
mdef = @with_kw (x=1, y=2)
m.x m = mdef() # same as above
m = mdef(x = 3)

/
MATLAB PYTHON JULIA

Closures

a = 2.0 a = 2.0 a = 2.0


f = @(x) a + x def f(x): f(x) = a + x
f(1.0) return a + x f(1.0)
f(1.0)

Inplace Modi cation

No consistent or simple syntax to achieve this def f(x):


(https://blogs.mathworks.com/loren/2007/03/22/in- x **=2
return
place-operations-on-data/)
x = np.random.rand(10)
f(x)

function f!(out, x)
out .= x.^2
end
x = rand(10)
y = similar(x)
f!(y, x)

Credits
This cheat sheet was created by Victoria Gregory (https://github.com/vgregory757), Andrij Stachurski (http://drdrij.com/),
Natasha Watkins (https://github.com/natashawatkins) and other collaborators on behalf of QuantEcon
(http://quantecon.org/).

© Copyright 2017 QuantEcon (https://quantecon.org)


Created using Sphinx (http://sphinx.pocoo.org/) 2.1.2. Hosted with AWS (https://aws.amazon.com).

You might also like