首先
矩阵点乘与乘的问题:
前者是Matlab代码,后者是python代码:
下面这两组是对应的
a = ones(2,2)
b = ones(2,2)
a.*b
a = np.ones((2,2))
b = np.ones((2,2))
a*b
下面这两组是对应的:
a = ones(2,2)
b = ones(2,2)
a*b
a = np.ones((2,2))
b = np.ones((2,2))
a.dot(b)
也就是说,Matlab里的点乘对应python中的乘,Matlab里的乘对应python中的dot()方法。
Matlab表示一维数组:
m = ones(1,10)
%赋值
m(1,1) = 1.5
m(1,2) = 1.6
……
python表示一维数组
import numpy as np
n = np.ones(10)
n[0] = 1.5
n[1] = 1.6
在Matlib中使用sum:
%对第一列求和
sum(A,1)
在python中使用:
对第一列求和
numpy.sum(A,1)
注意:这里不要用python自带的sum函数,转换时会出问题。
还有一些需要注意的:
1、Matlab下标从1开始 python下标从0开始
在写for循环时,一个从1开始,一个从0
但是在访问下标时,python一定不要变化,但是如果使用循环变量做计算时:记得将循环变量+1作为计算值。
2、Matlab中表示复数:1i 1j python中表示复数1j
如果定义矩阵为复数类型:np.ones((10,10),dtype=complex)
3、Matlab中round()函数 python中使用np.round()
4、Matlab中exp()函数 python中使用np.exp()
5、Matlab中angle()函数 python中使用np.angle()
6、Matlab中ones()、zeros()函数 python中使用np.ones() np.zeros()
但是这里有坑,要注意维度信息,比如:Matlab: ones(1,10) python中只需要np.ones(10)
7、Matlab中a(1:3)采集的是 1 <= && <= 3 而python中: a[1:3] 1<= && < 3
Matlab是闭区间,而python一般是左闭右开区间。
碰到的问题:
python 中复数矩阵的定义:
np.ones((10,10),dtype=complex)
这是我在写代码时遇到的坑!
希望这个也能帮助到你!
加油呀!
打工人!