【发布时间】:2019-08-23 10:45:48
【问题描述】:
我正在尝试将 MATLAB 代码转换为 Python,但遇到了与 Python 的 range 函数相关的错误。
整个代码可以在here 找到,我正在研究范围成像代码。
MATLAB 代码
Ts=(2*(Xc-X0))/c;
Tf=(2*(Xc+X0))/c+Tp;
n=2*ceil((.5*(Tf-Ts))/dt);
t=Ts+(0:n-1)*dt;
dw=pi2/(n*dt);
w=wc+dw*(-n/2:n/2-1);
x=Xc+.5*c*dt*(-n/2:n/2-1);
kx=(2*w)/c;
dt 的值是 2.500000000000000e-09,n 是 4268,Ts 是 1.300000000000000e-05
Python
Ts = (2 * (Xc - X0)) / c
Tf = (2 * (Xc - X0)) / c + Tp
n = 2 * math.ceil((.5 * (Tf - Ts)) / dt)
t = list(Ts + (np.array(range(0, n-1)) * dt)) # tried using the solution in the comments
dw = pi2 / (n * dt)
w = list(wc + dw * (np.array(range(-n/2,n/2-1)))) # getting error here after trying same kind of solution
x = Xc + .5 * c * dt * range(-n/2,n/2-1)
kx=(2 * w) / c
Python 代码抛出以下错误:
TypeError: 'float' 对象不能被解释为整数
【问题讨论】:
-
我不是 matlab 专家,但是在查看了 matlab 范围函数的 matlab 页面后,如果我理解它正确,它会返回某些东西的最小值和最大值?这是你想要达到的目标吗?
-
请发布您的整个代码 sn-p。我想看看你是如何将值传递给
n -
matlab 中的代码为:n = 2*ceil((0.5*(Tf-Ts))/dt); t=Ts+(0:n-1)*dt;
-
在 python 中尝试的代码为:n = 2 * math.ceil((.5 * (Tf - Ts)) / dt) t = Ts + (range(0,(n-1)) *dt)
-
@Svavelsyra 我正在尝试将 matlab 代码转换为 python。所以我尝试使用python的范围函数并在主要问题中出现上述错误
标签: python-3.x matlab