matlab和python转换_将Matlab转换为Python

本文详细介绍了将MATLAB代码转换为Python时应注意的关键点,包括导入方式、范围定义、大小计算、函数使用等方面的差异。通过示例展示了如何正确地进行转换,确保Python代码能够正确运行并保持与MATLAB代码的相似行为。
摘要由CSDN通过智能技术生成

关于MATLAB与Python,有几点需要注意。在

首先,千万不要做from foo import *。这可能导致碰撞和意外行为。一般来说,import foo,from foo import bar,或{}更好。在

其次,MATLAB中的范围包含结尾,而{}中的范围则不包含结尾,因此像您所做的那样手动排除最后一个元素将使其比预期的更短。另外,对于Python范围,如果起始值是0,则不需要指定起始值。在

第三,在numpy中的size是数组的大小(因此是元素的总数)。在numpy中MATLABsize的等价物是shape。您可以使用numpyshape函数,但通常最好使用shape属性,它类似于附加到数组本身的函数,它是由arr.shape为数组arr获得的。在

类似地,您可以使用min、max和其他类似属性,使用arr.min()、arr.max()等。也没有nargout选项,只需使用arr.argmin()和{}来获得最小和最大索引。在

第四,有一个有用的函数np.zeros_like,它生成一个由所有零组成的数组,其形状和类型与给定的数组相同。还有一个对应的ones_like和full_like(后者用于np.full,这将创建一个由任意值填充的数组)。在

第五,在numpy版本中,trapz排在第一位,x排在第二位,而在{}版本中则相反。您可以通过使用命名参数(例如np.trapz(x=x, y=y))来保持这一点(当您这样做时,顺序并不重要)。这在MATLAB中根本不可能。在

第六,你可以像你在MATLAB中那样对Python进行切片,你不需要使用一个范围。在

第七,在Python和MATLAB中,通常最好避免使用带浮点值的范围。这是由于浮动的固有误差造成的。linspace更好。在

最后,您不需要用[]包围您的范围。它列出了一个数组的列表,这是您不需要的。在

下面是您的MATLAB代码移植到Python,使用上面的技巧。在import numpy as np

import matplotlib.pyplot as plt

dt = 0.01

t = np.linspace(0, 7, 7/0.01, endpoint=False)

# same as, but safer than:

# np.arange(0, 7, 0.01)

# you should do this sort of thing on matlab, too

sig1 = 1

xi_t = np.zeros_like(t)

array_pos_start = abs(t-t[0]).argmin()

array_pos_stop = abs(t-t[-1]/2).argmax()

p_len = np.linspace(0, t[array_pos_stop]-t[array_pos_start], array_pos_stop-array_pos_start)

xi_t[array_pos_start:array_pos_stop] = np.exp(p_len*sig1/2)*np.sqrt(sig1)

norm = np.trapz(y=xi_t.dot(xi_t.conj()), x=t)

xi = xi_t/np.sqrt(norm)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值