Matlab语言转python代码注意问题

首先
矩阵点乘与乘的问题:

前者是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)

这是我在写代码时遇到的坑!
希望这个也能帮助到你!
加油呀!
打工人!

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值