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矩陣爲1 \times 1 \times P
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]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章