将python代码转换为MATLAB

时间:2017-01-03 12:56:56

标签: python matlab

我正在尝试在MATLAB中重写一些python代码,python代码是这样的:

theta = 0:pi/510:2*pi;
phi   = pi/3:2*pi/360:6*pi;
phi_outer = np.linspace(CV.Outer.phi_min, CV.Outer.phi_max, 100)
phi_inner = np.linspace(CV.Inner.phi_max, CV.Inner.phi_min, 100)

x1, y1 = coords(phi_outer, geo, theta, CV.Outer.involute)
t = np.linspace(0,1,100)
x3, y3 = coords(phi_inner, geo, theta, CV.Inner.involute)
x2 = (x3[0]-x1[-1])*t+x1[-1]
y2 = (y3[0]-y1[-1])*t+y1[-1]
x4 = (x1[0]-x3[-1])*t+x3[-1]
y4 = (y1[0]-y3[-1])*t+y3[-1]

我尝试进行MATLAB转换:

theta = 0:pi/510:2*pi;
phi   = pi/3:2*pi/360:6*pi;
phi_outer = linspace(CV.Outer.phi_min, CV.Outer.phi_max, 100);
phi_inner = linspace(CV.Inner.phi_max, CV.Inner.phi_min, 100);
[x1, y1] = coords(phi_outer, geo, theta, CV.Outer.involute);    
[x3, y3] = coords(phi_inner, geo, theta, CV.Inner.involute);
t =  linspace(0,1,100);
x2 = (x3(2)-x1(1)).*t+x1(1);
y2 = (y3(2)-y1(1)).*t+y1(1);
x4 = (x1(2)-x3(1)).*t+x3(1); 
y4 = (y1(2)-y3(1)).*t+y3(1);

X2y2x4y4绝对不正确,但我不明白这里的意思是什么x3 [0] -x1 [-1])......所以在MATLAB中,数组以x3(1)而不是x3(0)开头,并且我知道没有像x1(-1)这样的内容。 有人可以向我解释一下,也许可以向我建议我应该如何重写x2y2x4y4

2 个答案:

答案 0 :(得分:2)

语法x[-1]在Python中为数组中的最后一个元素编制索引。

要在MATLAB中实现此目的,您可以使用end关键字

x(end)

答案 1 :(得分:1)

MATLAB索引从1开始,而不是像{python&#39}那样在0开始。所以它就是

x2 = (x3(1)-x1(end)).*t+x1(end);
y2 = (y3(1)-y1(end)).*t+y1(end);
x4 = (x1(1)-x3(end)).*t+x3(end); 
y4 = (y1(1)-y3(end)).*t+y3(end);

其中每个元素基本上都被索引为MATLABindex = PythonIndex-1,并且正如其他人已经提到的那样,MATLAB选择数组中最后一个元素的方式是end