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]]