Python和Matlab对照表

时间:2022-12-21 11:54:45

Matlab vs. Python

Create

Operation Matlab Python
1d array: size (n, ) Not possible A = np.array([1, 2, 3])
Row vector: size (1, n) A = [1 2 3] A = np.array([1, 2, 3]).reshape(1, 3)
Column vector: size (n, 1) A = [1; 2; 3] A = np.array([1, 2, 3]).reshape(3, 1)
Integers from j to n with step size k A = j:k:n A = np.arange(j, n+1, k)
Create a matrix A = [1 2; 3 4] A = np.array([[1, 2], [3, 4]])
Uniform random numbers A = rand(2, 2) A = np.random.rand(2, 2)
random int randperm(5) shuffle(range(5));
np.random.permutation(5)

Manipulating Vectors and Matrices

Operation Matlab Python
Transpose A.’ A.T
Complex conjugate transpose (Adjoint) A’ A.conj()
Reshape A = reshape(1:10, 5, 2) A = A.reshape(5, 2)
Convert matrix to vector A( : ) A = A.flatten()
Repeat matrix repmat(A, 3, 4) np.tile(A, (4, 3))
Preallocating/Similar x = rand(10);
y = zeros(size(x, 1), size(x, 2))
x = np.random.rand(3, 3);
y = np.empty_like(x)
# new dimsy = np.empty((2, 3))
Cat string A=[‘str1’,‘str2’]; A=‘str1’+‘str2’
Split B=split(A,‘-’) B=A.split(‘-’)
concatenate C=[A,B];
C=cat(2,A,B);
C=[A;B]
C=np.append(A,B,axis=1) # 只可以拼接两个; C=np.concatenate((A,B),aixs=1) # 可以拼接多个; C=np.hstack((A,B)) (适用于三个以上, 横向拼接); C=np.vstack((A,B)) (竖向拼接);
swap axis permute(A,[2,1,3]) transpose(A,[2,1,3])
Seed setting rng(5) np.random.seed(5)

Accessing Vector/Matrix

Operation Matlab Python
Get dimensions of matrix [nrow ncol] = size(A) nrow, ncol = np.shape(A)
Step slicing A(1:2:6) A[1:7:2]
Shape/Size size(A,1) np.size(A,0), A.size # 不加维度是所有元素个数
np.shape(A)[0], A.shape[0] # shape返回的是一个tuple
Select A(A>0)=[]; A[A>0]=[];
index A(2) A[2]

Mathematical Operations

Operation Matlab Python
Matrix multiplication A * B A @ B
Element-wise multiplication A .* B A * B
Matrix to a power A.^2 A**2
Inverse inv(A) A^(-1) np.linalg.inv(A)
min of each column min(A, [], 1) np.amin(A, 0)
min of entire matrix min(A( : )) np.amin(A)
argmax vec2ind(A) argmax(A,axis=0)
Memebr ismember(A,B) np.isin(A,B)
Count tabulate(A) from collections import Counter
Counter(A)

Programming

Operation Matlab Python
Comment block %{ Comment block %} # Block # comment # following PEP8
Function: anonymous f = @(x) x^2 f = lambda x: x**2
logical expression if a == 1 or b == 3: if a == 1
Output omitting ~ __

System

Operation Matlab Python
Clear console command clc clear
Clear var clear name1, name2 del name1, name2
clear all clear reset

Matlab与python的计数方向不同

  • matlab是按竖向计算, python是横向
>> A=[1,2,3;4,5,6;7,8,9]
A =

     1     2     3
     4     5     6
     7     8     9

>> reshape(A,[1,9])

ans =

     1     4     7     2     5     8     3     6     9
In [91]: A=np.array([[1,2,3],[4,5,6],[7,8,9]]) #注意matlab初始化的不同

In [92]: np.reshape(A,[1,9])

Out[92]: array([[1, 2, 3, 4, 5, 6, 7, 8, 9]])