MATLAB Vs. Python Numpy

MATLAB Numpy 注释
a && b a and b 逻辑 AND
1*i, 1*j, 1i, 1j 1j 复数
eps spacing(1) 1 与最近浮点数的距离
ndims(a) ndim(a), a.ndim a 的维数
numel(a) size(a), a.size a 的元素个数
size(a) shape(a), a.shape a 的形状
size(a,n) a.shape[n-1] 第 n 维的大小
a(2,5) a[1,4] 第 2 行第 5 列元素
a(1:3,5:9) a[0:3][:,4:9] 特定行列(1~3 行,5~9 列)
a(1:n-1) a.flatten(1)[0:n-2] 将矩阵变为一个向量,这里 1 表示沿着列进行转化
a(n) a.flatten(1)[n]  
[1,2,3;4,5,6] array([[1.,2.,3.],[4.,5.,6.]]) 2x3 矩阵
a(end) a[-1] 最后一个元素
a' a.conj().T 复共轭转置
a.' a.T 转置
a ./ b a/b 逐元素除法
a * b dot(a,b) 矩阵乘法
a .* b a * b 逐元素乘法
a.^3 a**3 逐元素立方
a^2 dot(a,a) 平方
a^p (p>2) dot(dot(a,a),a)...... 主元素
rand(3,4) random.rand(3,4) 0~1 随机数
sum(sum(abs(x))) sum(abs(x)) 求x矩阵所有元素和
logical(eye(x)) eye(x)>0 取x维对角1矩阵,并转为逻辑值
reshape(x, 1, 1, P) reshape(x, (1, 1, P)) 重塑一个x矩阵为
norm(v) sqrt(dot(v,v)), linalg.norm(v)
inv np.linalg.inv(a) 求矩阵的逆
[V,D]=eig(a) D,V = linalg.eigh(a) 特征值分解
reshape(e, M*N, P) reshape(e, (M*N, P),order='F') 按照列重塑矩阵
     

分数幂

MATLAB:

[1 2; 2 3]^0.05

ans =

   0.9620 + 0.1053i   0.0697 - 0.0651i
   0.0697 - 0.0651i   1.0317 + 0.0402i

Python:

numpy.array([[1,2],[2,3]])**0.05
Out: 
array([[1.        , 1.03526492],
       [1.03526492, 1.05646731]])

 矩阵特征分解

MATLAB

[V,D]=eig([1,2;2,3])

V =

   -0.8507    0.5257
    0.5257    0.8507


D =

   -0.2361         0
         0    4.2361

Python:

[D,V] = numpy.linalg.eigh(a)

[-0.23606798  4.23606798]

[[-0.85065081  0.52573111]
 [ 0.52573111  0.85065081]]
[D,V] = numpy.linalg.eig(a)

[-0.23606798  4.23606798]

[[-0.85065081 -0.52573111]
 [ 0.52573111 -0.85065081]]

 

你可能感兴趣的:(MATLAB,Python,应用程序)