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